04指令系统

一、指令系统概述

指令:要计算机执行某种操作的命令

指令包括:
微指令:微程序级的命令,属于硬件
机器指令:介于微指令与宏指令之间,简称指令,每条指令可完成一个独立的算术运算或逻辑运算
宏指令:由若干条机器指令组成的软件指令,属于软件

指令系统:一台计算机中所有指令的集合。

指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅影响到机器的硬件结构,而且影响到系统软件,因为指令时设计一台计算机的硬件与底层软件的接口。

指令系统的性能如何,决定了计算机的基本功能,是计算机系统设计的一个核心问题

一个完善的指令系统应满足
①完备性
②有效性
③规整性
④兼容性

二、指令格式

指令格式
指令字用二进制代码表示的结构形式

操作码字段OC地址码字段AC
表明指令的操作特性与功能指定参与操作的操作数地址

在这里插入图片描述

  • 三地址指令
    格式如下:
操作码A1A2A3
源操作数地址目的操作数地址存放结果的地址

功能:(A1)OP (A2)—>A3

  • 二地址指令
    格式如下:
操作码A1A2
源/目的操作数地址目的/源操作数地址

功能:(A1)OP(A2)—>A1
(A1)OP(A2)—>A2
A1 A2有三种类型;1.存储器-存储器(SS)型;2.寄存器-寄存器(RR)型;3.寄存器-存储器(RS)型

  • 一地址指令
    格式如下
操作码A
指定一个操作数

功能:OP(A)—>A
(AC)OP(A)—>AC(隐含约定累加器)

  • 零地址指令
    格式如下:
操作码

功能:
不需要操作数的指令,如:空操作、停机
单操作数指令,并隐含约定操作数在累加器AC中
双操作数指令,用于堆栈

操作码字段
指明指令操作性质的命令码,提供指令的操作控制信息 ;
操作码必须有,且必须是独一无二的位组合 ;
指令的个数m与操作码的位数n,必须满足:m≤2^n ;
可采用定长操作码,也可采用可变长度操作码(扩展操作码)

扩展操作码示例:

例:某指令字长16位,具有三地址、二地址、一地址和零地址4 类指令,每个地址占4位,要求有15条三地址指令、15条二地址 指令、15条一地址指令和16条零地址指令,指令格式如何设计?
如图所示:
图中的三地址指令为15条,1111留作二地址指令扩展操作码之用
二地址指令15条,1111 1111留作一地址扩展操作码之用
一地址指令为15条,1111 1111 1111留作零地址指令扩展操作码之用
零地址指令为16条。

在这里插入图片描述

指令字长度:一个指令字中二进制代码的位数
机器字长:计算机能直接处理的二进制数据的位数,它决定了 计算机的运算精度
单字长指令:指令字长度等于机器字长度
半字长指令:指令字长度等于半个机器字长度 n 双字长指令:指令字长度等于两个机器字长度

等长指令字结构:一个指令系统中各种指令字长度是相等的
特点:结构简单,且指令字长度是不变的
变长指令字结构:指令字的长度随指令功能而变化
特点:结构灵活,能充分利用指令长度,但指令的译码及控制 较复杂

三、指令寻址方式

指令寻址方式:用于形成指令在内存中的地址,包括 顺序寻址方式和跳跃寻址方式

顺序寻址方式
一条指令接一条指令的顺序进行 n 程序计数器(又称指令指针寄存器)PC:计数指令的顺序号
跳跃寻址方式
跳跃:是指下条指令的地址码不是由程序计数器PC给出, 而是由本条指令给出
程序计数器PC的内容也必须相应改变,以便及时跟踪新的 指令地址

四、数据寻址方式

数据寻址方式:用于形成操作数在内存中的地址
数据寻址的类型:

1. 隐含寻址

特点:在指令中不明显地给出操作数的地址

单地址的指令格式,在指令地址字段中,没有指明第二操作 数的地址,而是规定累加寄存器AC作为第二操作数地址,AC 就是一个隐含地址
例:DIV BL(AX÷BL,商存AL中,余数存AH中)

2. 立即寻址

特点:指令的地址字段指出的不是操作数的地址,而是操作 数本身

指令中包含的操作数立即可用,节省了访问内存的时间
例:指令 MOV AX,100(100就是立即数)

3. 直接寻址

特点: 在指令格式的地址字段中,直接给出操作数在内存的 地址A

