立即寻址就是指令当中自带数据,直接读取,最快;
直接寻址就是指令中存放的是地址,直接解析这个地址;
间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。

总共有14个16位寄存器,8个8位寄存器

通用寄存器:

数据寄存器:

AH(8位)  AL(8位)  AX(16位)   (AX和AL又称累加器)

BH(8位)  BL(8位)  BX(16位)   (BX又称基址寄存器,唯一作为存储器指针使用寄存器)

CH(8位)  CL(8位)  CX(16位)   (CX用于字符串操作,控制循环的次数,CL用于移位)

DH(8位)  DL(8位)  DX(16位)   (DX一般用来做32位的乘除法时存放被除数或者保留余数)

指针寄存器:

SP 堆栈指针 (存放栈顶地址)

BP 基址指针 (存放堆栈基址偏移)

变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,

即作为存储器(短)指针使用。作为通用寄存器,它们可以保存16位算术逻辑运算中的操

作数和运算结果,有时运算结果就是需要的存储单元地址的偏移.

SI 源地址  (源变址寄存器)

DI 目的地址 (目的变址寄存器)

控制寄存器:

IP 指令指针

FLAG 标志寄存器

 ① 进位标志 CF,记录运算时最高有效位产生的进位值。

② 符号标志 SF,记录运算结果的符号。结果为负时置1,否则置0。

③ 零标志  ZF,运算结果为0时ZF位置1,否则置0。

④ 溢出标志 OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。

⑤ 辅助进位标志 AF,记录运算时第3位(半个字节)产生的进位值。

⑥ 奇偶标志 PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。

段寄存器

CS 代码段  IP

DS 数据段

SS 堆栈段  SP BP

ES 附加段

七种寻址方式:

1、立即寻址方式:

操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。

这种操作数成为立即数。立即数可以是8位的,也可以是16位的。

例如:

指令: MOV AX,1234H

则: AX = 1234H

2、寄存器寻址方式:

操作数在CPU内部的寄存器中,指令指定寄存器号。

对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。

对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。

这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数

因而可以取得较高的运算数度。

3、直接寻址方式:

操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)

注:操作数一般存放在数据段

所以操作数的地址由DS加上指令中直接给出的16位偏移得到。如果采用

段超越前缀,则操作数也可含在数据段外的其他段中。

例如:

MOV AX,[8054]

如(DS) = 2000H,

则执行结果为(AX) = 3050H

(物理地址=20000+8054=28054H)

28054H里的内容为3050H

在汇编语言指令中,可以用符号地址代替数值地址

如:MOV AX,VALUE

此时VALUE为存放操作数单元的符号地址。

如写成:MOV AX,[VALUE]也是可以的,两者是等效的。

如VALUE在附加段中,则应指定段超越前缀如下:

MOV AX,ES:VALUE 或 MOV AX,ES:[VALUE]

4、寄存器间接寻址方式:

操作数在寄存器中,操作数有效地址在SI、DI、BX、BP

这四个寄存器之一中。在一般情况下,如果有效地址在

SI、DI和BX中,则以DS段寄存器中的内容为段值。如果

有效地址在BP中,则以SS段寄存器中的内容为段值

例如:

MOV AX,[SI]

如果(DS) = 5000H (SI) = 1234H

则物理地址 =  50000 + 1234 = 51234H

51234H地址中的内容为:6789H

执行该指令后,(AX) = 6789H

5、寄存器相对寻址方式:

操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)

或变址寄存器(SI、DI)的内容加上指令中给定的8位或16位位移量之和

BX  8位 位移量

EA(有效地址) =  BP  +

SI  16位 位移量

DI

在一般情况下,如果SI、DI、或BX中的内容作为有效地址的一部分,那么

引用的段寄存器是DS;如果BP中的内容作为有效地址的一部分,那么引用的

段寄存器是SS。

物理地址 = 16d × (DS) + (BX) + 8

或(SI)或16位位移量

或(DI)

物理地址 = 16d × (SS) + (BP) + 8位位移量

或16位位移量

