解决除法溢出问题
来源:互联网 发布:淘宝小樱牌 编辑:程序博客网 时间:2024/05/21 17:03
王爽汇编语言第二版实验10.2
一、实验要求
当用div指令进行8位除法运算时结果大于8位,或进行16位除法运算结果大于16位时,会出现除法溢出的错误。要求编写一个子程序,实现支持结果不会出现溢出的除法运算
二、算法概述
通过一个公式将可能产生溢出的运算X/N,转变为多个不会产生溢出的除法运算。公式中,等号右边的所有除法运算都可以用div指令来实现,并且不会产生除法溢出
公式:X/N = int(H/N)*65536 + [rem(H/N)*65536 + L]/N
X:被除数,范围:[0,FFFFFFFF]
N:除数,范围:[0,FFFF]
H:X的高16位
L:X的低16位
int():描述性运算符,取商
ram():描述性运算符,取余数
三、程序接口
名称:divdw
功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型
参数:(ax)=dword型数据的低16位
(dx)=dword型数据的高16位
(cx)=除数
返回:(ax)=商的低16位
(dx)=商的高16位
(cx)=余数
四、实现代码
divdw: ;子程序定义开始
push bx
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
ret
五、测试代码
assume cs:codesg,ss:stacksg
stacksg segment
dw 8 dup (0)
stacksg ends
codesg segment
start:
mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
codesg ends
end start
六、测试结果
在执行后,测试除法命令的商为dx*16+ax,余数cx
- 解决除法溢出问题
- 解决除法溢出的问题
- 编写解决除法溢出问题的子程序
- 除法溢出问题
- 除法溢出问题
- 汇编语言 王爽 实验十 解决除法溢出问题
- 子程序解决除法溢出问题 基于8086汇编
- 实验10.2_解决除法溢出的问题
- 汇编实验10-2 解决除法溢出的问题
- 汇编语言解决除法溢出问题的小程序
- ***汇编语言 实验10.2 解决除法溢出的问题
- 汇编语言 之 除法溢出问题
- 汇编中的除法溢出的解决
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 王爽《汇编语言》实验10.2——解决除法溢出的问题
- 2.解决除法溢出问题-汇编语言(王爽)-实验10 编写子程序
- 汇编语言子函数——除法溢出问题
- 解决内存溢出问题
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- (转)20年嵌入式领域开发经验精华六
- 开源Open CASCADE
- (转)20年嵌入式领域开发经验精华七
- ACIS平台(转)
- 解决除法溢出问题
- 月薪两千也要拿出一万的职业范儿
- Coco/R快速编译器生成
- iebook超级精灵2008 专业版破解
- 双公司记
- FORCAL参数优化动态库FcOpt
- MsXml创建和解析XML示例
- 目前比较全的CSS重设(reset)方法总结
- 产品设计与用户体验