title image


Smiley Re: Assembler-Programmierung
Ich hab das Programm jetzt so:





.MODEL SMALL

.STACK 100h

.DATA

AUSGABE LABEL BYTE

DB 'Das Ergebnis ist negativ: -'

ERGEBNIS DB '00000', 13, 10, '$'



.CODE

Start: mov ax, @data

mov ds, ax





mov cl, 5

mov dl, 10

mov si, OFFSET ERGEBNIS



M1: mov ax, -100

imul cl

add ax, 0

jns Ende

dec cl



neg ax

mov ah, 0

div dl

add ax, 3030h



inc si

inc si



mov [si], al

inc si

mov [si], ah





mov ah, 9

mov dx, OFFSET AUSGABE

int 21h







Ende: mov ah, 4Ch

int 21h

END Start





Allerdings wird nur die eine Zeile ausgegeben:



Das Ergebnis ist negativ: -00H40



Dann bricht das Programm ab.



Ich glaube, dass das an der Registerverwendung beim Divisionsbefehl liegt, komme aber nicht auf die richtige Lösung.

Wenn ich nur Wortregister benutze, wird ausgegen:



Das Ergebnis ist negativ: -00b00



Was mache ich falsch?



Übrigens: In meinem Buch steht, dass das SF-Flag beim IMUL-Befehl undefiniert ist!

Also doch dann: add ax, 0.

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: