|
|
Relazione N. 00 Gruppo 2: Menga - Paoli - Errico
Titolo: Trasformazione di un numero da BCD a decimale.
Obiettivi:
Dato un numero in BCD (di due ci 646b18g fre) scritto in due celle di memoria consecutive, interpretarlo come un numero decimale e scriverlo nella cella successiva a quella delle unitā.
Strumenti:
Editor di testo;
Assemblatore Z80;
Simulatore CPU Z80 su Intel.
Algoritmo:
//variabili
unitā=5
decine=6
risultato=0
begin
A decine
B A
C
Do
while(C>0)
A A+unitā
risultato=A
end
; pseudo-istruzioni per l'inizializzazione della memoria
LIST A
ORG 0h
JP 300h
ORG 300h
; scrittura delle decine nella memoria
LD HL,0040h
LD (HL),06h
INC HL
; scrittura delle unitā nella memoria
LD (HL),05h
LD A,(0040h)
LD B,A
; inizializzazione contatore
LD C,09h
CICLO:
ADD A,B
LD D,A
LD A,C
SUB 1
LD C,A
CP 0
LD A,D
; mentre il contatore č diverso da zero
JP NZ,CICLO
; accumulo con le unitā
LD A,D
LD HL,0041h
ADD A,(HL)
; scrittura risultato nella memoria
LD (0042h),A
HALT
Relazione:
Ci sono alcune differenze tra l'algoritmo scritto in alto linguaggio ed in listato in linguaggio Z80; per esempio un ciclo con etichetta e salto viene strutturato con un'istruzione del tipo DO-WHILE. Le locazioni di memoria usate come indirizzi vengono definite dalle variabili che hanno indirizzi di memoria assegnati in fase di compilazione. Nel linguaggio Z80 ci sono alcuni problemi come, per esempio, il fatto che si debba usare sempre il registro A (accumulatore) per la maggior parte delle operazioni. Inoltre una semplice moltiplicazione č stata fatta con un ciclo con accumulo per somme successive.
Privacy |
Articolo informazione
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2025