Assembler teilt seltsam
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
bitten
code
division
ergebnis
format
helfen
neunte zeile
null
quotient
register
rest
schleife
stapel
teil
teilen
test
versuchen
zahl
ziffer
-
[...] mov ebx,10 teilen: div ebx push edx inc ecx test eax,eax jnz teilen [...]
Das vorweg. Leicht zu sehen ist, dass ich mich an einer Schleife versuche, in welcher das EAX-Register geteilt wird und der Rest auf dem Stapel landet. Nur ist es leider so, dass die neunte Zeile niemals erreicht wird, dass also EAX die Null nicht erreicht und die Schleife nicht terminiert. Versuche dieses Verhalten mittels Debugger nachzuvollziehen offenbarten mir, dass der Wert von EAX nicht immer kleiner wird, sondern hin und her springt. Z.B. wird aus 0x664D3215 nach einer Division 0xA3D48502...
Ganz sicher habe ich eine absolute Trivialität übersehen, aber ich muss euch bitten mir zu helfen, denn ich werden nicht schlau hieraus. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die x86 DIV instruction verwendet 2 Register für den Zähler, wenn du mit 16bit oder 32bit Registern arbeitest. In diesem Fall baust du dir aus dem EAX und dem EDX Register deinen Zähler zusammen. Der Teil in EDX sind die höherwertigen Ziffern und der Teil in EAX sind die niedrigerwertigen Ziffern. Also hast du eine Zahl in dem Format EDX * 2^32 + EAX.
Das Ergebnis ist dann zweigeteilt: Der Quotient landet in EAX und der Rest der Division in EDX. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage