. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  书158页,电子书169页的那个问题  [待解决] 回复[ 8次 ]   点击[ 762次 ]  
cdzjf
[帖 主]   [ 发表时间:2007-11-29 14:04 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
mov ax,1001
mov bl,100
div bl

程序执行以后,我在debug中,ax=010a,dx=0

不是所这个余应该放在dx中吗?为什么1放到了ax中啊?
lion
[第1楼]   [ 回复时间:2007-11-29 14:27 ]   [引用]   [回复]   [ top ] 
荣誉值:33
信誉值:0
注册日期:2007-07-10 11:31
认真看书157页。

除数为8位时,商放在AL中,余数放在AH中。
除数为16位时,商放在AX中,余数放在DX中。

上面情况属于第一种。故余数放在AH中。

提醒楼主,以后遇到问题,应该自己思考后再提问,否则学习效果不佳。
cdzjf
[第2楼]   [ 回复时间:2007-11-29 15:01 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
但有个问题,不是我没有看书

书上的答案自己也说al=0ah,dx=1
zysong
[第3楼]   [ 回复时间:2007-11-29 17:13 ]   [引用]   [回复]   [ top ] 
荣誉值:19
信誉值:0
注册日期:2007-07-05 17:25
呵呵。8位或16位除法是由除数决定的,也就是div后面的寄存器或内存单元决定的,如果是8位,则al存储商,ah存储余数。如果是16位ax存储商,dx存储余数。div bl,bl是8位寄存器所以余数放在了ax中。
cdzjf
[第4楼]   [ 回复时间:2007-12-04 10:50 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28
那也就是说,书上写错了
gdongyong
[第5楼]   [ 回复时间:2007-12-13 10:15 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2007-11-28 12:32
应是DX=0,AH=01
goal00001111
[第6楼]   [ 回复时间:2007-12-13 13:55 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:9
注册日期:2007-10-19 10:16
书上印刷错误。
应该是:al=0ah,ah=1
wang_weihan
[第7楼]   [ 回复时间:2008-04-15 10:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-10 19:47
尽信书,不如无书
shme6700
[第8楼]   [ 回复时间:2009-08-13 16:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-13 16:19
我遇到的情况正好相反,不论除数是8位还是16位,我跟踪调试的结果都是商在AX中,余数在DX中;
我的系统:XP SPK3  双核CPU笔记本
难道是机器不同的缘故?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved