School-Assembly-Z80/Verifica/A1/es1a.asm

22 lines
1.1 KiB
NASM

; 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