offset和lea的区别

LittleStar 2003-03-24 09:58:08
mov ax,offset var
lea ax,var
请问上面二条指令有什么区别?
...全文
424 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lk_cool 2003-03-24
  • 打赏
  • 举报
回复
效果是一样
可是你如果定义了一个6字节的字符串
你想从第三个字节开始访问你就不能直接用offset 只能用lea
mov ax, offset var
sub bx,bx
mov bx,2h
add bx,ax
mov ax,bx
这样可以从第三个访问了
用lea
lea ax,[var+2]
就是说用offset只能取到首地址
我就记得这么多
我再给你查查
如有不对请指正!

BigBen 2003-03-24
  • 打赏
  • 举报
回复
效果是一样的吧。
vBin 2003-03-24
  • 打赏
  • 举报
回复
老贴里都有此类问题的回复啦!
而且回复的特别好,请自己查询一下!
xuanyuanhaobo 2003-03-24
  • 打赏
  • 举报
回复
区别大得很!

offset是伪指令!
lea是指令!

正如solrac(笨鸟先飞)所说:offset是编译器计算
所以能用offset时就尽量用offset
ahalf 2003-03-24
  • 打赏
  • 举报
回复
lea可以用任何可有的寻址方式
solrac 2003-03-24
  • 打赏
  • 举报
回复
区别在于:
mov ...offset是编译器计算,lea是执行时实现的.
所以指令的时钟周期不一样,后者多一个指令时钟周期.

lea的源操作可以是寄存器
offset只能与简单的符号的之相连,
不能和诸如list[si]或[si]等复杂操作数相连!

小粘人 2003-03-24
  • 打赏
  • 举报
回复
我不记得有什么不同了,反正我知道LEA的作用范围比那个要广一些,所以我只用LEA
shore 2003-03-24
  • 打赏
  • 举报
回复
楼上说的有点出入,offset var+2也可。offset和lea没有区别,只是用lea比用offset多了一个字节。

21,497

社区成员

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

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