der zusammen hangt und wie es funzt
-
hi,
also ich bin ja grad beim erlernen von asm. aber ich kapiere irgendwie nicht das, zusammen spiel von ax und dx oder eax edx bei den befehlen wie mul oder div net...was passiert genau, wenn ich diese befehle benutze ? was mss ich beachten...bitte ne kleines beispiel geben..thx
-
Dazu solltest du am besten ein Buch lesen.
Bei manchen Befehlen werden automatisch bestimmte Register dafür benutzt um damit zu rechnen oder Ergebnisse darin zu speichern.
mov ax, 2
mov bx, 2
mul bxHier setzt du das AX und das BX Register auf den Wert 2.
Der Befehl mul multipliziert immer den Wert der in AX ist mit dem Wert des angegebenen Registers.
Wenn AX mit einem 16-Bit Registe (BX) multipliziert wird, wird das Ergebnis evtl zu groß um in AX zu passen. Somit wird das Ergebnis der Multiplikation in AX:DX gespeichert.Diese Konventionen sind vom Prozessor so festgelegt.
Das muß man einfach lernen und fertig
-
danke erstmal, aber ich habe bereits ein asm buch, das von joachim rohde...naja, nur bin eben nicht ganz durchgestiegen!
-
Hi.
In den FAQ gibt es auch noch viele schoene Einsteigertutorials - auch auf Deutsch. Irgendwo wird da sicher auch auf Mul/Div eingegangen.
Ansonsten mal kurz zusammengefasst:
Eine Zahl wird bei mul/div folgendermassen auf (e)ax und (e)dx verteilt:Bit 0..15 16..31 ax dx =>insgesamt 32Bit oder Bit 0..31 32..63 eax edx =>insgesamt 64Bit
Bei mul mit einem Faktor von 16/32Bit wird, wie TeeJay schon sagte, das Ergebnis ueber og. 2 Register verteilt; div erwartet den Dividenden in diesen beiden Registern (wenn der Divisor 16 oder 32Bit lang ist) und benutzt auch (e)ax und (e)dx um jeweils den Quotienten und den Rest der Division auszugeben.