文章目录

  • 1.汇编语言中"[]"的用法
  • 2.mov指令中用到"[]"
  • 3.cmp指令中用到"[]"
  • 4.lea指令
  • 5.test指令

其实"[]"相当于指针,里面的内容是地址而不是数值,即使里面放的是寄存器也一样。在[]内的东东不管是立即数还是寄存器还是表达式, 都相当于高级语言中的变量, 也就是一个地址。真正的操作数是该地址上存放的内容。

1.汇编语言中"[]"的用法

"[]"的用法在"常见问题"已经有所说明,引用如下:

1、push dword ptr [024c1100] 压栈024c1100值的双字
2、cmp eax,[ebp+14] eax-ebp+14的有效值,不保留值,主要看标志位
3、cmp byte ptr [eax],46 字节型eax-46,看标志位
4、lea eax,[edx-02] 把edx-02的有效值(一个地址值)给eax
5、mov ecx,[edx+08] edx+8值作为地址,此地址所指向的值给ecx

2.mov指令中用到"[]"

1、mov [edi], eax ----把eax的值(dword)赋给位于内存地址edi处的值
2、mov [bp-02], dx —把dx的值(word)赋给位于内存地址bp-02处的值
3、mov esi,[BP+14] —把位于内存地址BP+14的dword大小的值移入esi寄存器
4、mov eax, dword ptr [ebp-04]—把位于内存地址ebp-04的dword大小的值移入eax寄存器
5、mov eax, dword ptr[0000003Ah]–把位于内存地址3A的dword大小的值放入eax寄存器
6、mov cl, byte ptr [34h]–把位于内存地址34的byte大小的值放入cl寄存器
7、mov dx, word ptr [3Eh]–把位于内存地址3E的word大小的值放入dx寄存器
8、mov eax,[00403045h] --从内存地址403045读取一个32位的值
9、mov al, byte ptr [eax+ecx]–把位于内存地址eax+ecx的byte大小的值放入al寄存器
综括号"[]"用来从括号间的内存地址处取值,没有括号就只是这个值,寄存器和内存地址也可以。
10、mov cx,[eax]–把位于内存地址eax的word大小的值移入cx寄存器
在mov cx, [eax]中,处理器会先查看eax装有什么值(=内存地址),然后在那个内存地址中有什么值,并把这个word(16位,因为目标-cx-是个16位寄存器)移入cx。

3.cmp指令中用到"[]"

1、cmp dword ptr [ebp-04], 00000007–把位于内存地址ebp-04的dword大小的值与00000007比较
2、cmp byte ptr [si], 00 --把位于内存地址si的byte大小的值与00比较

4.lea指令

一个比较特别的指令是lea, 意思是"装入有效地址"(Load Effective Address), 它的操作数就是地址,所以lea eax,[edx-02],就是把 edx 中的值减去2再送入eax, 而不是把由[edx-02]指明的内存地址上的值放到eax. 其结果是[eax]和[ebx-02]都表示同一个地址。

lea di, [bp-22] ----把bp-22的有效值(=内存地址)给di

5.test指令

test指令中用到"[]"
1–test byte ptr [bx+08FD]
–将位于内存地址bx+08FD处的byte大小的值逻辑与,判断运算结果是否为00

汇编语言-中括号-mov指令-cmp指令-lea指令相关推荐

  1. LEA指令与MOV指令区别

    Tips: LEA指令与MOV指令的区别: ① MOV指令是 数据        传送指令-------传送数据 LEA指令是   有效地址 传送指令-------取偏移地址 ② MOV OPRD1 ...

  2. 【汇编语言】通用数据处理指令——数据传送类指令

    通用数据处理指令--数据传送类指令 文章目录 通用数据处理指令--数据传送类指令 一.MOV指令 1.数据长度 2.传送方式 3.常见错误 二.XCHG指令 1.数据长度 2.空操作指令NOP(no- ...

  3. leaq c 汇编语言,汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...

  4. mov,lea指令的区别

    转载自 渣渣爱学习 最近在学习汇编语言,过程中遇到很多问题,对此在以后的随笔会逐渐更新,这次谈谈mov,lea指令的区别 一,关于有没有加上[]的问题 1,对于mov指令来说: 有没有[]对于变量是无 ...

  5. linux汇编 lea,汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...

  6. 汇编语言 LEA指令 ZZ

    http://blog.chinaunix.net/uid-7390305-id-2057250.html LEA: Load Effectiv Address 该指令有两个操作数.左边是目的操作数, ...

  7. 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

    文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...

  8. 计算机汇编指令mov和mova,汇编语言中mov和lea指令的区别详解

    指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) ...

  9. 汇编 lea指令和mov指令

    lea指令 load effective address, 加载有效地址,可以将有效地址传送到指定的的寄存器.指令形式是从存储器读数据到寄存器, 效果是将存储器的有效地址写入到目的操作数, 简单说, ...

最新文章

  1. mybitas oracle.sql.clob,Oracle使用简单函数
  2. 使用indent格式化代码
  3. mysql 线上加索引_MySQL加索引都经历了什么?
  4. python for selenium 数据驱动测试
  5. sql查询成绩最高分_sql查询各科成绩前三名----详述过程,思路清晰不烧脑!
  6. 分享10个jQuery页面动态编辑插件
  7. MFC入门(一)——MFC是一个编程框架
  8. C语言程序读写文件(文件内存一个十进制数,每读一次数值加一)
  9. php 对象 final,PHP7_OOP_对象重载以及魔术方法_对象遍历_final关键字
  10. python:改良廖雪峰的使用元类自定义ORM
  11. 目前我们再用的即时通讯软件
  12. TypeError: CleanWebpackPlugin is not a constructor
  13. mysql 备份优化_MySQL 备份过程优化
  14. 数据结构 创建顺序栈
  15. Rust : async、await 初探
  16. 基于SVN的SCM简单总结
  17. SpringBoot +esapi 实现防止xss攻击
  18. 云服务器功能检验方法
  19. 【LeetCode】1101. The Earliest Moment When Everyone Become Friends 解题报告 (C++)
  20. MNF最小噪声分离变换

热门文章

  1. [redis命令]HKEYS
  2. 自动洗车车牌识别系统
  3. html百度站内搜索代码,百度站内搜索如何安装 百度站内搜索代码如何部署使用...
  4. 机器学习:分类模型的评估精确率Presicion和召回率Recall
  5. 春节后面试别人的经历总结之二,好岗位分享给还在找工作中的软件开发爱好者们...
  6. 【Xcode使用技巧】Xcode调试方法
  7. 认识大蟒:Python 快速入门 | 周末送书
  8. 在列表中增加元素的三种方法
  9. 2000的笔记本能HTML,我想买一个笔记本,最好是2000--3000元,请高人给个配置单。谢谢,家用的。...
  10. 吞吐量QPS、TPS、HPS