Hallo, habe ein (wahrscheinlich klitzekleines) Problemchen mit einem Assembler Programm. Ich möchte die Gleichung z=(x*3+y)/20 in Assembler berechnen lassen. Hat auch alles ganz gut geklappt, aber wenn ich Werte einsetze, die ein nicht ganzzahliges Z verursachen, bekomme ich im AH-Register keinen Rest angezeigt... Weiß einer Rat? Mein Code lautet (für z=(x*3+y)/20): .data X db ... Y db ... Z db ?,? .code .startup mov AL,X mov AH,3 mul AH mov BL,Y add AX,BX mov BX, 20 div BX mov Z[0], AL mov Z[1], AH end Tja, falls dort Fehler auftreten, würde mich das brennend interessieren. Wie gesagt, das Programm läuft, sofern Z ganzzahlig wird, problemlos. Danke im Voraus!
Zudem: > mov BL,Y 8 Bits nach BL schreiben. > add AX,BX Und 16 Bits aus BH:BL holen. BH??
Wenn du durch 16bit teilst ist der Rest in DX. XOR BH,BH ; vergessen ? MOV Word Ptr[Z],AX ; geht auch
Hi 'div' legt keinen Rest in AH ab. AX ist das (kleinste) Ergebnisregister. MfG Spess
Zwar etwas Offtopic, aber für mich eine gute Hilfe gewesen: http://www.drpaulcarter.com/pcasm/ download als PDF in deutsch: http://www.drpaulcarter.com/pcasm/pcasm-book-german.zip MfG
Ja, da sind eine Menge Fehler drin, aber den wichtigsten hat bis jetzt noch keiner gefunden. Wer sucht der findet.. >Hi >'div' legt keinen Rest in AH ab. AX ist das (kleinste) Ergebnisregister. >MfG Spess Quatsch, - aber nah dran!
Yep. Ähnlich wie oben, nur in grün. Verwendetes Register nicht vorher mit Wert bestückt. Nur diesmal etwas subtiler, weil man dazu ins Handbuch gucken muss wenn man den Befehl nicht so genau kennt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.