当前位置: 首页 > ai >正文

汇编指令lea

彻底弄懂汇编指令lea
lea 是地址传送指令,在汇编程序中很常见。
其功能就是把一个存储器操作数的地址传入通用寄存器。(一个十六位通用寄存器)
     例如:lea ax,[bx][si]
     EA(偏移量)=(bx)+(si)
其实就是将后者的偏移地址 送人通用寄存器中。
为什么要这样做呢?
          建立一个地址指针呗!(用C语言的思维像是这样的,不过汇编里是没有指针的概念的,指针,寻址呗!)

让我们来反汇编一段简单的C程序:

 
#include<stdio.h>
void main()
{
int x1=11;
int *p1;
p1=&x1;
printf("%d",*p1);
}

在VC中对应的汇编代码:


看得出来,变量x1对应dword ptr [ebp-4]

int *p1;
p1=&x1;
对应
lea eax,[ebp-4]
mov dword ptr [ebp-8],eax
将x1的地址存放在dword ptr [ebp-8]中。

而printf("%d",*p1);使用指针变量来输出。
对应
mov ecx,dword ptr [ebp-8]
mov edx,dword ptr [ecx]

dword ptr [ebp-8] 中已储存了变量x1的偏移地址。
先将这个地址放入通用寄存器ecx中。
而后借助
dword ptr [ecx] 找到x1。

如果不用指针:
#include<stdio.h>
void main()
{
int x1=11;
printf("%d",x1);
}

对应的汇编代码:


相比较着看,其意义就不言而喻了吧!
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 
http://www.xdnf.cn/news/11296.html

相关文章:

  • 关于android的中文文档
  • 从NETSARANG官网下载 Xshell/Xftp个人免费版(所有版本)
  • 超实用 WSUS服务器详细配置部署
  • jQuery2 开发秘籍(五)
  • 【算法精髓】银行家算法
  • BI可视化分析之Pentaho
  • 推荐系统的基本原理与算法解密
  • TLB及其工作原理
  • C# 委托和事件 详解
  • 一款免费、简单、直观的数据库设计工具和 SQL 生成器,在浏览器中直接使用(附源码)
  • BPR(Bayesian Personalized Ranking)算法(1)
  • 6种方法关闭Win10系统的自动更新
  • 攻防世界web新手关之xff_referer
  • JConsole:Java监视与管理控制台
  • 逆向与反汇编实战(一)--PEiD分析复现
  • RIP的基本原理及配置
  • Unity官方本地化插件localization
  • 【easyui】之DataGrid数据显示
  • Java基础知识总结(超详细整理),你会的还只有初级工程师的技术吗
  • 基于CMOS技术,CMOS工艺等,CMOS到底是个啥?
  • Intel IPP图像库手册函数概述
  • 【Qt】界面定制艺术:光标(cursor)、字体(font)、提示(toolTip)、焦点(focusPolicy)与样式表(styleSheet)的深度探索
  • MCU最强科普总结~
  • RecyclerView完全解读
  • 100个linux系统的常用命令【建议收藏】
  • Java学习之JavaWeb篇
  • 利用python进行数据分析——使用groupby机制对pandas对象类的数据进行聚合与分组操作
  • “权限”用英语该用哪个?
  • 学了那么久的java你还不明白HelloWorld的原理吗?速看!
  • 强!推荐一款自动化神器Autolt:不再重复工作