Multiplikation von 2 ganzen Dualzahlen ohne Vorzeichen - das Ergebnis ist 32 Bit lang |
![]() |
![]() |
Letztmalig dran rumgefummelt: 22.06.07 08:00:52 |
ist wahrscheinlich fehlerfrei und kann unbedenklich verwendet werden |
|
Beispiel
7: Multiplikation von 2
ganzen Dualzahlen (16 Bit) ohne Vorzeichen. Das Ergebnis ist 32 Bit lang.
Eingangsparameter: Multiplikand in DE Multiplikator in BC
Ausgangsparameter: Produkt in HL und BC
Verfahren:
Schreiben wir den Multiplikator (MR) in dualer Darstellung
MR = b15 · 215 + b14 · 214 + ... b1 · 21 + b0, so erkennen wir aus
MD · MR = MD(b15 · 215 + b14 · 214 + ... b1 · 21
+ b0)
= 215 b15 MD + 214 b14 MD +... 21 b1 MD + b0
MD
dass wir zur Produktbildung MD mit einer Verschiebung 2i zum Teilprodukt addieren müssen, wenn die Stelle bi = 1 ist. Statt einer Verschiebung von MD nach links (× 2i) können wir auch das Produkt nach rechts verschieben. Die Multiplikation läuft damit nach Schema (Bild unten) ab.
Da sich die Abfrage der
letzten Stelle des Multiplikators b0 leichter über das CY-Bit
realisieren lässt, kann man vor Beginn des Verfahrens den Multiplikator so um
eine Stelle nach rechts schieben, dass die letzte Stelle ins CY-Bit kommt.
Dadurch entsteht der als Flussbild (Bild unten) dargestellte Ablauf.
Zur Multiplikation wird der Multiplikator eine Stelle nach rechts geschoben.
Dabei gelangt das niederwertigste Bit in das C-Bit. Ist dieses Bit 1, wird der
Inhalt von DE zu HL addiert, ist es 0, erfolgt keine Addition von DE zu HL.
Anschließend wird der Inhalt von HL mit BC gemeinsam um eine Stelle nach rechts
verschoben. Dabei kommt das nächste Bit des Multiplikators ins CY-Bit. Dieser
Vorgang wird insgesamt 16 mal wiederholt, da der Multiplikator 16 Stellen
umfasst. Weil am Anfang einmal BC nach rechts verschoben werden muss, um die 1.
Stelle ins CY-Bit zu bringen, wird der Zähler auf 17 gestellt.
Marke | Operation | Operand | Kommentar |
PN | B1 | ||
;BASISPROGRAMM EUER MULTIPLIKATION | |||
;16 X 16 BIT-MULTIPLIKATION, UNSIGNIERT, ERGEBNIS 32 BIT | |||
;MULTIPLIKAND IN DE | |||
;MULTIPLIKATOR IN BC | |||
MUL2: | LD | HL,0 | |
LD | A,17 | ;ZAEHLER | |
K3: | RR | B | |
RR | C | ||
DEC | A | ||
RZ | |||
JRNC | K7-# | ||
ADD | HL,DE | ||
K7: | RR | H | |
RR | L | ||
JR | K3-# | ||
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 |