LEA和OFFSET的区别是什么?

forture 2004-01-02 04:24:59
RT
...全文
1978 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cynic0916 2004-07-16
  • 打赏
  • 举报
回复
在运算速度这么快的情况下,时间已经不那么明显了
我看楼上的说的有理,现在或许也就这点不同了吧
prettyladys 2004-07-16
  • 打赏
  • 举报
回复
OFFSET 首先是伪指令.....其次...LEA 可以做到OFFEST 的所有功能以外.还可以寄存器送


LEA AX,BX 对的。
MOV AX,OFFSET BX 是错的


longsong 2004-01-20
  • 打赏
  • 举报
回复
现在的CPU对执行lea和mov offset指令的速度应该是一样快了。
jrjj 2004-01-02
  • 打赏
  • 举报
回复
lea可以用基址、变址...寻址,offset则只能用mem,offset是由汇编程序实现,而lea是在程序运行时由指令实现,所以在程序中才可得到的地址时只能用lea,如果在汇编时可得到地址则用offset,毕竟指令短,又是由汇编程序操作,程序执行时可直接使用得到的地址。
csdsjkk 2004-01-02
  • 打赏
  • 举报
回复
一般来说,
mov reg,offset xxx 比 lea reg,xxx 的指令长度少一个字节,且快一个时钟,
因此,应优先选用 mov offset 指令,
lea的优势真正体现在这个方面:
计算两个寄存器的和并放入另一个寄存器中
比如
lea ax,[bx+di+100]

mov ax,bx
add ax,di
add ax,100
高效得多
fuzq 2004-01-02
  • 打赏
  • 举报
回复
两个都是传地址
正如易水所说,lea使用更加灵活
whoho 2004-01-02
  • 打赏
  • 举报
回复


回复人: sundytu(晶晶) ( ) 信誉:100 2004-01-02 15:25:00 得分:0


都说得不对啊。
lea是真正的汇编指令,它对应于一个机器码,而offset只是一个给汇编程序的关键字,它要求汇编程序在汇编时算出相应的地址偏移,也就是说它对应的操作数必须是一个汇编程序知道的变量或者标量!而lea却可以算出任何形式的地址偏移!这才是它们真正的区别哟。


=>offset的确不是指令,mov offset汇编前会被替换成真正的mov,同意
但别人怎么错了?:)
Areslee 2004-01-02
  • 打赏
  • 举报
回复
LEA的使用更加灵活,比如可以这样用:
lea BX,[Value+DI]
bullet2003 2004-01-02
  • 打赏
  • 举报
回复
楼上说的是不是指offset是masm的伪指令?
sunny 2004-01-02
  • 打赏
  • 举报
回复
都说得不对啊。
lea是真正的汇编指令,它对应于一个机器码,而offset只是一个给汇编程序的关键字,它要求汇编程序在汇编时算出相应的地址偏移,也就是说它对应的操作数必须是一个汇编程序知道的变量或者标量!而lea却可以算出任何形式的地址偏移!这才是它们真正的区别哟。
csdsjkk 2004-01-02
  • 打赏
  • 举报
回复
"lea ax, str ;如果用mov offset出错"

局部变量str在汇编里是象这样的:
[bp-xxxx]
当然不能写成
mov ax,offset [bp-xxxx] ;语法错
因此,必须写成
lea ax,[bp-xxxx] ,即 lea ax,str
whoho 2004-01-02
  • 打赏
  • 举报
回复
例如嵌入汇编中
#inlude <stdio.h>
int main()
{
int u=3;
char *str="%d";
__asm{
push u
lea ax, str ;如果用mov offset出错
call _printf
add esp, 8
}

whoho 2004-01-02
  • 打赏
  • 举报
回复
例如嵌入汇编中
#inlude <stdio.h>
int main()
{
int u=3;
char *str="%d";
__asm{
push u
lea ax, str ;如果用mov offset出错
call _printf


21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