Код ассемблера, чтобы прочитать два целых числа (от 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 ответ

Вы предполагаете, что результаты деления останутся в регистрах, пока вы отображаете свою первую цифру.

Это не будет, поэтому вы должны сохранить результат в памяти, так же, как вы делаете с вводом.

Другие вопросы по тегам