kostenloser Webspace werbefrei: lima-city


Assembler teilt seltsam

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    [...]
    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!