Код ассемблера, чтобы прочитать два целых числа (от 0 до 9), затем вычислить и вывести их сумму
Я пытаюсь добавить два числа от пользователя и отобразить их сумму, но я не получаю желаемый результат. Я не знаю, что я сделал неправильно. Может кто-нибудь, пожалуйста, помогите? Вот мой код:
Data_segment_name segment para
n1 db ?
n2 db ?
Data_segment_name ends
Stack_segment_name segment para stack
Stack_segment_name ends
Code_segment_name segment
Main_prog proc far
assume SS:Stack_segment_name,CS:Code_segment_name,DS:Data_segment_name
mov AX,Data_segment_name ; load the starting address of the data
mov DS,AX ; segment into DS reg.
mov ah,01h
int 21h
sub al,30h
mov n1,al
mov ah,01h
int 21h
sub al,30h
mov n2,al
mov al,n1
add al,n2
mov ax,0h
mov bl,10
div bl
mov dl,ah
add dl,30h
mov ah,02h
int 21h
mov dl,al
add dl,30h
mov ah,02h
int 21h
;mov ax,4c00h ; exit program
mov ah,07h
int 21h
Main_prog endp
Code_segment_name ends
end Main_prog
1 ответ
Вы предполагаете, что результаты деления останутся в регистрах, пока вы отображаете свою первую цифру.
Это не будет, поэтому вы должны сохранить результат в памяти, так же, как вы делаете с вводом.