У меня проблема с кодом сборки. Всякий раз, когда я отлаживаю этот код, Overflow переполнения всегда была ошибкой. Код работает плавно, когда значение AX равно только двум цифрам.Язык сборки - переполнение подразделения (4 цифры)
Какие изменения необходимо сделать для деления с 4-значными значениями? Благодарю.
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
Вы можете «добавить ax, '00'' (или' 3030h'), чтобы сделать al и ah сразу. Тогда вы можете 'stosw' хранить их одновременно. И вы можете 'mov byte ptr [di], 00001111B' вместо того, чтобы сначала поместить значение в' AL'. –