Funktion: | Dieser Befehl multipliziert eine 8-bit-Zahl mit einer 8-bit-Zahl und schiebt das 16-bit-Ergebnis um ein Bit nach links. Der Multiplikand Rd und der Multiplikator Rr sind vorzeichenlose Festkommazahlen mit dem gedachten Dezimalpunkt zwischen Bit 6 und 7. Das 16-bit-Ergebnis ist ebenfalls vorzeichenlos mit gedachtem Dezimalpunkt zwischen Bit 14 und 15. Das Ergebnis wird im Register R1 (High-Byte) und R0 (Low-Byte) abgelegt. Eine Multiplikation zweier Zahlen im Format N1.Q1 und N2.Q2 ergibt ein Ergebnis im Format (N1+N2).(Q1+Q2). N bedeutet dabei die Anzahl der binären Stellen links vom Dezimalpunkt, Q bedeutet die Anzahl der binären Stellen rechts vom Dezimalpunkt. In Mikrocontroller-Anwendungen liegt der Input oft im Format 1.7, womit sich ein Ergebnis im Format 2.14 ergibt. Ein Linksschieben des Ergebnisses ermöglicht, dass das High-Byte des Ergebnisses im gleichen Format wie der Input vorliegt. Das 1.7-Format wird für gewöhnlich bei vorzeichenbehafteten Zahlen verwendet (dann s.7), während FMUL eine Multiplikation vorzeichenloser Zahlen durchführt. Daher wird FMUL für eine Teilmultiplikation von 16-bit-Zahlen im 1.15-Format verwendet, wenn ein Ergebnis im 1.31-Format benötigt wird. Das Ergebnis der FMUL-Operation kann an einem Zweierkomplement-Überlauf leiden, wenn das Ergebnis als eine Zahl im 1.15-Format interpretiert wird. Das MSB des Ergebnisses vor dem Linksschieben wird in das Carry-Flag gesichert. Dieser Befehl ist nicht bei allen Chips verfügbar. Als Operanden stehen nur die Register R16 bis R23 zur Verfügung.
|
---|