分享

LEA vs OFFSET

 离魂异客 2011-12-21

LEA AX,[BX+SI] 和MOV AX,OFFSET [BX+SI]的区别


"想要"实现的都是取偏移地址,就是OFFSET是伪指令,编译时完成,LEA是指令,CPU运行时完成取偏移地址。
PS
:LEA与OFFSET区别:
1、LEA是汇编指令,对应一个机器码,OFFSET是伪指令,没有专门的机器码;
2、LEA可以使用各种存储器寻址方式,OFFSET只能回送变量或标号的偏移地址;
3、LEA在运行时才能确定操作数的地址,OFFSET在编译时由汇编程序计算出操作数的地址并作为立即数回送给指令(也就是把立即数放入编译出的机器指令中);
4、LEA用来确定局部变量的地址,OFFSET用来确定全局变量的地址,因为全局变量的地址在汇编时就已经确定,而局部变量地址受运行环境的影响,是不确定的,只能在程序运行时计算得出。
从上面的结论可以看出后者,就是MOV AX,OFFSET [BX+SI]是错误的.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多