Z80 – 8 Bit Multiplikation
Der Z80 hat selbst keine direkten Maschinenbefehle für Multiplikationen an Bord…. Leider! Aber OK, aus der Schule wissen wir, dass eine Multiplikation auch problemlos durch Additionen dargestellt werden kann. Im Folgenden nun eine kleine Routine für 8 Bit-Multiplikationen mit max 16 Bit Ergebnis
Folgende Register werden genutzt:
HL = Ergebnis
D = Multiplikator
E = Multiplikand
1 2 3 4 5 6 7 8 9 10 11 |
Multiply: ; Diese Routine stellt eine Multiplikation von HL=D*E dar ld hl,0 ; HL enthält das Ergebnis und wird zunächst mit 0 initialisiert ld a,d ; Prüfen, ob einer der Faktoren = 0 ist or a ret z ; Ja, das ist der Fall --> Ergebnis = 0 ld b,d ; D in B übertragen (für die Additionsschleife) ld d,h ; D mit dem Inhalt von H versorgen (ist ja schon 0), jetzt enthält DE den zweiten Faktor MulLoop: ; jetzt DE B-mal zu HL addieren add hl,de djnz MulLoop ret |