文章目录
一、指令系统概述
指令:要计算机执行某种操作的命令
指令包括:
①微指令:微程序级的命令,属于硬件
②机器指令:介于微指令与宏指令之间,简称指令,每条指令可完成一个独立的算术运算或逻辑运算
③宏指令:由若干条机器指令组成的软件指令,属于软件
指令系统:一台计算机中所有指令的集合。
指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅影响到机器的硬件结构,而且影响到系统软件,因为指令时设计一台计算机的硬件与底层软件的接口。
指令系统的性能如何,决定了计算机的基本功能,是计算机系统设计的一个核心问题
一个完善的指令系统应满足:
①完备性
②有效性
③规整性
④兼容性
二、指令格式
指令格式
指令字用二进制代码表示的结构形式
操作码字段OC | 地址码字段AC |
---|---|
表明指令的操作特性与功能 | 指定参与操作的操作数地址 |
- 三地址指令
格式如下:
操作码 | A1 | A2 | A3 |
---|---|---|---|
源操作数地址 | 目的操作数地址 | 存放结果的地址 |
功能:(A1)OP (A2)—>A3
- 二地址指令
格式如下:
操作码 | A1 | A2 |
---|---|---|
源/目的操作数地址 | 目的/源操作数地址 |
功能:(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的内容才是操作数的有效地址
直接寻址和间接寻址结合起来,有如下形式:
操作码 | I | A |
---|
寻址特征位:
I=0,直接寻址,有效地址:EA=A
I=1,间接寻址,有效地址:EA=(A)
5. 寄存器寻址
特点:操作数不放在内存中,而是放在通用寄存器中
指令中给出的操作数地址不是内存的地址单元编号,而是 通用寄存器的编号
例:指令 ADD R0,R1
OP | R0 | R1 |
---|
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
指令数量少
寻址方式少
指令格式少
指令长度固定
只有取数/存数指令访问存储器