ar db "Defference $"
有什么区别
mov dx,offset ar
and
lea dx,ar
我认为两者都在做相同的工作,但这两者有什么区别
在此用例中,LEA 和 MOV 执行相同的操作。如果您想以更复杂的方式计算地址,LEA 比 MOV 更强大。
举例来说,假设您想要获取数组中第 n 个字符的地址,并且 n 存储在 bx 中。使用 MOV,您必须编写以下两条指令:
Mov dx, offset ar
add dx, bx
使用 lea,您只需一条指令即可完成:
lea dx, [ar + bx]
这里要考虑的另一件事是:add dx,bx
指令会改变CPU的状态标志。添加完成在lea dx, [ar + bx]
另一方面,指令不会以任何方式更改标志,因为它不被视为算术指令。
如果您想在进行一些简单计算时保留标志(地址计算非常常见),这有时会很有帮助。存储和恢复标志寄存器是可行的,但操作很慢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)