汇编网首页登录博客注册
fontomas的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  CHERISH YOUR LIFE!
  • 『姓名』:云清                
  • 『性别』:保密  『发送消息
  • 个人说明:学问之美,在于使人一头雾水;诗歌之美,在于煽动男女出轨。
  • 详细信息『加为好友』
学习动态
好友圈
友情链接

[2008-08-23 05:16] 实验10.2-解决除法溢出的问题

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;子程序描述:                                                                                                                       
;;;名称:divDW                                                                                                                  
;;;功能:进行不会产生溢出的出发运算,被除数为Dword型,除数为word
;;;              型号,结果为Dword型
;;;参数:(AX)=Dword型数据的低16位
;;;           (DX)=Dword型数据的高16位,(CX)=除数
;;;返回:(DX)=结果的高16位,(AX)=结果的低16位,(CX)=余数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

assume CS:CODESG, SS:STACKSG
STACKSG SEGMENT
        dw 8 dup (0)
STACKSG ENDS

CODESG SEGMENT
        start:
                mov AX, 4240H
                mov DX, 000FH
                mov CX, 0AH
                call divDw

                mov AX, 4C00H
                int 21H

        divDw:
                ;分部计算,保存低16位的值
                mov BX, AX
                ;高16位数做除法
                mov AX, DX
                mov DX, 0H
                div CX        ;(DX)=余数,(AX)=商

                ;保存高16位数做除法所得的商
                mov SI, AX
                ;低16位数做除法
                ;高16位数做除法所得的余数保存在DX中,作为低16位数做被除数的DX中的内容
                mov AX, BX
                div CX        ;(DX)=余数,(AX)=商

                mov CX, DX                ;余数放入CX中保存
                mov DX, SI                ;结果的高16位放入DX中保存

                ret                ;返回子程序调用

CODESG ENDS
END start


难点:int(H/N)*65536 和 rem(H/N)*65536 的理解。
int(H/N)*65536——将int(H/N)放入DX中
rem(H/N)*65536——将rem(H/N)放入DX中
评论次数(3)  |  浏览次数(1029)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2008-08-23 15:31  ]

啊!不错的程序。

[  游客   发表于  2008-08-23 16:40  ]

关键是理解为什么没有溢出的原理,其实,我们就是将数据放大、缩小处理,配合倍数关系,这个原理性的思维方式,在以后可能会经常用到,比如说不支持浮点型,我们就可以将int型放大N*10倍后进行计算,只是要知道最后的结果的与正确数据的关系。
所以,这个题目对于我们很有用哟。呵呵
恭喜博主能够理解并完成。

[  fontomas   发表于  2008-08-23 19:14  ]

谢谢!楼上说的很精辟,有拨云见月之功!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码