在指令中给定的8位或16位位移量采用补码形式表示。在计算有效地址时,如

位移量是8位,则被带符号扩展成16位。

例如:

MOV AX,[DI+1223H]

假设,(DS) = 5000H,(DI) = 3678H

则物理地址 = 50000 + 3678 + 1233 = 5489BH

5489BH地址中的内容:55AAH

执行该指令后AX = 55AAH

下面指令中,源操作数采用寄存器相对寻址,引用的段寄存器是SS: MOV BX,[BP-4]

下面指令中,目的操作数采用寄存器相对寻址,引用的段寄存器是ES: MOV ES:[BX+5],AL

指令:MOV AX,[SI+3]与MOV AX,3[SI]是等价的

6、基址加变址寻址方式:

操作数在寄存器中,操作数的有效地址由:

基址寄存器之一的内容与变址寄存器之一的内容相加

BX   SI

即: EA =    +

BP   DI

在一般情况下,如果BP之内容作为有效地址的一部分,则以SS之内容为段值,否则已DS

为段值。

例如:

MOV AX,[BX][DI]

如:(DS)=2100H,

(BX)=0158H,

(DI)=10A5H

则EA=0158 + 10A5 = 11FD

物理地址=21000 + 11FD = 221FDH

221FDH地址中的内容:1234H

执行该指令后AX = 1234H

下面指令中,目的操作数采用基址加变址寻址,

引用的段寄存器是DS: MOV DS:[BP+SI],AL

下面指令中,源操作数采用基址加变址寻址,

引用的段寄存器ES: MOV AX,ES:[BX+SI]

这种寻址方式使用与数组或表格处理。用基址寄存器存放数组首地址,而用变地寄存器

来定位数组中的各元素,或反之。由于两个寄存器都可改变,所以能更加灵活地访问数

组或表格中的元素。

下面的两种表示方法是等价的:

MOV AX,[BX+DI]

MOV AX,[DI][BX]

7、相对基址加变址寻址方式:

操作数在存储器中,操作数的有效地址由于基址寄存器之一的内容与变址寄存器之一的

内容及指令中给定的8位或16位位移量相加得到。

BX    SI    8位

即: EA =     +     +      位移量

BP    DI    16位

在一般情况下,如果BP中的内容作为有效地址的一部分,则以SS段寄存器中的内容为段

值,否则以DS段寄存器中的内容为段值。

在指令中给定的8位或16位位移量采用补码形式表示。

在计算有效地址时,如果位移量是8位,那么被带符号扩展成16位。

当所得的有效地址操作FFFFH时,就取其64K的模

例如:

MOV AX,[BX+DI-2]

假设,(DS) = 5000H, (BX) = 1223H, DI = 54H, (51275) = 54H, (51276) = 76H

物理地址= 50000 + 1223 + 0054 + FFFE(-2 各位取反末位加一) = 51275H

执行该指令后 (AX) = 7654H

相对基址加变址这种寻址方式的表示方法多种多样,以下四种方法均是等价的:

MOV AX,[BX+DI+1234H], MOV AX,1234H[BX][DI]

MOV AX 1234H[BX+DI],  MOV AX,1234H[DI][BX]

转载于:https://www.cnblogs.com/linganxiong/p/9605125.html

