大家好,我是林译川,今天我们来聊聊汇编语言中的一个小巧精悍的指令——lea。你可能经常听到这个词,但到底它是干什么的呢?别急,今天我们就来一探究竟。
lea,全称是Load Effective Address,翻译过来就是“装入有效地址”。简单来说,这个指令的作用就是获取一个内存地址,并将其存储到一个寄存器中。听起来是不是很简单?但别小看了它,lea指令在汇编编程中可是有着举足轻重的地位。
lea指令的几种用法
第一种用法:lea eax,[addr]
这个指令将表达式addr的值放入eax寄存器。举个例子,lea eax,[401000h];这条指令会将值401000h写入eax寄存器中。注意,这里的addr是一个精指针,所以这条指令和mov eax,401000h是等价的。
第二种用法:lea eax,dword ptr [ebx]
这条指令将ebx的值赋值给eax。简单来说,就是将ebx指向的地址的值赋给eax。
第三种用法:lea eax,c;其中c为一个int型的变量
这条语句的意思是把c的地址赋值给eax。
实战演练
#include
using namespace std;
int main()
{
int a=400000, b = 5;
int c, d;
__asm {
mov eax, 2
lea ebx, dword ptr[eax]
mov c, ebx;
lea ebx, c;
mov eax, [ebx];
mov d, eax;
}
printf(
