回 帖 发 新 帖 刷新版面

主题:LEA指令和 OFFSET操作符有什么区别吗

LEA指令和 OFFSET操作符有什么区别吗  都是取偏移地址  但有什么不同吗

回复列表 (共5个回复)

沙发

应该差不多吧,只是格式不同而已吧
LEA  AX,BUF和MOV AX,OFFSET BUF是等价的

板凳


还是有一点区别的,OFFSET取的是静态地址,LEA既可取静态地址也可取动态地址。不过对于初学者来说,两者可通用。

3 楼

不注意的话有时会给你致命打击噢.
offset 是在程序 编译时 获取偏移地址。
lea    是在程序 运行期间 动态计算后得到偏移地址。
虽然大部分情况可以互用,但有些情况不能,例如操作堆栈变量就不可以用offset,否则会出问题。

4 楼

[quote]不注意的话有时会给你致命打击噢.
offset 是在程序 编译时 获取偏移地址。
lea    是在程序 运行期间 动态计算后得到偏移地址。
虽然大部分情况可以互用,但有些情况不能,例如操作堆栈变量就不可以用offset,否则会出问题。[/quote]

学习了

5 楼

先看一个例题:
   LEA BX,LIST
   MOV BX,OFFSET LIST
可以看出,这两条指令在功能上是相同的,BX寄存器中都可得到地址LIST的值,而且此时MOV指令的执行速度会比LEA指令更快。但是,OFFSET只能与简单的符号地址相连,而不能和诸如LIST[SI]或[SI]等复杂操作数相连.因此,LEA指令在取得访问变量的工具方面是很有用的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册