[汇] 立即寻址,直接寻址,间接寻址相关推荐

  1. 计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」

    文章目录 1. 指令格式 1.1 指令的基本概念 1.2 指令的分类 1.2.1 按地址码(操作数)长度/数目分类 1.2.2 按指令的长度分类 1.2.3 按操作码长度分类 1.2.4 按操作类型分 ...

  2. mdio clause22 clause45以及marvell直接寻址/间接寻址的使用说明--基于mv88e6390 交换机

    最新在设计marvell公司的mv88e6390 交换机,在实现其驱动时感觉mdio读写reg时用到了三种读读写时序,看了不少文档,请助了不少同仁,最终实现并验证读写ok,现在总结一下,让后来的方便理 ...

  3. Linux汇编----变址寻址与间接寻址

    经常会把AT&T汇编语法中的变址寻址(indexed memory mode)与寄存器间接寻址搞混. 1. 变址寻址模式 变址寻址特别适合于访问内存中的一系列连续数据,即数组.表达式格式为 b ...

  4. 【Computer Organization笔记28】总复习

    本次笔记内容: P55 计算机组成原理(55) P56 计算机组成原理(56) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  5. 【408】计算机组成原理第一轮强化笔记

    计算机组成原理第一轮强化笔记 根据天勤高分笔记所做 1 计算机系统概述 计算机的发展历程 冯·诺依曼体系结构 第一代计算机(1946-1957年) 电子管时代,机器语言 第二代计算机(1958-196 ...

  6. 计算机组成原理——指令系统(课程笔记)

    说明 博客作为笔记备份,不定时更新 参考内容为<计算机组成原理(第3版)>唐朔飞 高等教育出版社:王道考研<计算机组成原理考研复习指导2023> 文中的例题摘自王道考研< ...

  7. JUC-II CPU的微程序设计 计算机组成原理课程设计 微指令编码

    JUC-II CPU的微程序设计包括不同寻址方式的微指令编码(八种源操作数寻址方式.七种目的操作数寻址方式).38种执行操作的微指令编码等. 所有的微指令编码均验证过了,对各种操作指令充分思考.最后还 ...

  8. 计算机组成原理——第4章 指令系统

    文章目录 [绪:内容] 一.指令格式 1.指令基本格式 ① 零地址指令 ② 一地址指令 ③ 二地址指令 ④ 三地址指令 ⑤ 四地址指令 2.定长操作码指令格式 3.扩展操作码指令格式 4.指令操作类型 ...

  9. 计算机组成原理【转载】

    文章目录 前言 第一章 计算机系统概述 [复习提示] 1.1 计算机发展历程 1.1.1 计算机硬件的发展 1.1.2 计算机软件的发展 1.1.3 计算机的分类与发展方向 1.2 计算机系统层次结构 ...

最新文章

  1. linux c mysql 封装_本人对MYSQL C API做的一个封装,希望对linux C++程序员有点帮助,同时欢迎拍砖!...
  2. 第八章 流量复制/AB测试/协程
  3. html5页面主题,HTML5页面开发笔记
  4. 坦克游戏服务器未响应,《坦克世界》退出战斗 退出战斗卡死解决办法
  5. QML Item定位器 Anchor
  6. 第1章练习题-SQL基础教程
  7. 3.3 腾讯云AI案例
  8. IP网络性能测试工具——Renix Perf
  9. Linux命令+shell脚本大全:文件系统的检查与修复
  10. 机器学习_深度学习毕设题目汇总——数据分析_数据挖掘
  11. 计算机网络实验六(子网划分)
  12. No qualifying bean of type ‘com.zl.dao.UserDao‘ available:expected at least 1 bean which qualifies
  13. ICTCLAS 汉语词性标注
  14. 注册Heroku账户
  15. java办公督办系统(企业事务管理系统)
  16. 科维的时间管理法—《可以量化的管…
  17. Bootstrap导航栏下拉菜单不生效的问题
  18. 京东API:item_search - 按关键字搜索商品
  19. php 微信支付闪了一下,php,_微信公众号JS API支付,安卓没有效果(会闪一下就消失了),php - phpStudy...
  20. 如何基于 dotnetcore worker service 创建 windows 服务

热门文章

  1. zabbix-钉钉预警
  2. Okidoki - Beta阶段项目展示 - TEAM LESS ERROR
  3. 基于 SIMULINK 的气隙局部放电仿真技术研究
  4. 【第三方OA对接】03 企业微信对接项目总结
  5. date(dateable)
  6. 中国科学计算机品牌,第一届“中国科技名牌500强”名单揭晓
  7. 胆汁酸代谢物质靶向代谢检测
  8. android 7.1 权限自动授权(不弹出授权对话框)
  9. linux 无线 密码忘记了怎么办,linux忘记了密码怎么办
  10. 舆情舆论监测措施与方法