汇编语言中如遇到两个dword型的数值相加,指令怎么写 我写了 add dword ptr [bx],ax ,add dword ptr [bx],[bx+4]add dword ptr [bx],dword ptr [bx+4] 这样的写法都不行其实是书本里的一个实验任务,为防止div溢出,给
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/10 21:25:14
![汇编语言中如遇到两个dword型的数值相加,指令怎么写 我写了 add dword ptr [bx],ax ,add dword ptr [bx],[bx+4]add dword ptr [bx],dword ptr [bx+4] 这样的写法都不行其实是书本里的一个实验任务,为防止div溢出,给](/uploads/image/z/14861427-51-7.jpg?t=%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80%E4%B8%AD%E5%A6%82%E9%81%87%E5%88%B0%E4%B8%A4%E4%B8%AAdword%E5%9E%8B%E7%9A%84%E6%95%B0%E5%80%BC%E7%9B%B8%E5%8A%A0%2C%E6%8C%87%E4%BB%A4%E6%80%8E%E4%B9%88%E5%86%99+%E6%88%91%E5%86%99%E4%BA%86+add+dword+ptr+%5Bbx%5D%2Cax+%2Cadd+dword+ptr+%5Bbx%5D%2C%5Bbx%2B4%5Dadd+dword+ptr+%5Bbx%5D%2Cdword+ptr+%5Bbx%2B4%5D+%E8%BF%99%E6%A0%B7%E7%9A%84%E5%86%99%E6%B3%95%E9%83%BD%E4%B8%8D%E8%A1%8C%E5%85%B6%E5%AE%9E%E6%98%AF%E4%B9%A6%E6%9C%AC%E9%87%8C%E7%9A%84%E4%B8%80%E4%B8%AA%E5%AE%9E%E9%AA%8C%E4%BB%BB%E5%8A%A1%2C%E4%B8%BA%E9%98%B2%E6%AD%A2div%E6%BA%A2%E5%87%BA%2C%E7%BB%99)
汇编语言中如遇到两个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;加类型说明不知道你是怎么定义