; Rechnen Sie den aritmetischen Ausdruck ; e=((a+b*c-d)/f+g*h)/i ; aus ; wir betrachten a,d,f als Wort ; b,c,g,h,i - als Byte ; damit wir die Division durch f ausführen können, werden wir den ; Dividend zu Doppelwort (32 Bit) erweitern. ; es wird uns nur den Quotient der Divisionen interessieren. ; der Typ des Ergebnises wird Oktett assume cs:code,ds:data data segment a dw 5 b db 6 c db 10 d dw 5 f dw 6 g db 10 h db 11 i db 10 interm dw ? rez db ? data ends code segment beginn: mov ax,data mov ds,ax mov al,b imul c ; ax=b*c add ax,a ; ax=b*c+a sub ax,d ; ax=b*c+a-d cwd ; wir haben das Wort von ax in Doppelwort konvertiert, ; das wird in dx:ax gespeichert idiv f ; wir haben den Quotient in ax, ; und den Rest in dx ; ax=(a+b*c-d)/f mov interm, ax ; interm=(a+b*c-d)/f mov al,g imul h ; ax=g*h add ax, interm ; ax=(a+b*c-d)/f+g*h idiv i ; wir haben den Quotient in al und den Rest in ah mov rez,al mov ax, 4C00h int 21h code ends end beginn ; Testdaten: wir erhalten das Ergebnis ; ((a+b*c-d)/f+g*h)/i=((5+6*10-5)/6+10*11)/10=12