指令字中的形式地址A,就是操作数的有效地址EA,又称为直接地址
用D表示操作数,直接寻址的表达式为:D=(A)
例:MOV AX,[1000H]
在这里插入图片描述

4. 间接寻址

特点:形式地址A不是操作数D的真正地址,而是操作数地址的指示器,即:A的内容才是操作数的有效地址
直接寻址和间接寻址结合起来,有如下形式:

操作码IA

寻址特征位:
I=0,直接寻址,有效地址:EA=A
I=1,间接寻址,有效地址:EA=(A)
在这里插入图片描述

5. 寄存器寻址

特点:操作数不放在内存中,而是放在通用寄存器中
指令中给出的操作数地址不是内存的地址单元编号,而是 通用寄存器的编号
例:指令 ADD R0,R1

OPR0R1

6. 寄存器间接寻址

特点:指令中的寄存器内容不是操作数,而是操作数的地址, 即:EA =(R)
真正的操作数是在内存中!
在这里插入图片描述

7. 偏移寻址

直接寻址和寄存器间接寻址的结合
有效地址:EA=A+®
要求指令中有两个地址字段,至少其中一个是显式的
三种类型:相对寻址; 基址寻址 ;变址寻址

  • 相对寻址
    特点:把当前程序计数器PC的内容加上指令中给出的形式地址 A形成操作数的有效地址,即: EA =A+(PC)

    形式地址A通常称为偏移量,其值可正可负,有效地址是当前 指令地址的一个上下范围的偏移

    便于程序在内存中成块搬动
    在这里插入图片描述

  • 基址寻址
    特点:将CPU中基址寄存器RB的内容加上指令中指定的形式地址A,形成操作数的有效地址,即:EA=(RB)+A

    基址寄存器的位数可以大于形式地址A的位数,从而可以扩大 操作数的寻址范围
    在这里插入图片描述

  • 变址寻址
    特点:将CPU中某个变址寄存器RX的内容加上指令中指定的形 式地址A,形成操作数的有效地址 ,即:EA=(RX)+A

    形式地址A给出基准地址,Rx给出偏移量,为重复操作的完成 提供一种有效机制
    在这里插入图片描述

8. 段寻址

微型机中采用了段寻址方式,其实质还是基址寻址
将1MB主存储器空间按照最大长度64KB划分成若干段,在寻 址一个具体的内存单元时,由一个基地址寄存器(段寄存器) 再加上指令中提供的16位偏移量来形成实际的20位物理地址
在这里插入图片描述

9. 堆栈寻址

两种形式:寄存器堆栈和存储器堆栈
存储原则:先进后出
数据的存取都通过栈顶,需要一个隐式或显式的堆栈指示器 (栈顶指针)
堆栈指令:PUSH、POP

五、指令类型

1.指令分类

一个较完善的指令系统,应当有数据处理、数据存储、数据传送、程序控制四大类指令;
具体有:
①数据传送类指令
②算术运算类指令
③逻辑运算类指令
④程序控制类指令
⑤输入输出类指令
⑥字符串类指令
⑦系统控制指令

  • 数据传送类指令
    一般传送指令:取数、存数、传送
    堆栈操作指令:入栈、出栈
    数据交换指令:字节交换、字交换

  • 数据运算类指令
    算术运算类指令:加、减、乘、除、加1、减1、比较
    逻辑运算类指令:与、或、非、异或
    移位类指令:算术移位、逻辑移位、循环移位

  • 程序控制类指令
    转移指令:无条件转移、条件转移
    子程序调用及返回指令:调用指令、返回指令

  • 输入输出类指令
    用于启动外围设备,检查测试外围设备的工作状态,并实现外围设备和CPU之间,或外围设备与外围设备之间的信息传送
    统一编址的机器指令系统中没有输入输出类指令

  • 字符串类指令
    字符串传送、转换、比较、查找、抽取、替换

  • 特权指令
    具有特殊权限的指令
    只用于操作系统或其他系统软件
    在多用户、多任务的计算机系统中特权指令是必不可少的

2.指令系统的类型

  • 复杂指令系统CISC
    指令数量多
    寻址方式多
    指令格式多
    各种指令都可访问存储器

  • 精简指令系统RISC
    指令数量少
    寻址方式少
    指令格式少
    指令长度固定
    只有取数/存数指令访问存储器

参考自中国大学MOOC平台郑州大学计算机组成原理慕课

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全糖去冰不加料

打赏一块钱💰也是钱

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

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

打赏作者

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

抵扣说明:

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

余额充值