标题:[求助]初学汇编 请教关于OFFSET指令的问题
只看楼主
火奴
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-24
 问题点数:0 回复次数:10 
[求助]初学汇编 请教关于OFFSET指令的问题

我学习的是intel的汇编

例:.data
aa byte ?
.code
mov EAX,OFFSET aa

OFFSET 指令返回的是数据标号的偏移地址,那么EAX 得到的到底是物理地址还是一个相对数据段的偏移地址?如果是偏移地址,后面编译的时候怎么知道EAX中的地址是数据段的偏移地址?

请指教

搜索更多相关主题的帖子: OFFSET 指令 初学 汇编 
2006-10-24 19:48
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
EAX得到的是偏移地址。编译过程一般要进行多次扫描,第一次扫描时要计算各条指令所需的字节数并计算标号所代表的地址,后面的编译就将aa标号所处的地址数值替换OFFSET aa。

活到老,学到老! http://www. E-mail:hu-jj@
2006-10-24 21:47
火奴
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-24
得分:0 
以下是引用hu9jj在2006-10-24 21:47:24的发言:
EAX得到的是偏移地址。编译过程一般要进行多次扫描,第一次扫描时要计算各条指令所需的字节数并计算标号所代表的地址,后面的编译就将aa标号所处的地址数值替换OFFSET aa。

谢谢楼上的回答,但经过计算以后aa所代表的地址应该是物理地址,那么在用aa所处的地址数值替换了 OFFSET aa以后,EAX是如何得到偏移地址的值呢?还是在第一遍扫描的时候就先把偏移地址移交给EAX?

2006-10-24 23:54
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
offset aa得到的本身就是偏移地址,其基址应该在CS中。

活到老,学到老! http://www. E-mail:hu-jj@
2006-10-25 20:06
火奴
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-24
得分:0 
aa 是数据的标号,应该存在数据段里面,基址在CS中的话怎么可能得到正确的 aa里面的值呢?
2006-10-25 20:35
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
你说的对,基址应该在DS中,是我没注意看数据段和码段的标记。

活到老,学到老! http://www. E-mail:hu-jj@
2006-10-26 21:30
火奴
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-24
得分:0 

好 谢谢

2006-10-29 18:47
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
得分:0 

我想请教各位:mov EAX,OFFSET aa 得到的是偏移地址所指向单元中的内容吧!而不是偏移地址!!!
如果是用下面的指令:LEA EAX,aa 就是得到偏移地址!!!


2006-11-18 14:31
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
以下是引用曾小在2006-11-18 14:31:48的发言:

我想请教各位:mov EAX,OFFSET aa 得到的是偏移地址所指向单元中的内容吧!而不是偏移地址!!!
如果是用下面的指令:LEA EAX,aa 就是得到偏移地址!!!

第二个是对的,第一个是错的


2006-11-18 14:47
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
得分:0 

"第二个是对的,第一个是错的"是什么意思啊?
是说 我的发言有问题吗?
麻烦说清楚哦!


2006-11-20 13:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-98447-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.257679 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved