鱼C论坛

 找回密码
 立即注册
查看: 2411|回复: 7

关于DIV,,,求助~~~~

[复制链接]
发表于 2012-7-16 13:11:59 | 显示全部楼层 |阅读模式
5鱼币
assume cs:code
code segment
ks: mov ax,317ah
mov bx,0
mov bl,10d
div bl
mov ax,4c00h
int 21h
code ends
end ks

课本上写着 除数 能用 8位 寄存器存放 且 被除数 可用ax 寄存器存放的话,   需要进行 8位的除法....

可是上面的ax, 和bl 满足条件了啊,,,,为什么 debug中   "Divide error"  呢?

最佳答案

查看完整内容

可以换成16位的除法 xor dx,dx xor bx,bx mov ax,317AH mov bl,0AH div bx 书中也提到过解决方法,好像是重新定义一个除法的方法 貌似是这样子实现的 把被除数的高8位和低8位分开,分别除以8位数的除数,最后将高8位保存在ah,低8位保存在al 这样,ax保存的就是你要的结果了 不知道我这样说你明白了没有,表达能力有限 - -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-16 13:12:00 | 显示全部楼层
本帖最后由 wAterLoo 于 2012-7-17 00:10 编辑

可以换成16位的除法
xor dx,dx
xor bx,bx
mov ax,317AH
mov bl,0AH
div bx

书中也提到过解决方法,好像是重新定义一个除法的方法
貌似是这样子实现的
把被除数的高8位和低8位分开,分别除以8位数的除数,最后将高8位保存在ah,低8位保存在al
这样,ax保存的就是你要的结果了

不知道我这样说你明白了没有,表达能力有限 - -





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-16 14:14:02 | 显示全部楼层
mov bl,10d   调试了一下 大概是这句出了问题  ...... 10d  转换成10进制  是269  大于8位寄存器存储的最大值 255 要不楼主换个数来试下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-16 14:16:45 | 显示全部楼层
除法溢出,317aH/10d=4F2H,al不能容纳4F2H 8位数的除法,商保存在al,余数保存在ah,如果商大于al的最大容纳量,就会发生出发溢出的错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-16 14:18:03 | 显示全部楼层
呵呵 学到了  楼上才是正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-16 21:18:19 | 显示全部楼层
3楼 正解= =
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-16 21:42:42 | 显示全部楼层
wAterLoo 发表于 2012-7-16 14:16
除法溢出,317aH/10d=4F2H,al不能容纳4F2H 8位数的除法,商保存在al,余数保存在ah,如果商大于al的最大容 ...

嗯,那有什么办法可以快速 判断 需要16位除法 或者 8位 除法呢,,,总不能每次都得用计算器 事先 算一下商是几位的吧? 还是统一都用16位 除法不会出错呢?(没试过)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-17 00:47:26 | 显示全部楼层
xor dx,dx   ; 我的debug 怎么认不出来这个 ,,,提示无效的符号,,,,我改成mov dx,0了
xor bx,bx
mov ax,317AH
mov bl,0AH
div bx      ; div bx的话,,,就变成了 16位除法了,,,,不会出错,,,,bx改成bl 就又溢出
1001/100 用8位除法 AX会 010AH,,,用16位除法   DX=0001H,,,AX=000AH 2个结果都没错, 只是存储位置变了....总结得出 16位除法能代替8位除法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 11:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表