2013-12-11 42 views
-1

我找不到代码,我可以把编辑,这样我可以加两位数字,而不是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 
+0

根据各自的体系应该有所谓的'add'的指令,在文档中寻找它。 – randomusername

+2

由于某种原因,这让我想起[this](http://i.stack.imgur.com/ssRUr.gif)。 :D:D:D你应该使用jQuery。这真的很棒,可以做所有事情。 – Mysticial

+0

你有什么错误? – rhughes

回答

2

看你的代码后,你真正的问题是不“我如何将两位数字加在一起”(很明显,使用add指令)。

真正的问题是“?我怎么显示使用int 21h, ah=09h两位数

答案是:你需要单独显示每个号码,通过增加将原来的号码10的权力,直到你得到零。每个结果添加30h('0'),并显示那个字符

相关: