6.1 机器指令
每一条机器语言的语句称为机器指令,而又将全部机器指令的集合称为机器的指令系统。
6.1.1 指令的一般格式
指令是由操作码和地址码两部分组成的。
操作码
操作码用来指明该指令索要完成的操作,如加法、减法、传送、移位、转移等。通常,其位数反映了机器的操作种类,也即机器允许的指令条数。
地址码
地址码用来指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一条指令的地址。这里的“地址”可以是主存的地址,也可以是寄存器的地址,甚至可以是I/O设备的地址。
四地址指令
其中,OP为操作码;A1为第一操作数地址;A2为第二操作数地址;A3为结果地址;A4为下一条指令的地址。 如果地址字段均指示主存的地址,则完成一条四地址指令,共需访问4次存储器(取指令一次,取两个操作数两次,存放结果一次)。
三地址指令
二地址指令
一地址指令
6.1.2 指令字长
指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数。 为了提高指令的运行速度和节省存储空间,通常尽可能把常用的指令(如数据传送指令、算逻运算指令等)设计成单字长或短字长格式的指令。通常指令字长取8的整数倍。
6.2 操作类型
6.2.1 操作数类型
机器中常见的操作数类型有地址、数字、字符、逻辑数据等。
6.2.2 操作类型
输出传送
数据传送包括寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的传送。
算术逻辑操作
这类操作可实现算术运算和逻辑运算。有些机器还具有位操作功能,如位测试(测试指定位的值)、位清除(清除指定位)、位求反(对指定位求反)等。
移位
移位可分为算数移位、逻辑移位、循环移位三种。
转移
转移指令按其转移特征又可分为无条件转移、条件转移、跳转、过程调用与返回、陷阱等几种。
输入输出
其他
6.3 寻址方式
寻址方式分为指令寻址和数据寻址两大类。
6.3.1 指令寻址
指令寻址分为顺序寻址和跳跃寻址两种。 顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则通过转移类指令实现。
6.3.2 数据寻址
指令的地址码字段通常都不代表操作数的真实地址,把它称为形式地址,记作A。操作数的真实地址称为有效地址,记作EA,它是由寻址方式和形式地址共同来确定的。
立即寻址
立即寻址的特点是操作数本身设在指令字内,即形式地址A不是操作数的地址,而是操作数本身,又称为立即数。数据是采用补码形式存放的。
优点在于只要取出指令,便可立即获得操作数,这种指令在执行阶段不必再访问存储器。A的位数限制了这类指令所能表述的立即数的范围。
直接寻址
直接寻址的特点是指令字中的形式地址A就是操作数的真实地址EA,即EA=A。
它的优点是寻找操作数比较简单,也不需要专门计算操作数的地址,在指令执行阶段对主存只访问一次。缺点在于A的位数限制了操作数的寻址范围,而且必须修改A的值,才能修改操作数的地址。
隐含寻址
间接寻址
寄存器寻址
寄存器间接寻址
基址寻址
变址寻址
相对寻址
堆栈寻址
6.4 RISC的主要特点
- 选取使用频度较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令的功能由频度高的简单指令的组合来实现。
- 指令长度固定,指令格式种类少,寻址方式种类少。
- 只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都在寄存器内完成。
- CPU中有多个通用寄存器
- 采用流水线技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时长小于一个时钟周期。
- 控制器采用组合逻辑控制,不用微程序控制
- 采用优化的编译程序
6.5 小结
- 指令由操作码和地址码组成
- 指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数
- 半字地址是2的整数倍,字地址是4的整数倍,双字地址是8的整数倍
- 算数逻辑操作:加(ADD)、减(SUB)、乘(MUL)、除(DIV)、与(AND)、或(OR)、非(NOT)、异或(XOR)、增1(INC)、减1(DEC)、十进制加减乘除(AAA、AAS、AAM、AAD)、位测试(BT)、位清除(BTR)、位求反(BTC)
- 调用指令(CALL)一般与返回指令(RETURN)配合使用
- 无条件转移(JMP)
- 寻址方式:寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。
- 寻址方式分为指令寻址和数据寻址两大类
- 指令寻址分为顺序寻址和跳跃寻址两种
- 数据寻址分为立即寻址(指令中)、寄存器寻址(寄存器中)、存储器寻址(存储器中)
6.6 例题
7.6 某指令系统字长为16位,地址码取4位,试提出一种方案,使该指令系统有8条三地址指令,16条二地址指令,100条一地址指令。
7.8 某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式。若零地址指令有M种,一地址有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种?
7.15 一相对寻址的转移指令占3个字节,第一字节是操作码,第二、三字节为相对位移量,而且数据在存储器中采用以高字节地址为字地址的存放方式。假设PC当前值为4000H。试问当结果为0,执行“JZ + 35”和“JZ - 17”指令时,该指令的第二、第三字节的机器代码各为多少?
7.16某机主存容量为4M*16位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式,试回答以下问题。 (1)画出一地址指令格式并指出各字段作用。 (2)该指令直接寻址的最大范围。 (3)一次间接寻址和多次间接寻址的寻址范围。 (4)立即数的范围(十进制表示)。 (5)相对寻址的位移量(十进制表示)。 (6)上述六种寻址方式的指令中哪一种执行时间最短,哪一种最长,为什么?哪一种便于程序浮动,哪一种最适合处理数组问题? (7)如何修改指令格式,使指令的寻址范围可过大到4M? (8)位使一条转移指令能够转移到主存到任一位置,可采取什么措施?简要说明之。
7.18 某机器共能完成78种操作,若指令字长为16位,试问一地址格式的指令地址码可取几位?若想使指令寻址范围扩大到2^16,可采取什么方法?
根据78种操作,可求出操作码位数为7位,则单地址格式的指令地址码占16-7= 9位。直接寻址范围为2^9=512。若想使指令的寻址范围扩大到2^16,可采用以下三种寻址方法: (1)若指令字长等于存储字长均为16位,则采用间接寻址可使寻址范围扩大到2^16,因为间址时(设非多次间址)从存储单元中取出的有效地址为16位。 (2)采用变址寻址,并设变址寄存器RX为16位,则有效地址EA=(RX)+A(形式地址),即可使寻址范围扩大到2^16。 (3)采用基址寻址,并设基址寄存器RB为16位,则有效地址EA=(RB)+A(形式地址),即可使寻址范围扩大到2^16。
7.20 什么是RISC?简述它的特点。
RISC技术是用20%的简单指令的组合来实现不常用的80%的那些指令功能。
- 选取使用频度较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令的功能由频度高的简单指令的组合来实现。
- 指令长度固定,指令格式种类少,寻址方式种类少。
- 只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都在寄存器内完成。
- CPU中有多个通用寄存器
- 采用流水线技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时长小于一个时钟周期。
- 控制器采用组合逻辑控制,不用微程序控制
- 采用优化的编译程序
7.21 比较RISC和CISC。
与CISC机相比,RISC机的主要优点可归纳如下:
- 充分利用VLSI芯片的面积
- 提高计算机的运算速度
- 便于设计,可降低成本,提高可靠性
- 有效支持高级语言程序
本文作者:jujimeizuo
本文地址: https://blog.jujimeizuo.cn/2021/06/20/jizu6/
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0 协议。转载请注明出处!