2016-04-19 25 views
1

我开始30小时前学习大会 我试图做一个活动,我可以运行一些代码 但我不能打印这两个数字的总和,什么是错的我的代码?大会增加两个数字

这是我的电流输出

Enter First Number: 
Enter Second Number: 

但一些不会打印

这里是我的代码

.MODEL small 
.STACK 100h 
.DATA 

     operation db, 13, 10, "Addition $" 
     message1 db 13, 10, "Enter First Number: $" 
     message2 db 13, 10, "Enter second Number: $" 
     message3 db 13, 10, "Sum: $" 
     newline db 13, 10, "$" 

     nameinput label byte 
     maxnamelen db 50 
     curnamelen db ? 
     namefield db 50 dup(?) 

.CODE 
start: 
     mov ax, @data 
     mov ds,ax 

     mov ah,09h 
     mov dx, offset operation 
     int 21h 

     mov ah, 01h 
     int 21h 

     cmp al, '1' 
     je Addition 

     Addition: 
     mov ah, 09h 
     mov dx, offset message1 
     int 21h 
     mov ah, 01h 
     int 21h 

     mov ah, 09h 
     mov dx, offset newline 
     int 21h 

     mov ah, 09h 
     mov dx, offset message2 
     int 21h 
     mov ah, 01h 
     int 21h 

     add al, bl 
     mov ah, 09h 
     mov dx, offset newline 
     int 21h 

     mov ax, 4c00h 
     int 21h 

     END 
+0

如果你需要捕获一个数字键盘作为字符串然后将其转换为数字,做一些数学,然后将数字转换为字符串来显示它,这个答案包含两个过程:string2number和number2string = http://stackoverflow.com/questions/30243848/assembly-x86日期到数字打破字符串到小节/ 30244131 –

回答

1

您正在阅读的ASCII字符,而不是在数字转换他们。我没有看到你试图写结果的部分(注意,这只适用于没有进位的情况下才有效!9 + 2 - > ascii';')

mov dx, offset message1 
    int 21h 
    mov ah, 01h 
    int 21h 
    mov bl,al ; save what you read 
    sub bl,48 ; subtract '0' 
    ... 
    add bl,al ; won't subtract '0' from second number... (save in bl) 
    mov ah, 09h 
    mov dx, message3 
    int 21h 
    mov ah, 02 ; print dl 
    mov dl,bl ; get value 
    int 21h  ; ...because you would add '0' to print 
+0

让我试试这个先生。 –

+0

它的工作原理,但问题是当我加1和2的总和是4。 –