. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于div的问题还不能很好的理解,请会的朋友帮忙解释一下(内有例子)  [已解决] 回复[ 4次 ]   点击[ 328次 ]  
ryan1779
[帖 主]   [ 发表时间:2009-07-27 12:51 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39
书上说:
div word ptr es:[0]
含义:(ax)=[(dx)*10000h+(ax)]/((es)*16+0)的商
      (dx)=[(dx)*10000h+(ax)]/((es)*16+0)的余数
————————————————————————————————————————————————————————————————————————————————————————————————————————————
-d es:0 3f
0B90:0000  31 39 37 35 20 10 00 00-00 20 03 00 20 05 00 20   1975 .... .. ..
0B90:0010  31 39 37 36 20 16 00 00-00 20 6E 65 20 3F 3F 20   1976 .... ne ??
0B90:0020  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
0B90:0030  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??

(bx=0)
mov dx,es:7h[bx]
mov ax,es:5h[bx]
div word ptr es:0ah[bx]
mov es:0dh[bx],ax

按照上面的步骤:ax=0010,dx=0000

(ax)=[(0000)*10000h+(0010)]/((0b90)*16+0003)
      =0010/0b903

答案为什么=0005,如果0b90*16+0003是表示内存地址里的数据的话,那前面0000*10000h,我又有点看不懂了!!
tinyparticle
[第1楼]   [ 回复时间:2009-07-27 18:43 ]   [引用]   [回复]   [ top ] 
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26
应该是贴主(ax)理解有问题

(ax)=[(dx)*10000h+(ax)]/((es)*16+[bx]+0ah) 
    =[(es:7h[bx])*10000h+(es:5h[bx])]/((0b90h)*16+0+ah)
    =[0000h*10000h+0010h]/(0b9ah)
    =0010h/0003h
    =0005h

请参考书中P169-170页内容
tinyparticle
[第2楼]   [ 回复时间:2009-07-27 18:46 ]   [引用]   [回复]   [ top ] 
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26
前面有地方写错,重贴

应该是贴主(ax)理解有问题 

(ax)=[(dx)*10000h+(ax)]/((es)*16+[bx]+0ah)  
    =[(es:7h[bx])*10000h+(es:5h[bx])]/((0b90h)*16+0+ah) 
    =[0000h*10000h+0010h]/(0b90ah) 
    =0010h/0003h 
    =0005h 

请参考书中P169-170页内容
ryan1779
[第3楼]   [ 回复时间:2009-07-28 19:21 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39
汗,还是没看明白。。
如果ax=3456,dx=0012,ds:[4]=0789

div word ptr ds:[4] 

那(ax)=[(dx)*10000h+(ax)]/((ds)*16+0)
       =[0012h*10000h+3456]/(0b820+4h)
       =[123456]/(0789)
       =26A

-.-!!结果出来了,看来要多动手,光用脑子想永远也搞不出头绪啊~!
ryan1779
[第4楼]   [ 回复时间:2009-07-28 19:32 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39
此贴由 贴主 于 [ 2009-07-28 19:32 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(tinyparticle):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved