Ich habe ein Problem mit meinem Assembly Code. Wann immer ich diesen Code debugge, war der Division Overflow der Fehler immer. Der Code läuft reibungslos, wenn der Wert von AX nur zwei Ziffern beträgt.Assembly Language - Division Overflow (4 Ziffern)
Welche Änderungen muss ich vornehmen, damit die Division mit 4-stelligen Werten arbeitet? Vielen Dank.
ASSUME DS:DATA, CS:CODE
DATA SEGMENT
X DW 0
Y DW ?
s DB "The aswer is", 0
Z DW 4
DATA ENDS
CODE SEGMENT
MAIN PROC
MOV DS:[Y],23
MOV AX,[Y]
ADD AX,4556
MOV [X],AX
PUSH[X]
CALL WRITE
POP[X]
MOV AH,4CH
INT 21H
MAIN ENDP
WRITE PROC
PUSH BP
MOV BP,SP
MOV AX,0B800H
MOV ES,AX
MOV ES,AX
MOV DI,5*160
MOV AX,[BP+4]
MOV BL,10
DIV BL
ADD AL,'0'
STOSB
XCHG AH,AL
ADD AL,'0'
STOSB
MOV AL, 00001111B
STOSB
POP BP
RET
WRITE ENDP
CODE ENDS
END MAIN
Sie können 'ax ', 00'' (oder' 3030h') hinzufügen, um al und ah gleichzeitig zu tun. Dann können Sie sie "stosw" auf einmal speichern. Und Sie können 'mov byte ptr [di], 00001111B' anstatt zuerst einen Wert in' AL' eingeben. –