| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1118 人关注过本帖
标题:我写的输入两个数相加,然后输出结果!不知道哪里出问题了
只看楼主 加入收藏
heliang6291
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:45
注 册:2012-6-28
收藏
得分:0 
这个问题很简单,但是刚刚回答了5、6个帖子的问题,有点累了。我休息下。
2012-06-28 14:58
霸王怒1001
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-7-23
收藏
得分:0 
看帖回贴  新手一个
2012-07-01 18:38
aryh
Rank: 1
来 自:非洲
等 级:新手上路
帖 子:2
专家分:3
注 册:2012-7-3
收藏
得分:0 
Please inout the second data(<10):$

其实我看了这么多,最明显的错误就是这个inout ,应该是input吧,哈

爱情是骗来的,感情是睡来的
2012-07-03 23:03
heliang6291
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:45
注 册:2012-6-28
收藏
得分:0 
    push ax
    mov dl,ah
    add dl,30h
    mov ah,02h
    int 21h
    pop ax
   
    push ax
    mov dl,al
    add dl,30h
    mov ah,02h
    int 21h

===========================
这里错了。两个10以内的数字相加,如果在确保输入正确(没有退格键输入等其他错误输入,一次性完全正确输入的情况下),那么结果肯定小于255,也就是说完全能存放在AL寄存器里,但结果可能大于等于10,
而你    push ax
    mov dl,ah
    add dl,30h
    mov ah,02h
    int 21h
    pop ax
这段代码中,AH自然为0,所以显示输出为0,没有问题,但是。。。。
    push ax
    mov dl,al
    add dl,30h
    mov ah,02h
    int 21h
这段代码中,你只能保证AL的十进制数值小于10,才正确,一旦大于等于10,你这样直接调用就不对了。举例来说,当你是6+4时,AL=10D,那么也就是0Ah,此时,DL也等于0AH,再加30H,此时为3AH,3AH不是任何数字的ASCII码。
这下,你修改自己去修改,贫僧已经帮你指出问题所在了。

当然了,你的程序而且还没判断输入错误的情况,只能在确保输入一次性正确的情况下才能使用你的程序,这也需要改进。
2012-07-04 23:24
heliang6291
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:45
注 册:2012-6-28
收藏
得分:0 
6天前,我已经来占了个位了,看你自己本人还是没反应,还是我主动点帮你指出问题好了。
哎。
真累啊。
2012-07-04 23:25
heliang6291
Rank: 2
等 级:论坛游民
威 望:3
帖 子:27
专家分:45
注 册:2012-6-28
收藏
得分:0 
对了,错误不止刚才提到的,前面也有错误,已经有朋友帮你指出来了。
2012-07-04 23:27
快速回复:我写的输入两个数相加,然后输出结果!不知道哪里出问题了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018481 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved