第7章 指令系统

7.1机器指令

7.1.1指令的一般格式

1.指令

指令:用二进制代码表示的结构形式,由操作码和地址码两部分组成
在这里插入图片描述

2.操作码

①指明该指令所要完成的操作
操作码的位数反映了机器的操作种类
在这里插入图片描述
②扩展操作码技术
在指令格式中,采用扩展操作码设计方案的目的是:保持指令字长度不变而增加指令的数量
操作码的位数随地址数的减少而增加(指令长度固定)
在这里插入图片描述
在设计指令系统时,尽量安排使用频度高的指令占用短的操作码,以缩短指令译码时间

3.地址码

设指令字长为32位,操作码固定为8位
*记住访存次数

①四地址

在这里插入图片描述

②三地址

在这里插入图片描述

③二地址

在这里插入图片描述

④一地址

在这里插入图片描述

⑤零地址

无地址码
注:当指令的地址字段为寄存器时:
在这里插入图片描述
当用一些硬件资源代替指令字中的地址码字段后:
①可扩大指令操作数的寻址范围
②可缩短指令字长
③可减少访存次数

7.1.2指令字长

指令字长取决于:操作码的长度、操作数地址的长度、操作数地址的个数

1.指令字长 固定

指令字长=机器字长=存储字长

2.指令字长 可变

半字长、单字长、双字长、多字长

7.2操作数类型和操作类型

7.2.1操作数类型

在这里插入图片描述

7.2.2数据在存储器中的存放方式

1.从任意位置开始(不对准边界)

以小端存储为例:
在这里插入图片描述
则不对准边界存放方式如下:
在这里插入图片描述

2.从存储字的起始位置开始

在这里插入图片描述

3.对准边界

数据存放的起始位置是数据长度的整数倍
注:数据长度根据编址单位计算,若数据为16位,可按字节编址,则数据长度为16/8=2
在这里插入图片描述
在这里插入图片描述

7.3寻址方式

在这里插入图片描述

7.3.1指令寻址

1.顺序寻址

(PC)+1—>PC
根据编址方式和指令长度不同,1是虚指(1个指令字长度)

2.跳跃寻址

PC的内容由转移指令给出
在这里插入图片描述
注:JMP即为转移指令

7.3.1数据寻址

在这里插入图片描述
寻址特征标识了有多少种寻址方式
寻址范围大于等于0 ???
立即数的范围用补码表示???

1.立即寻址

形式地址A就是操作数,所以在指令执行阶段不访存,执行速度最快
在这里插入图片描述
A的位数限制了立即数的范围

2.直接寻址

EA=A 有效地址由形式地址直接给出
在这里插入图片描述
执行阶段访问一次存储器
A的位数决定了该指令操作数的寻址范围
操作数的地址不易修改(必须修改A)

3.隐含寻址

操作数地址隐含在操作码中
在这里插入图片描述
指令字中少了一个地址字段,可缩短指令字长

4.间接寻址

EA=(A) 有效地址由形式地址间接提供
在这里插入图片描述
当多次间接寻址时,可用存储字的首位来标志间接寻址是否结束,当存储字首位为1时,标明还需要继续访存寻址;当存储字首位为0时,标明该存储字即为EA,由此可见,存储字首位不能作为EA的组成部分,因此,寻址范围会比一次间接寻址的范围少一位
注:此方式操作数寻址范围为2的主存存储字长次方,不由形式地址A的范围决定

5.寄存器(直接)寻址

EA=Ri 有效地址即为寄存器编号
在这里插入图片描述
执行阶段不访存,只访问寄存器,执行速度快
寄存器个数有限,可有效缩短指令字长

6.寄存器间接寻址

EA=(Ri) 有效地址在寄存器中
在这里插入图片描述
注:
操作数寻址范围由主存字长有关
有效地址在寄存器中,操作数在存储器中,执行阶段访存

7.偏移寻址

①直接寻址和寄存器间接寻址方式的结合
有效地址EA=A+(R)
A是显式的形式地址字段,又称为位移量,常用补码表示
R可以是显式的,也可以是隐含的某个专用的寄存器
③常用的偏移寻址
在这里插入图片描述
④偏移寻址通过某个寄存器内容与一个形式地址相加而生成有效地址

8.基址寻址

①采用专用寄存器作为基址寄存器BR—隐式基址寻址

EA=(BR)+A
在这里插入图片描述

②采用通用寄存器作基址寄存器—显式基址寻址

EA=(R0)+A
在这里插入图片描述
可扩大寻址范围
基址寄存器的内容由操作系统确定
在程序的执行过程中基址寄存器内容不变,形式地址A可变
有利于多道程序

9.变址寻址

①采用专用寄存器作变址寄存器IX—隐式变址寻址

EA=(IX)+ A IX为变址寄存器(专用)
在这里插入图片描述

②采用通用寄存器作变址寄存器IX—显式变址寻址

EA=(R1)+ A R1为通用寄存器
在这里插入图片描述
在这里插入图片描述

10.相对寻址

EA=(PC)+A A是相对于当前指令的位移量(可正可负,补码)
在这里插入图片描述
在这里插入图片描述
小结:
基址寻址:在多道程序中极为有用
变址寻址:主要用于处理数组问题,在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任意数据的地址,特别适合编制循环程序
相对寻址:用来支持浮动程序设计

11.堆栈寻址

①堆栈的特点

在这里插入图片描述

②SP的修改与主存编址方法有关

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

so.far_away

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值