steckl: Assembler: 32Bit Division mit Ergebnis > 16Bit?

Beitrag lesen

Hi,

ich lerne gerade Assembler mit den Programmen TASM (Turbo-Assembler von Boorlean), einem 8086-Assembler und TD (Turbo Debugger).

Jetzt möchte ich Zahlen miteinander Dividieren. Solange es kleine Zahlen sind ist es ja noch recht leicht.

In einem Buch habe ich gefunden, dass ich mit
DIV BX
die Berechnung (DX:AX) / BX durchführe. DX:AX ist dabei ein Double-Word (32-Bit-Zahl) aufgeteilt auf das AX- und das DX-Register.
Das klappt auch noch bei kleinen Ergebnissen. Das Divisionsergebnis wird in AX geschrieben und der ganzzahlige Rest in DX.

Wenn jetzt aber ein Ergebnis > 16 Bit rauskommt gibt der Debugger die Fehlermeldung "Divide by Zero" aus. Ist es irgendwie möglich, dass ich ein Ergebnis > 16Bit berechnen kann?
Beispiel: 0FFFFFFh/2h erzeugt den Fehler.

Und noch eine Zusatzfrage:
Ist es möglich durch einen 32Bit-Wert zu dividieren?

Ich habe mal gehört, dass man irgendwie in einen anderen Modus schalten kann, damit Register 32Bit statt 16Bit groß sind. Darauf möchte ich aber (wenn möglich) erstmal verzichten.

mfG,
steckl