Die 8086/88 - CPU gehörte seinerzeit (1978) zu den ersten CPU\'s, die über einen Multiplikations- und einen Divisionsbefehl verfügten. Ohne einen solchen Befehl müssen derartige Aufgaben durch eine Folge von Additions- und Subtraktionsbefehlen ersetzt werden, was natürlich ziemlich langsam ist und den Programmcode vergrößerte. Bei der 8086/88 - CPU gibt es die Befehle MUL und IMUL.
Syntax :
Bei dem Quelloperanden handelt es sich entweder um ein Register oder eine Speicher-variable. Der Zieloperand wird immer in AL- bzw. im AX- Register erwartet. Werden zwei 8-Bit Zahlen miteinander multipliziert, wird der Zieloperand aus dem AL - Register geholt; werden dagegen 16-Bit Zahlen multipliziert, kommt der Zieloperand aus dem AX-Register. Aber wohin kommt das Ergebnis ? Bei einer 8-Bit (Byte-) Multiplikation wird das 16-Bit Ergebnis im AX - Register abgelegt, wobei das AH - Register die höherwertigen und das AL - Register die niederwertigen 8 Bit enthält. Bei einer Multiplikation von zwei 16-Bit Zahlen entsteht ein 32-Bit Ergebnis. Da hierfür ein einzelnes CPU - Register nicht mehr ausreicht, werden die niederwertigen 16 Bit im AX - Register und die höherwertigen 16 Bit im DX - Register gespeichert.
Die Multiplikationsbefehle beeinflussen die folgenden Flags : Der Carry-Flag wird in Verbindung mit dem Überlauf-Flag gesetzt, wenn das Ergebnis größer als das darstellbare Format des Zieloperanden liegt. Außerdem werden gegebenenfalls das Paritäts-Flag, das Null-Flag; sowie das Vorzeichen-Flag gesetzt.
|