汇编:lea指令学习
加载有效地址(load effective address)指令就是lea,他的指令形式就是从内存读取数据到寄存器,但是实际上他没有引用内存,而是将有效地址写入到目的的操作数,就像是C语言地址操作符&一样的功能,可以获取数据的地址。在实际使用中他有两种使用方式。
1.lea指令获取偏移地址
assume cs:code
code segment
start:
mov byte ptr ds:[98H],12h
lea bx,ds:[98H]
mov ax,4c00h
int 21
code ends
end 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指令配合。
汇编:lea指令学习相关推荐
- 汇编lea 指令的作用
LEA指令的功能是将源操作数.即存储单元的有效地址(偏移地址)传送到目的操作数. 示例LEA BX,[BX+SI+0F54H]指令中,[BX+SI+0F54H]采用相对基址变址的寻址方式表达存储单元, ...
- 汇编 lea指令和mov指令
lea指令 load effective address, 加载有效地址,可以将有效地址传送到指定的的寄存器.指令形式是从存储器读数据到寄存器, 效果是将存储器的有效地址写入到目的操作数, 简单说, ...
- 8086汇编LEA指令总结
1.格式: LEA OPRD1,OPRD2 (本指令对标志位无影响) OPRD1 为目的操作数,可为任意一个16位的通用寄存器.除段寄存器外 OPRD2 为源操作数,可为变量名.标号或地址表达式.除 ...
- 汇编lea 指令与 mov 指令
比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub ...
- 汇编LAHF指令学习 - 使用emu8086
LAHF 用于将标志寄存器的低八位送入AH,即将标志寄存器FLAGS中的SF.ZF.AF.PF.CF五个标志位分别传送到累加器AH的对应位,八位中有三位是无效的: 使用emu8086看一下: ...
- leaq c 汇编语言,汇编 LEA 指令
Opencl 并行求和 上周尝试用opencl求极大值,在网上查到大多是求和,所谓的reduction算法.不过思路是一样的. CPP: ; unsigned ; ; ; int nGroup = n ...
- 汇编指令学习(MOV,MOVSX,MOVZX,LEA,XCHG)
一.MOV指令 1.将十六进制0x1234数值,赋值给eax寄存器 mov eax,0x1234 2.将十六进制0x123数值,赋值给内存地址为ebx mov dword [ebx],0x123 3. ...
- 计算机汇编指令mov和mova,汇编语言中mov和lea指令的区别详解
指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) ...
- linux汇编 lea,汇编语言lea指令使用方法解析
这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...
最新文章
- 某SAP项目进销存报表优化小记
- Linux shell编程与实践(五)之shell程序中循环结构
- php 关于文件的一些封装好的函数
- Scrollview+ListView冲突解决
- bus.js非父子组件之间通讯
- Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(六)后端改造
- Linux环境下增加swap交换分区
- python3安装json库-python库json快速入门
- 程序员到底是一种什么样的存在?
- 利用汇编与机器码定位崩溃点
- Unicode 属性类
- WCF 之 数据契约
- d3.js——饼状图
- 深度学习在音乐信息检索(MIR)方向的应用介绍(上)
- Java图形用户界面(容器)
- selenium模块
- The project uses Gradle 4.4 which is incompatible with Java 11 or newer.
- ubuntu 向日葵连接后即断开解决办法
- Apollo配置说明
- wireless communications in smart grid 2
热门文章
- linux切割文件一半命令,Linux系统下切割文件的split命令用法
- 思科网络安全 第十章测验答案
- matlab中文乱码问题
- 关于聚类问题的算法python代码实现-K-均值聚类方法
- 鹤岗房价为啥这么低?哪些城市也可以5万买一套房
- php trait instanceof,Hyperf 验证 trait
- 按图索骥|到底网络空间安全、网络安全、信息安全之间有啥区别?
- egg框架各个上下文中的this中有些啥?
- 如何修改服务器ttl值,TTL值怎么改(TTL值最大值和默认值是多少)
- 做为一个中国的ITer,你感到耻辱吗?看CSDN的“软件中国2006风云榜之10大最具创新性技术”...