在 80x86 汇编语言中,立即寻址和直接寻址的格式有些相似,区别就在于 [ ] 的有无。

看看下面两行:

MOV   AX,   1000

MOV   AX,  [1000]

前一行,是立即寻址,是把 1000 这个数,送到 AX 中去;

后一行,是直接寻址,是把存储器中 1000 单元中的数,送到 AX 中,(默认使用 DS 为段寄存器)。

上面这些说法,在各种《微机原理》、《汇编语言》的教材、参考书中,都是这样介绍的。

在实践中,使用 DEBUG 软件调试程序时,上述说法也是成立的。

----

但是,(呵呵,就怕出现这个“但是”)

有位网友发现了问题,在使用编译软件(如 MASM 5.0)时:上面写的两行,效果是相同的,都是立即寻址。

开始,做而论道并不相信,怎么可能这样呢 ?

一个没有括号,一个有括号,结果怎么可能相同呢?怎么可能都是立即寻址呢 ?

在网友的催促下,做而论道进行了实验,结果证明,这位网友说的是正确的。

实验的结果如下:

MOV   AX,   1000H     ;是把 1000H 这个数,送到 AX 中去

MOV   AX,  [1000H]   ;也是把 1000H 这个数,送到 AX 中去

MOV   [1000H],  AX   ;软件提示:这是错误的指令,立即数不能当做目的地

结果,真是不可想像。

----

解决方法:网友指出,在括号外边,写上 DS,即加上段超越的标记,才行。

MOV   AX,   1000H           ;是把 1000H 这个数,送到 AX 中去

MOV   AX,  DS: [1000H]   ;加上段超越标记,才是把 1000H 单元中的数,送到 AX

MOV   DS: [1000H],  AX   ;加上段超越的标记,才能把 [1000H] 当成存储单元的地址

经过实验,确实是这样,加上了段超越的标记,才能被编译软件认定为直接寻址。

----

呵呵,即使有了括号,还必须加上段超越的标记,才是直接寻址,否则就是立即寻址。

做而论道翻遍了能找到的书,有老的,也有新出版的,都没有这样的说法,

做而论道认定,这种特殊的要求,是编译软件的 BUG,不是正式的规则,不知道大家以为如何 ?

如果把这种要求,当成正式的规则,那么,所有的书(做而论道看过的),就都得改写了 !!!

关于汇编语言中的立即寻址和直接寻址相关推荐

  1. 简述汇编语言中的标号有什么规定_2020年秋季学期《汇编语言》在线考试 (适用于2020年12月份考试)【答案标准】...

    2020年秋季学期<汇编语言>在线考试 (适用于2020年12月份考试) 共29道题 总分:100分 答题中 剩余答题时间:88 : 06 单选题 问答题 论述题 一.单选题 共20题,4 ...

  2. ARM汇编语言中的程序结构

    在 ARM ( Thumb )汇编语言程序中,以程序段为单位组织代码.段是相对独立的指令或数据序列,具有特定的名称.段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据 ...

  3. 关于汇编语言中的转移指令原理——offset

    offset offset是汇编语言中由编译器进行处理的一种符号. 功能: 取得标号的偏移地址 例题: assume cs:code code segmentstart:mov ax, offset ...

  4. 汇编语言中常用进制数据输出的程序实现

    鲁明珠,赵晓华 (河北省沧州师范专科学校南校区,河北  沧州  061001) [摘   要]在用汇编语言编程时,学生认为将结果数据按不同的数制形式显示出来是一个难点.计算机中的机器数是按二进制形式进 ...

  5. dec在微型计算机中的意思,汇编语言中的DEC是什么意思?

    汇编语言中的DEC是什么意思?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DEC( DECrement ) 减1指令 ...

  6. 汇编语言中间接寻址(间接操作数)与变址寻址(变址操作数)的区别

    间接寻址 间接寻址就是使用寄存器作为指针,控制该寄存器的值来寻到数组中的元素,如: array byte 10h,20h,30h; 定义数组 mov esi, offset array; 取数组首地址 ...

  7. X86汇编语言中的registers相关

    0.写在前面 本文中总结于王爽老师的汇编语言,建议有兴趣的都买一本,以支持王爽老师的辛勤付出.再者,这本书写的确实很nice. 8086CPU共有14个registers:AX, BX, CX, DX ...

  8. 汇编语言中带点/小数点的是什么

    汇编语言第四版中的是[bx+si+idata],表示一个内存单元,偏移地址是(bx)+(si)+idata; 数学化表示:(ax)=((ds)*16+(bx)+(si)+idata). 如下写法也是一 ...

  9. 汇编语言中可以定义变量吗?怎么定义?有局部变量和全局变量之分吗?作用域是什么?

    汇编语言定义变量的格式为 [变量名][变量类型][数值列表] 其中 变量类型有 DB DW DD等,分别表示变量占有的内存空间(依次为1,2,4个字节) 如:A DB 1,2,3,4 就定义了名称为A ...

最新文章

  1. Spring官方都推荐使用的@Transactional事务,为啥我不建议使用!
  2. python线程检测网段脚本!
  3. 新手必看!单片机掉电检测与数据掉电保存方案
  4. 【manacher】Strings in the Pocket
  5. 请求之前~HttpHandler实现媒体文件和图像文件的盗链
  6. python程序员工资-均薪3万?Python程序员就业各岗位薪资一览,你拖后腿了吗?...
  7. MySQL半同步复制 - 优点、缺点、配置
  8. atitit.高性能遍历 文本文件行 attilax总结
  9. 快速格式化从pdf、caj论文中复制的文本格式(正则替换)
  10. 张国荣的25年演艺生涯
  11. 【Python】指定【微信】好友自动发送消息
  12. Windows热键注册原理
  13. 什么是邮箱域名,企业邮箱域名有什么好处?
  14. [Unity]Shader利用Geometry处理实现描边效果
  15. 一文读懂 协方差矩阵
  16. 程序设计思维月模拟题2-CSP201609-3 炉石传说
  17. Unity—实现通过按键控制2D游戏物体的移动
  18. 怎么用迅雷下载百度网盘中的大文件…
  19. Web追踪——CNAME Cloaking
  20. 《linux内核设计分析》 第一周作业

热门文章

  1. 码元速率估计-速率信号法
  2. 软件定义网络(PART 3)
  3. 动听的“教育之歌”,消费金融们的演奏响而不悦耳
  4. 【系统架构】-如何评估软件架构
  5. 计算机史前时代名人堂0-总概
  6. 2007年大连软件出口全国第三 荣获中国软件出口(外包)政府推进奖
  7. Keras Tuner官方教程
  8. mysql注入漏洞检查_漏洞检测:SQL注入漏洞 WASC Threat Classification
  9. Ubuntu命令下卸载软件
  10. 【去后厂村开游戏厅吧】基于pp-tinypose的体感贪吃蛇游戏