0
点赞
收藏
分享

微信扫一扫

微型计算机原理与接口技术——指令系统的寻址方式


指令系统的寻址方式

  • ​​指令与指令系统​​
  • ​​指令​​
  • ​​指令的基本构成​​
  • ​​指令格式​​
  • ​​指令中的操作数类型​​
  • ​​立即操作数​​
  • ​​寄存器操作数​​
  • ​​存储器操作数​​
  • ​​指令的执行时间​​
  • ​​指令系统​​
  • ​​指令的兼容性​​
  • ​​指令对操作数的寻址方式​​
  • ​​立即寻址​​
  • ​​直接寻址​​
  • ​​段重设​​
  • ​​寄存器直接寻址​​
  • ​​寄存器间接寻址​​
  • ​​寄存器相对寻址​​
  • ​​基址——变址寻址​​
  • ​​基址——变址——相对寻址​​
  • ​​隐含地址​​
  • ​​总结与升华​​
  • ​​个人介绍​​

指令与指令系统

指令

控制计算机完成指定操作并能够被计算机所识别的命令。

指令的基本构成

指令中应包含的信息:

  • 执行的操作——操作码
  • 运算数据的来源——指令的操作对象
  • 运算结果的去向——指令的操作对象

微型计算机原理与接口技术——指令系统的寻址方式_寻址

指令格式

  • 零操作数指令: 操作码 (例:HLT)
  • 单操作数指令: 操作码 操作数(例:INC DI)
  • 双操作数指令: 操作码 操作数,操作数(例:ADD AX,BX)

指令中的操作数类型

  • 立即操作数:表征参加操作的数据本身,操作数存在操作码之后,它作为指令的一部分存在代码段中。
  • 寄存器操作数:参加操作的数在CPU的通用寄存器和段寄存器中。
  • 存储器操作数:参加运算的数在内存中。

其中,寄存器操作数和存储器操作数可以表征数据存放的地址

立即操作数

例: 
MOV AX,1234H
MOV BL,22H

  • 立即数只能作为源操作数
  • 立即数的字长可以是1字节或2字节
  • 立即数可以是无符号或带符号数
寄存器操作数

例:
MOV AX,BX
MOV DL,CH

  • 寄存器操作数既可以作为源操作数,也可以用作目标操作数。
  • 通用寄存器通常用来存放参加运算的数据,或数据所在存储器单元的偏移地址。
  • 段寄存器用来存放当前操作数的段基地址。
  • 仅有个别指令将标志寄存器FLAGS作为指令的操作数。
存储器操作数

例: 
MOV AX,[1200H]

[ ]中的内容是存放操作数的内存单元的偏移地址。

微型计算机原理与接口技术——指令系统的寻址方式_寻址_02

  • 参加运算的数据是存放在内存中的。
  • 存储器操作数在指令中既可作为源操作数,也可作为目标操作数。
  • 一般情况下,若指令中没有明确指出操作数所在段,则CPU就采用默认的段寄存器来确定操作数的段基地址。
  • 存储器操作数的偏移地址可以通过不同的寻址方式由指令给出。

指令的执行时间

  • 指令的字长影响指令的执行速度。
  • 不同指令,执行时间有较大的差别
  • 对不同的操作数,指令执行的时间不同:

微型计算机原理与接口技术——指令系统的寻址方式_寻址_03

指令系统

一台计算机能够识别的所有指令的集合称为该机的指令系统。

指令的兼容性

同一系列机器的指令都是兼容的。

指令对操作数的寻址方式

寻址方式是寻找操作数所在地址的方法,讨论的对象主要是源操作数。

操作数可能的来源或存放处:

  • 由指令直接给出
  • 寄存器
  • 内存单元

立即寻址

指令中的源操作数是立即数,操作数存在操作码之后。

微型计算机原理与接口技术——指令系统的寻址方式_编程语言_04


MOV AX, 3102H这条指令的含义是将3102H这个立即数赋值给AX:

  • AH: 31H
  • AL: 02H

直接寻址

指令中直接给出存储器操作数的16位偏移地址,默认在数据段DS中。

微型计算机原理与接口技术——指令系统的寻址方式_寻址_05

段重设

例:
MOV BL,ES:[1200H]

上面的指令表示将附加段ES中偏移地址为1200H单元的内容送到BL寄存器中。

寄存器直接寻址

操作数在CPU内的寄存器中。

微型计算机原理与接口技术——指令系统的寻址方式_指令_06

寄存器间接寻址

寄存器的内容为存放操作数的内存单元的偏移地址。

微型计算机原理与接口技术——指令系统的寻址方式_指令_07


此时寄存器中的内容不再是操作数本身,而是存放数据的偏移地址,操作数本身在内存储器中。

微型计算机原理与接口技术——指令系统的寻址方式_操作数_08

寄存器相对寻址

存放操作数的内存偏移地址(EA)为间址寄存器的内容加上8位或16位的位移量。

相对寻址主要用于存取表格或一维数组中的元素。

微型计算机原理与接口技术——指令系统的寻址方式_寻址_09

微型计算机原理与接口技术——指令系统的寻址方式_操作数_10


在汇编语言中,相对寻址指令的书写格式允许有几种不同的形式。例如,以下几种写法实质上是完全等价的:

MOV AL, DATA[SI]
MOV AL, [SI]DATA
MOV AL, DATA+[SI]
MOV AL, [SI]+DATA
MOV AL, [SI+DATA]
MOV AL, [DATA+SI]

基址——变址寻址

操作数的偏移地址为一个基址寄存器(BX或BP)的内容 + 一个变址寄存器(SI或DI)的内容

  • 基址寄存器为BX,默认在数据段
  • 基址寄存器为BP,默认在堆栈段

该寻址方式允许段重设,且与相对寻址方式一样,主要用于一维数组操作。

微型计算机原理与接口技术——指令系统的寻址方式_操作数_11

基址——变址——相对寻址

操作数的偏移地址为基址寄存器内容+变址寄存器内容+位移量

  • 操作数的段地址由选择的基址寄存器决定,且允许段重设。

基址变址相对寻址方式主要用于二维表格操作。

微型计算机原理与接口技术——指令系统的寻址方式_汇编_12


微型计算机原理与接口技术——指令系统的寻址方式_指令_13


基址-变址-相对寻址指令也可以表示成多种形式:

MOV AX, DATA[SI][BX]
MOV AX, [BX+DATA][SI]
MOV AX, [BX+SI+DATA]
MOV AX, [BX]DATA[SI]
MOV AX, [BX+SI]DATA

隐含地址

指令中隐含了一个或两个操作数的地址,即操作数在默认的地址中。

例:
MUL BL ;AL×BL AX

总结与升华

微型计算机原理与接口技术——指令系统的寻址方式_操作数_14

个人介绍

  • 北京联合大学 机器人学院 自动化专业 2018级 本科生 郑博培
  • 百度飞桨开发者技术专家 PPDE
  • 深圳柴火创客空间 认证会员
  • 百度大脑 智能对话训练师
  • 阿里云 DevOps助理工程师


举报

相关推荐

0 条评论