鱼C论坛

 找回密码
 立即注册
查看: 2992|回复: 25

第八章除法里的偏移地址

[复制链接]
发表于 2014-8-27 20:34:46 | 显示全部楼层 |阅读模式
1鱼币
这些偏移地址怎么数出来的啊? 2.png 1.jpg

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

使用道具 举报

发表于 2014-8-27 20:48:57 | 显示全部楼层
1. 被除数的的形式是dd 100001,是一个双字。它在数据区的地址是ds[0]-ds[3]
2. 除数是形式是dw 100,是一个字。地址是ds[4]-ds[5]
3. 结果的商存在ax,也是一个字。地址是ds[6]-ds[7]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 20:50:05 | 显示全部楼层
因为在data段中定义了dd,dw,dw.第一个dd是4个字节,dw是2个字节。在内存中它们的排列顺序按照定义时排列。十六进制 A1 86 01 00 64 00 00 00 ,前四个是被除数(dd)占的字节,下面两个是除数(dw)占有的字节,最后两个是用于保存商的。这样应该懂了吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 21:23:06 | 显示全部楼层
A1 86 01 00 64 00 00 00 ,那对应偏移地址就是
0     1   2  3   4   5   6   7     吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 21:33:03 | 显示全部楼层
【2】里应放是01,【0】里0?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 21:33:55 | 显示全部楼层
流行语 发表于 2014-8-27 20:50
因为在data段中定义了dd,dw,dw.第一个dd是4个字节,dw是2个字节。在内存中它们的排列顺序按照定义时排列。 ...


A1 86 01 00 64 00 00 00 ,那对应偏移地址就是
0     1   2  3   4   5   6   7     吗?
【2】里应放是01,【0】里0?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 21:52:29 | 显示全部楼层
还有这个除法规定是被除数高位放到DX里,低位放到AX里,除数放到BX里,这个被除数是186A1H 高位1正好和【2】里低位一样所以要取这个【2】里这个数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 21:53:28 | 显示全部楼层
在内存中应该反着读,第一个字中数据应该是86A1,第二个字的数据是0001。第三个数据应该是0064,第四个数据应该是0000。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 21:56:21 From FishC Mobile | 显示全部楼层
本帖最后由 小靚同学Leon 于 2014-8-27 21:59 编辑
别走别忘 发表于 2014-8-27 21:23
A1 86 01 00 64 00 00 00 ,那对应偏移地址就是
0     1   2  3   4   5   6   7     吗?

理解没错,不过数据在内存中是小端排序的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 21:58:48 | 显示全部楼层
流行语 发表于 2014-8-27 21:53
在内存中应该反着读,第一个字中数据应该是86A1,第二个字的数据是0001。第三个数据应该是0064,第四个数据 ...

还有这个除法规定是被除数高位放到DX里,低位放到AX里,除数放到BX里,这个被除数是186A1H 高位1正好和【2】里低位一样所以要取这个【2】里这个数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 22:04:36 | 显示全部楼层
Ax寄存器中存放186A,dx中存放0001啊。你debug一下,看看内存。这样帮助你理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 22:05:11 | 显示全部楼层
截图
无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 22:13:55 | 显示全部楼层

3.jpg     10进制里100001不是为16进制的1861AH寄存器里只能放下861A那多出1算它的高位不?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 22:24:53 | 显示全部楼层
高位不是放在DX中了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 22:33:38 | 显示全部楼层
流行语 发表于 2014-8-27 22:24
高位不是放在DX中了吗?

正好DW 100  是【2】里高位是1   正好多出来那个1一样的数,这里取【2】里的1和第一行数据被除数的高位1有联系吗?还是【2】只是来说明除数是100
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 23:15:34 | 显示全部楼层
你最好自己调试一下吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-28 08:31:55 | 显示全部楼层
流行语 发表于 2014-8-27 23:15
你最好自己调试一下吧。

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

使用道具 举报

 楼主| 发表于 2014-8-28 09:35:01 | 显示全部楼层
小靚同学Leon 发表于 2014-8-27 20:48
1. 被除数的的形式是dd 100001,是一个双字。它在数据区的地址是ds[0]-ds[3]
2. 除数是形式是dw 100,是一 ...

那我再继续问下,DB 'BASIC!' 每个字母算一个偏移地址包括那个!也算一个,DW 0,0,0,0,0,0 这里一个0就是

两个字节那是两个偏移地址,我就想问 这个引号作用是什么啊?什么情况上用引号,只有定义字母时用吗?还有逗号为什么不用数?是不是只有在‘’单引号里的符号才能当成字节来数?   

要把DB改成DW 'BASIC!'这里字母一个表示两个偏移地址吧?DD‘BASIC!’一个字母表示4个字节就是4个偏移地址。
还有别的什么情况数偏移地址这里还没列举的到的呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-28 10:08:40 | 显示全部楼层
在汇编程序中,用单引号的方式指明数据是以字符的形式给出的,编译器将把它们转化为相应的ASCII码。如果你想显示ASCII码时,可以用单引号。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-28 11:08:30 | 显示全部楼层
流行语 发表于 2014-8-27 20:50
因为在data段中定义了dd,dw,dw.第一个dd是4个字节,dw是2个字节。在内存中它们的排列顺序按照定义时排列。 ...

你好,我才反应过来这个人说的1. 被除数的的形式是dd 100001,是一个双字。它在数据区的地址是ds[0]-ds[3]
2. 除数是形式是dw 100,是一个字。地址是ds[4]-ds[5]
3. 结果的商存在ax,也是一个字。地址是ds[6]-ds[7]
和你说的十六进制 A1 86 01 00 64 00 00 00 ,前四个是被除数(dd)占的字节,不一样吧,那人说的偏移地址第一个4个字节就算了4个偏移地地了,而你是DD第一段占了【0】和【1】偏移地址!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 15:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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