Upload files to "Verifica/A1"
This commit is contained in:
parent
077195d406
commit
9f1c3e02bc
|
@ -0,0 +1,22 @@
|
||||||
|
; Manuel Vichi 3^AIN
|
||||||
|
; Esercizio A1
|
||||||
|
|
||||||
|
jp 100h ; Salto a 100h per sicurezza
|
||||||
|
org 100h ; Buona norma partire da 100h dato che 200h-210h sono riservati al programma e 0h-0Fh sono solitamente riservati per funzioni specifiche come gli interrupt
|
||||||
|
|
||||||
|
start: ld HL, 200h ; Carica in HL l'indirizzo iniziale
|
||||||
|
ld D, 10h ; Carica in D il numero di celle di memoria da ispezionare
|
||||||
|
ld B, 0h ; Carica in B il contatore di celle equivalenti al valore dato
|
||||||
|
ld IX, 210h ; Carica in IX la cella su cui scrivere
|
||||||
|
ld c, 2Fh ; Carica in C il valore con cui confrontare
|
||||||
|
loop: ld A, (HL) ; Carica il valore da HL in A per il confronto
|
||||||
|
cp c ; Confronta il valore in C con il valore in A
|
||||||
|
jr NZ, SKIP ; Se non sono equivalenti, salta
|
||||||
|
inc B ; Se sono equivalenti, incrementa il contatore B
|
||||||
|
skip: inc HL ; Incrementa la posizione della cella da confrontare
|
||||||
|
dec D ; Decrementa il contatore delle celle
|
||||||
|
jr NZ, LOOP ; Se D non è zero, continua ad ispezionare
|
||||||
|
ld a, b ; Altrimenti, trasporta il valore dal registro B al registro A
|
||||||
|
ld (IX+0), a ; Infine, carica il valore finale dentro la cella di memoria a cui punta IX
|
||||||
|
halt
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
:10000000C30001000000000000000000000000002C
|
||||||
|
:1001000021000216100600DD2110020E2F7EB920FC
|
||||||
|
:0B0110000104231520F778DD7700764E
|
||||||
|
:00000001FF
|
|
@ -0,0 +1,27 @@
|
||||||
|
---------------------------------------------
|
||||||
|
OSHONSOFT Z80 ASSEMBLER LISTING
|
||||||
|
Line Addr Opcode Label Instruction
|
||||||
|
---------------------------------------------
|
||||||
|
0001 0000 ; Manuel Vichi 3^AIN
|
||||||
|
0002 0000 ; Esercizio A1
|
||||||
|
0003 0000
|
||||||
|
0004 0000 C3 00 01 jp 100h ; Salto a 100h per sicurezza
|
||||||
|
0005 0003 org 100h ; Buona norma partire da 100h dato che 200h-210h sono riservati al programma e 0h-0Fh sono solitamente riservati per funzioni specifiche come gli interrupt
|
||||||
|
0006 0100
|
||||||
|
0007 0100 21 00 02 start: ld HL, 200h ; Carica in HL l'indirizzo iniziale
|
||||||
|
0008 0103 16 10 ld D, 10h ; Carica in D il numero di celle di memoria da ispezionare
|
||||||
|
0009 0105 06 00 ld B, 0h ; Carica in B il contatore di celle equivalenti al valore dato
|
||||||
|
0010 0107 DD 21 10 02 ld IX, 210h ; Carica in IX la cella su cui scrivere
|
||||||
|
0011 010B 0E 2F ld c, 2Fh ; Carica in C il valore con cui confrontare
|
||||||
|
0012 010D 7E loop: ld A, (HL) ; Carica il valore da HL in A per il confronto
|
||||||
|
0013 010E B9 cp c ; Confronta il valore in C con il valore in A
|
||||||
|
0014 010F 20 01 jr NZ, SKIP ; Se non sono equivalenti, salta
|
||||||
|
0015 0111 04 inc B ; Se sono equivalenti, incrementa il contatore B
|
||||||
|
0016 0112 23 skip: inc HL ; Incrementa la posizione della cella da confrontare
|
||||||
|
0017 0113 15 dec D ; Decrementa il contatore delle celle
|
||||||
|
0018 0114 20 F7 jr NZ, LOOP ; Se D non è zero, continua ad ispezionare
|
||||||
|
0019 0116 78 ld a, b ; Altrimenti, trasporta il valore dal registro B al registro A
|
||||||
|
0020 0117 DD 77 00 ld (IX+0), a ; Infine, carica il valore finale dentro la cella di memoria a cui punta IX
|
||||||
|
0021 011A 76 halt
|
||||||
|
0022 011B end
|
||||||
|
Number of errors = 0
|
Binary file not shown.
Loading…
Reference in New Issue