Ich versuche, zwei Zahlen in Assembly zu teilen. Ich arbeite aus der Irvine Versammlung für Intel Computer Buch aus und ich kann Division Arbeit für das Leben von mir nicht machen.
Hier ist mein Code
%Vor%Wobei WriteDec schreiben sollte, welche Zahl sich im eax Register befindet (sollte nach dem Divisionsaufruf auf den Quotienten gesetzt werden). Stattdessen stürzt Visual Studio bei jedem Programmabsturz ab (das Programm kompiliert jedoch).
Ja, Sie müssen edx
auf Null setzen.
Der einfachste Weg dies zu tun ist:
%Vor%Ich denke, der oben genannte Grund ist richtig, denn wenn du eax durch ebx dividierst, sind beide 32-Bit-Zahlen, aber der Dividend muss 64-Bit-Teiler 32 Bit sein und so betrachtet er edx als das msb ... du kannst edx machen 0 oder anstatt 3bx zu verwenden, benutze nur bx .. auf diese Weise teilst du eine 32-Bit-Nummer durch eine 16-Bit-Nummer