跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

汇编中的lea指令,它是怎么玩的?

大家好,我是林译川,今天我们来聊聊汇编语言中的一个小巧精悍的指令——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(
                            

相关文章