如何使用汇编语言添加两位数字?

时间:2013-12-11 02:41:48

标签: assembly x86 dos

我找不到可以编辑的代码,这样我就可以添加两位数字而不是1位数字,这里是代码:

.model small
.stack 100h
.data

first db 13,10, 'Enter 1st Number: $'
second db 13,10, 'Enter 2nd Number: $'
result db 13,10, 'Result: $'
invalid db 13,10, 'Invalid Number!!! $'

.code

start:
        mov ax,03
        int 10h

        mov ax,@data
        mov ds,ax

mn:
        mov dx, offset first
        mov ah,9
        int 21h

        mov ah,1
        int 21h

        mov cl,al

        cmp al,30h
        jl nvalid
        cmp al,39h
        jg nvalid
        jmp proceed

nvalid:
        mov dx,offset invalid
        mov ah,9
        int 21h
        jmp mn

proceed:
        sub cl,30h

        mov dx,offset second
        mov ah,9
        int 21h
        mov ah,1
        int 21h

        cmp al,30h
        jl nvalid
        cmp al,39h
        jg nvalid
        sub al,30h

        xor ah,ah
        add al,cl
        aaa

        mov cx,ax
        add cx,3030h
        mov dx, offset result
        mov ah,9
        int 21h

        mov ah,2
        mov dl,ch
        int 21h

        mov dl,cl
        int 21h

exit:
        mov ah,4ch
        int 21h

end start

1 个答案:

答案 0 :(得分:2)

在查看您的代码之后,您真正的问题不是“如何将两位数字加在一起”(显而易见,使用add指令)。

您的真实的问题是“如何使用int 21h, ah=09h 显示两位数字?

答案是:您需要单独显示每个数字,方法是将原始数字除以增加10的幂,直到您得到零。为每个结果添加30小时('0')并显示该字符

相关: