8-Bit-Multiplikation

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 734
Registriert seit: Apr 2014
Bewertung: 5
#1
19.06.2019, 17:35

Hallo zusammen!

Heute mal eine 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

 
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
 

Gruß
Uni
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
(Dieser Beitrag wurde zuletzt bearbeitet: 19.06.2019, 17:35 von Unilein.)
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste