| 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 |