汇编语言中如遇到两个dword型的数值相加,指令怎么写 我写了 add dword ptr [bx],ax ,add dword ptr [bx],[bx+4]add dword ptr [bx],dword ptr [bx+4] 这样的写法都不行其实是书本里的一个实验任务,为防止div溢出,给
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 20:20:18
汇编语言中如遇到两个dword型的数值相加,指令怎么写 我写了 add dword ptr [bx],ax ,add dword ptr [bx],[bx+4]add dword ptr [bx],dword ptr [bx+4] 这样的写法都不行其实是书本里的一个实验任务,为防止div溢出,给
汇编语言中如遇到两个dword型的数值相加,指令怎么写 我写了 add dword ptr [bx],ax ,
add dword ptr [bx],[bx+4]
add dword ptr [bx],dword ptr [bx+4] 这样的写法都不行
其实是书本里的一个实验任务,为防止div溢出,给的公式
;名称:divdw
;功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型
;参数:(ax)=dword型数据的低16位
; (dx)=dword型数据的高16位
; (cx)=除数
;返回:(dx)=结果的高16位,(ax)=结果的低16位
; (cx)=余数
;公式:X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N
;int():描述型运算符,取商,比如,int(38/10)=3
;rem():描述型运算符,取余数,比如,rem(38/10)=8
我考虑rem(H/N)*65536+L ,rem(H/N)*65536这个值应该是4位dword,而L为原树的低位,为word型,不能直接低位相加,因为可能产生进位.
汇编语言中如遇到两个dword型的数值相加,指令怎么写 我写了 add dword ptr [bx],ax ,add dword ptr [bx],[bx+4]add dword ptr [bx],dword ptr [bx+4] 这样的写法都不行其实是书本里的一个实验任务,为防止div溢出,给
错误在于用了2个存储单元相加
方法1:用32位汇编
mov eax,dword ptr [bx+4]
add dword ptr [bx],eax;通过32位寄存器,不过这样用必须说明用386以上的cpu
方法2:用带进位加
mov ax,word ptr [bx+4]
add word ptr [bx],ax
mov ax,word ptr [bx+6]
adc word ptr [bx+2],ax;加类型说明不知道你是怎么定义