Forum: PC-Programmierung Problem mit 8086 Assembler!


von thestranger268 (Gast)


Lesenswert?

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!

von *.* (Gast)


Lesenswert?

Äh die div, add, mul sind nur für Ganzzahlen gedacht.

von (prx) A. K. (prx)


Lesenswert?

Zudem:

>     mov BL,Y

8 Bits nach BL schreiben.

>     add AX,BX

Und 16 Bits aus BH:BL holen. BH??

von Skua (Gast)


Lesenswert?

Wenn du durch 16bit teilst ist der Rest in DX.
XOR  BH,BH ; vergessen ?
MOV  Word Ptr[Z],AX ; geht auch

von spess53 (Gast)


Lesenswert?

Hi

'div' legt keinen Rest in AH ab. AX ist das (kleinste) Ergebnisregister.

MfG Spess

von Gast (Gast)


Lesenswert?

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

von Asm-Guru (Gast)


Lesenswert?

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!

von (prx) A. K. (prx)


Lesenswert?

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
Noch kein Account? Hier anmelden.