Assemblerprogramm zur Umwandlung einer Zahl im Binärcode in eine gebrochene BCD-Zahl |
![]() |
![]() |
Letztmalig dran rumgefummelt: 27.06.07 17:22:01 |
ist wahrscheinlich fehlerfrei und kann unbedenklich verwendet werden |
|
Beispiel 3:
Umwandlung DUAL - BCD
Auch hier wird i. a. der ganze und der gebrochene Teil einer Zahl getrennt
behandelt.
Umwandlung einer ganzen Dualzahl (16 Bit) in eine BCD-Zahl mit 5 Stellen.
Eingangsparameter: Dualzahlen in HL
Ausgangsparameter: BCD-(Dezimal-)Zahl in A und HL
Verfahren:
Schreibt man die Dualzahl mit den Ziffern b15 b14 b13 ... b1 b0 in der Form
D = b15 · 215 + b14 · 214 + b1 · 2 + b0 = (... ((0 · 2 + b15) · 2 + b14) · 2 + ... b1) · 2 + b0
so erkennt man folgenden Algorithmus:
Die Dualziffern müssen mit der höchstwertigen beginnen. Durch Dualwert + Dualwert (HL + HL) kommen die Dualziffern der Reihe nach in das CY-Flag, das nur noch zu 2D addiert zu werden braucht.
Marke | Operation | Operand | Kommentar |
PN | A3 | ||
;DUAL - BCD | |||
;UMWANDLUNG EINER DUALZAHL (INTEGER 16 BIT UNSIGNIERT) | |||
;IN EINE BCD-ZAHL (5 STELLEN) | |||
;DUALZAHL IN HL | |||
;BCD-ZAHL IN AHL | |||
DBI1: | XOR | A | |
MA1: | LD | D,A | |
LD | B,16 | ||
ZYK: | ADD | HL,HL | |
ADC | A | ||
DAA | |||
LD | E,A | ||
LD | A,D | ||
ADC | A | ||
DAA | |||
LD | D,A | ||
RL | C | ||
LD | A,E | ||
DJNZ | ZYK-# | ||
EX | DE,HL | ||
LD | A,C | ||
RET | |||
END |
Beispiel für eine kleine Anweisungstabelle in vollständiger Assembler-Codierung
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Juni 2007 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |