关于lea命令和offset的区别

指令“LEA BX BUFFER”和“MOV BX, OFFSET BUFFER”的执行效果是一样的吗? 指令“LEA BX,[BX+200]”和“MOV BX,OFFSET [BX+200]”二者都正确吗? 还有其他需注意的地方也请指出 万分感谢

lea是真正的汇编指令,它对应于一个机器码,而offset只是一个给汇编程序的关键字,它要求汇编程序在汇编时算出相应的地址偏移,也就是说它对应的操作数必须是一个汇编程序知道的变量或者标量!而lea却可以算出任何形式的地址偏移!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-10-05
第1问,效果一样,但效率不一样。因为offset作为伪指令,在汇编的过程中就有了地址,而lea在指令执行的过程中由地址加法器给出地址,所以offset的速度稍快。但lea作为指令执行的灵活性要高于offset。
第2问,后者错误,因为offset作为伪指令的运算符,其后的操作数必须是变量名,而【BX+200】不是变量名的形式。
最后,汇编格式的正确与否,完全可以自己在机器上通过编程来验证。
相似回答