| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:这个加法还是有问题的,怎么能解决呢?
只看楼主 加入收藏
youyong407
Rank: 1
等 级:新手上路
帖 子:62
专家分:3
注 册:2008-9-22
结帖率:100%
收藏
 问题点数:0 回复次数:0 
这个加法还是有问题的,怎么能解决呢?
根据这个,我写了个小程序,如下:

;名称:add32
;功能:两个32位数字相加
;参数:ds:si指向第一个数字的起始位置,
;                         ds:di指向第二个数字的起始位置
;返回:将计算结果存入第一个数的起始位置

assume cs:code, ds:data

          data segment
                 
                dw 0aaaah,0aaaah
                dw 0aaaah,0aaaah
                 
          data ends

          code segment

          start:         mov ax, data
                         mov ds, ax
                          
                         mov si, 0
                         mov di, 4
                         call add32
                          
                         mov ax, 4c00h
                         int 21h
                          
          add32:         push ax
                         push cx
                         push si
                         push di
                          
                         sub ax, ax
                         mov cx, 2
                s:       mov ax, [si]
                         adc ax, [di]
                         mov [si], ax
                         inc si
                         inc si
                         inc di
                         inc di
                         loop s
                          
                         pop di
                         pop si
                         pop cx
                         pop ax
                         ret
                          
code ends

end start

计算的结果应该是"15554h",由于ax为16位寄存器,所以发生进位结果变成“5554h"。也就是说这个算法不能解决高位加法再次进位的现象,不知道有没有办法解决这个问题。
搜索更多相关主题的帖子: 加法 
2009-12-24 16:34
快速回复:这个加法还是有问题的,怎么能解决呢?
数据加载中...
 
   



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

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