首页 > 编程知识 正文

汇编中的lea指令,汇编语言指令用法

时间:2023-05-05 18:04:53 阅读:239956 作者:182

加载有效地址(load effective address)指令就是lea,他的指令形式就是从内存读取数据到寄存器,但是实际上他没有引用内存,而是将有效地址写入到目的的操作数,就像是C语言地址操作符&一样的功能,可以获取数据的地址。在实际使用中他有两种使用方式。

1.lea指令获取偏移地址 

assume cs:codecode segmentstart:mov byte ptr ds:[98H],12hlea bx,ds:[98H]mov ax,4c00hint 21code endsend start

结果

lea指令获取到了数据的偏移地址

2.x86-64处理器支持多种操作数格式,利用这种功能可以简单实现普通的算术操作,下面演示一下

long exchange(long x,long y,long z){long t = x + 4 *y +12 *z;return 0;}

反汇编

long t = x + 4 *y +12 *z;00971C28 mov eax,dword ptr [y] 00971C2B mov ecx,dword ptr [x] 00971C2E lea edx,[ecx+eax*4] 00971C31 imul eax,dword ptr [z],0Ch 00971C35 add edx,eax 00971C37 mov dword ptr [t],edx

可以看到出现了lea         edx,[ecx+eax*4]  ,就是说把ecx+eax*4算出来直接把结果传递给edx,不用繁琐的imul与add指令配合。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。