Auch hier stellt die 8086/88 - CPU zwei Befehle zur Verfügung : der DIV- und IDIV-Befehl. Bei der Division wird, wie bei der Multiplikation, der Quelloperand durch den Zieloperand geteilt. Da die Divisionsbefehle mit ganzzahligen Integer - Zahlen arbeiten, kann das Ergebnis auch nur ganzzahlig sein. Man erhält bei der Division also stets ein ganz-zahliges Ergebnis und einen ganzzahligen Rest. Mit Hilfe des Restes kann durch fortlaufende Division jedoch eine beliebige Genauigkeit, auch ohne Fließkomma-arithmetik, erreicht werden. Bei einer 16-Bit Division wird das 8-Bit Ergebnis in AL und der 8-Bit Rest in AH abgelegt. Bei einer 32-Bit Division wird analog das 16-Bit Ergebnis in AX, der 16-Bit Rest in DX abgelegt.
Bei der Verwendung des DIV - Befehls wird oft vergessen, daß bei einer 32-Bit Division immer auch das DX - Register beteiligt ist, auch wenn eine Zahl dividiert werden soll, die nicht die vollen 32 Bit ausnutzt. Der Grund für einen scheinbar unbegründeten Divisionsüberlauf ist oft, das vergessen wurde, das DX - Register vor der Division auf Null zu setzen.
Eine weitere Komplikation kann bei der Division auftreten : Der Divisons-Überlauf (\"Divide Overflow\"). Dieser kann entweder auftreten, wenn das Ergebnis oder der Rest nicht in sein Register paßt, oder bei der Division durch Null. In diesem Fall wird kein Flag gesetzt, sondern der Interrupt 0 der 8086/88 - CPU ausgeführt. Im Verlauf dieses Interrupts wird der gerade bearbeitete Divisionsbefehl abgebrochen, und der Programmlauf an der nächsten Anweisung im Programm fortgesetzt. Dabei gehen die Inhalte der Register AX und DX verloren, sie enthalten nur noch \"Datenschrott\". Falls das Programm den Interrupt Null unverändert läßt, wird durch ein Divisionsüberlauf das Programm mit der Meldung \"Überlauf bei Division\" abgebrochen.
Laut Datenblatt der 8086/88 - CPU ist der Zustand der Status-Flags nach einer Division nicht definiert. Dies wird nicht umsonst so sein, man sollte also keine Prüfung vornehmen, da die Belegung sich bei verschiedenen Prozessorgenerationen ändern kann. Eine Prüfung bzw. Auswertung der Zustände kann gut gehen, muß aber nicht.
|