一般说来,加方括号 [ ] 表示一种间接的取操作数方式,有点类似于C语言中的指针概念.
第一条指令 ADD AL ,[SI] 中,[SI] 表示寄存器间接寻址.
也就是说,与AL中内容相加的加数,不是SI寄存器的内容,而是以SI的内容作为地址指针的内存操作数.
假设SI的内容是1234H,这条加法指令,不是将1234H加到AL里(也加不了,数据类型不对),而是以1234H作为地址,从内存的数据段(DS所指)中,段内偏移地址为1234H的那个内存单元中取出一个字节的数据来,加到AL中.
同样的,第二条指令 MOV [20H],AL,是将AL中的内容传送到内存里的一个单元中去.这个单元的有效地址就是[20H].
这里,加了方括号的20H,不是运算所用的数据,而是数据的地址.
===================
对问题补充的回复:
AL是不可能加方括号的.
8086汇编中,能加方括号的只有4个寄存器:SI,DI,BX,BP
常数也可以加方括号,比如 [020H]
另外,变量名可以加方括号,但与上面两种情况不同,加了方括号的变量名,意义不变.
至于方括号内,可以出现BX+DI,SI+2这样的表达式,这是一些不同的寻址方式.
SI 是寄存器寻址
[SI]是寄存器间接寻址
[SI+2]是相对的寄存器间接寻址,又称直接变址寻址,它也可以写成2[SI]这样的形式
[BX+SI]是基址变址寻址,也可写成[BX][SI]
[BX+SI+20H]是相对的基址变址寻址,可以写成20H[BX][SI]之类的形式,将20H换成变量名也可以.

转载于:https://www.cnblogs.com/FengZeng666/p/9272051.html

汇编中寄存器加[]的意思相关推荐

  1. linux汇编push,在x86汇编中寄存器上使用的push / pop指令的功能是什么?

    在阅读有关汇编程序的文章时,我经常遇到人们在写文件时他们推送处理器的某个寄存器并稍后再次弹出它以恢复它之前的状态. 怎么能推一个寄存器? 它在哪里推? 为什么需要这个? 这可归结为单处理器指令还是更复 ...

  2. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  3. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)...

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  4. 大脸猫讲逆向之ARM汇编中PC寄存器详解

    i春秋作家:v4ever 近日,在研究一些开源native层hook方案的实现方式,并据此对ARM汇编层中容易出问题的一些地方做了整理,以便后来人能有从中有所收获并应用于现实问题中.当然,文中许多介绍 ...

  5. linux内核编程memcpy,memcpy Linux内核实现引发的思考:为什么嵌入式汇编中不用指定段寄存器...

    memcpy Linux内核实现引发的思考:为什么嵌入式汇编中不用指定段寄存器 (2013-05-18 18:42:25) 标签: 内核 汇编 指定 杂谈 memcpy Linux内核实现引发的思考: ...

  6. 单寄存器加载与存储指令

    这种指令用于把单一的数  传入或者传出一个寄存器.支持的数据类型有字(32 位 ) .半字(16 位)  和字节.常用的单寄存器加载与存储指令包括: LDR/STR            字数据加载/ ...

  7. 无符号数、有符号数、补码在汇编中的运用及相关注意事项

    1.原码.反码.补码知识的复习: 三者的最高位均为符号位.我以前一直没弄明白的是为何8位补码的表示范围是-128~127,今天查阅了相关资料,于此记下. 仍然以8位为例: 原码的表示范围:-127~- ...

  8. 逆向知识第十讲,循环在汇编中的表现形式,以及代码还原

    逆向知识第十讲,循环在汇编中的表现形式,以及代码还原 一丶do While在汇编中的表现形式 1.1高级代码: #include "stdafx.h"int main(int ar ...

  9. 逆向知识第七讲,三目运算符在汇编中的表现形式,以及编译器优化方式

    一丶编译器优化方式 首先说一下编译器优化方式. 1.常量折叠 2.常量传播 3.复写传播 4.公共表达式 5.去掉不可达到分支 6.顺序代替分支 7.数学变化 8.代码外提 9.减少变量. 10 强度 ...

最新文章

  1. xmind工具软件(相关)
  2. 5、VTK在图像处理中的应用
  3. 佳明245接收微信消息
  4. Android中Cursor类的概念和用法
  5. 数据库:MySQL中,当update修改数据与原数据相同时会再次执行吗?
  6. LeetCode 1891. 割绳子(二分查找)
  7. 2012-6-19 win7环境Jooma建站手记-解决问题
  8. 四川第七届 C Censor (字符串哈希)
  9. 【C语言】常用字符(string库函数,ctype库函数),字符数组的输入与处理)
  10. Pytorch损失函数BCELoss,BCEWithLogitsLoss
  11. 1-5Badboy添加检查点和参数化
  12. IntelliJ IDEA开发工具插件GsonFormat插件安装使用
  13. dev万能头文件_Dev c++ 支持bits/stdc++.h万能头文件吗
  14. 安川机器人如何注释化指令_关于安川机器人I/O注释导入的报告
  15. 985硕士,入职八个月被通知裁员,领导哭着谈话,同事疯狂帮忙,但还是走了!...
  16. 键盘钢琴html代码,键盘钢琴KeyboardPiano(源代码)
  17. Verilog 实现千兆网UDP协议 基于88E1111--板级验证--增加ARP
  18. 19款Windows实用软件推荐,满满的干货,总有一款是你必备的
  19. 写在清明(2007年)
  20. android 地图定位失败,Android 高德地图定位遇到的异常

热门文章

  1. linux mysql 乱码怎么解决_MySQL_linux中解决mysql中文乱码方法,改默认编码:/etc/init.d/my - phpStudy...
  2. 程序员笔记|常见的Spring异常处理
  3. Javascript学习总结 - JS基础系列三
  4. string和char数组
  5. JAVA并发,线程异常捕获
  6. linux安装软件方法汇总
  7. 今天装了个GPS时钟
  8. QT5 串口收发实例代码
  9. 项目管理工程师:第二章信息系统服务管理
  10. 第1章 ASP.NET 3.5与开发工具