注册 登录
编程论坛 汇编论坛

请问lea和offset的区别

TE20 发布于 2007-05-21 22:53, 6519 次点击
1.lea和offset两者有什么区别啊

2.大家自己汇编的时候,lea和offset这两者怎么选择的啊



今天我又复习了下前面所学的,看到这个lea和offset时,感觉有些知道意思了,书上说:“offset只能取得用数据定义伪指令定义的变量的有效地址,而不能去一般操作数的有效地址。”是不是就是说mov ax,offset 后面只能跟变量varw,而不能跟bx,cx,dx等一般操作数的有效地址啊,请高手指点下,是不是这样啊

[此贴子已经被作者于2007-8-7 20:47:09编辑过]

22 回复
#2
xfilesliuli2007-05-21 23:29
可以自己看下书看2者的区别
至于选择看个人喜好
我也是刚刚开始学汇编,
但感觉OFFSET用的很少
一般调用2,9,10调用的时候用LEA,再就是LEA是把某一缓存区的EA送给一个寄存器
OFFSET也可以起到同样的作业,不过
#3
余来2007-05-22 09:31
一个是编译的宏处理,一个是指令,两者完全不同,但功能类似。
#4
TE202007-05-22 11:58
也许,我先应接着学下去,等回头看,可能两者能分的清晰点,呵呵
谢谢楼上的两位
#5
爱以走远2007-05-22 13:45
比如 用lea取地址时
如果用mov指令来完成 就要加offset
#6
I喜欢c2007-05-23 09:52
lea bx,abc
mov bx,offset abc

#7
TE202007-05-27 18:06
不知楼上的兄弟 这个是啥意思的啊 呵呵
#8
爱以走远2007-05-27 18:28

就是两条语句相等
#9
TE202007-05-27 18:53
我知道一样,就是不知平时编程该怎么选择这两个,,,哪种情况用lea,哪种情况又是用offset
#10
爱以走远2007-05-27 18:58
都可以   
#11
g198710012007-06-04 00:21
下面的错误
lea bx,si
mov bx,offset si

offset跟内存有关,具体的不会说-.-

lea bx,gxg
mov bx,offset gxg
都对
#12
yubin5552007-06-09 22:07
lea返回的是有效地址,offset返回的是偏移
#13
曾小2007-06-14 09:18
偏移地址就是有效地址!
#14
unboiled2007-06-28 19:17
offset是编译时就运行,lea是CPU执行时实现的.
所以指令的时钟周期不一样,lea多了一个指令时钟周期
#15
herbert_19872007-06-28 23:04
呵呵, 大家都说得很好!
#16
chaogang2007-06-29 09:43
lea 取出的地址 放在规定的放地址的那几个寄存器,像 SI DI BP 等等
OFFSET 取出地址可以放在原本不是 当地址的寄存器. 像 CX,DX 等等
两个 功能 很像,关键就是 需要用哪个是用哪个,其他不是很 特别的地方,两个可以等价用
#17
杜鹃2007-07-02 09:10
学习了!
#18
TE202007-08-07 20:47

今天我又复习了下前面所学的,看到这个lea和offset时,感觉有些知道意思了,书上说:“offset只能取得用数据定义伪指令定义的变量的有效地址,而不能去一般操作数的有效地址。”是不是就是说mov ax,offset 后面只能跟变量varw,而不能跟bx,cx,dx等一般操作数的有效地址啊,请高手指点下,是不是这样啊

[此贴子已经被作者于2007-8-7 20:47:29编辑过]

#19
菜鸟上路2007-08-07 21:53
同意LS的
#20
DecoderEx_2007-08-10 17:26

offset后面不能跟寄存器,只能跟伪指令定义的操作数,如果offset后面跟的是局部变量他就错了
str(局部变量)
lea bx,str(mov offset错)
在别的传地址上都是一样的
#21
TE202007-08-10 18:44

恩,同意。。。

#22
hkbyest2007-08-11 17:28

LEA可以取间接操作数的地址,offset不行

#23
曾小2007-08-11 20:25
1