第七章 指 令 系 统 7.1 机器指令 7.2 操作数类型和操作类型 7.3 寻址方式 7.4 指令格式举例 7.5 RISC 技术.

Download Report

Transcript 第七章 指 令 系 统 7.1 机器指令 7.2 操作数类型和操作类型 7.3 寻址方式 7.4 指令格式举例 7.5 RISC 技术.

第七章 指 令 系 统
7.1 机器指令
7.2 操作数类型和操作类型
7.3 寻址方式
7.4 指令格式举例
7.5 RISC 技术
教学目标:旨在使学生了解指令系统与机器
的主要功能以及与硬件结构之间存在的密切
关系。
 重点:指令系统主要体现(操作类型、数据
类型、地址格式和寻址方式);机器指令一
般格式及指令字中各字段的作用;地址格式
对访存次数及寻址范围的影响;寻址方式对
操作数寻址范围等的影响;RISC的主要特点
及与CISC的区别。
 难点:掌握设计指令格式的方法,学会根据指
令系统要求确定指令字中各字段的位数及其
含义;扩展操作码;按字节和字寻址;“边
界对准”和“边界不对准”。

7.1 机 器 指 令
一、指令的一般格式
操作码字段
地址码字段
1. 操作码 反映机器做什么操作
(1) 长度固定
用于指令字长较长的情况 ,RISC
如 IBM 370 操作码 8 位
(2) 长度可变
操作码分散在指令字的不同字段中
(3) 扩展操作码技术
操作码的位数随地址数的减少而增加
A3
A3
1110
A1
A2
A3
1111
1111
0000
0001
A2
A2
A3
A3
…
A2
A2
…
A1
A1
…
0000
0001
…
…
A3
1111
1111
1111
1111
0000
0001
A3
A3
…
A2
…
1110
…
…
1111
1111
1111
1110
A3
1111
1111
1111
1111
1111
1111
0000
0001
…
…
…
…
16 位操作码
A3
…
12 位操作码
A2
…
8 位操作码
A1
…
4 位操作码
OP
1111
1111
1111
1111
7.1
15条三地址指令
15条二地址指令
15条一地址指令
16条零地址指令
2. 地址码
7.1
(1) 四地址
8
6
6
6
6
OP A1 A2 A3 A4
设指令字长为 32 位
A1 第一操作数地址
操作码固定为 8 位
A2 第二操作数地址
4 次访存
A3 结果的地址
寻址范围 26 = 64
A4 下一条指令地址
(A1) OP (A2)
A3
若 PC 代替 A4
(2) 三地址
8
8
8
8
OP
A1
A2
A3
(A1) OP (A2)
A3
4 次访存
寻址范围 28 = 256
若 A3 用 A1 或 A2 代替
(3) 二地址
或
8
12
12
OP
A1
A2
7.1
(A1) OP (A2)
A1
4 次访存
(A1) OP (A2)
A2
寻址范围 212 = 4 K
3次访存
若ACC 代替 A1(或A2)
若结果存于 ACC
(4) 一地址
8
OP
24
(ACC) OP (A1)
(5) 零地址
2 次访存
A1
ACC
无地址码
寻址范围 224 = 16 M
7.1
二、指令字长
操作码的长度
指令字长决定于 操作数地址的长度
操作数地址的个数
1. 指令字长 固定
指令字长 = 存储字长
2. 指令字长 可变
按字节的倍数变化
小结
7.1
 当用一些硬件资源代替指令字中的地址码字段后
• 可扩大指令的寻址范围
• 可缩短指令字长
• 可减少访存次数
 当指令的地址字段为寄存器时
三地址
OP R1, R2, R3
二地址
OP R1, R2
一地址
OP R1
• 可缩短指令字长
• 指令执行阶段不访存
7.2 操作数类型和操作种类
一、操作数类型
地址
无符号整数
数字
字符
定点数、浮点数、十进制数
ASCII
逻辑数
逻辑运算
二、数据在存储器中的存放方式
字地址
0
4
低字节
3
7
2
6
1
5
0
4
字地址 为 低字节 地址
低字节
字地址
0
4
0
4
1
5
2
6
3
7
字地址 为 高字节 地址
存储器中的数据存放(存储字长为 32 位)
7.2
地址(十进制)
边界对准
字(地址 0)
字(地址 4)
字节(地址11) 字节(地址10)
字节(地址15) 字节(地址14)
字节(地址9) 字节(地址8)
字节(地址13) 字节(地址12)
半字(地址18)
半字(地址16) 
半字(地址22)
半字(地址20) 
双字(地址24)▲
双字
双字(地址32)▲
双字
边界未对准
地址(十进制)
字( 地址2)
字节( 地址7)
0
4
8
12
16
20
24
28
32
36
字节( 地址6)
半字( 地址10)
半字( 地址0)
0
字( 地址4)
4
半字( 地址8)
8
三、操作类型
7.2
1. 数据传送
源
寄存器
寄存器
存储器
存储器
目的
寄存器
存储器
寄存器
存储器
例如
MOVE
STORE
MOVE
PUSH
LOAD
MOVE
POP
MOVE
置“1”,清“0”
2. 算术逻辑操作
加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算
与、或、非、异或、位操作、位测试、位清除、位求反
如 8086
ADD SUB MUL DIV INC DEC CMP NEG
AAA AAS AAM AAD
AND OR NOT XOR TEST
7.2
3. 移位操作
算术移位
逻辑移位
循环移位(带进位和不带进位)
4. 转移
(1) 无条件转移 JMP
(2) 条件转移
结果为零转
(O = 1)JO
结果有进位转(C = 1)JC
跳过一条指令 SKP
如
完成触发器
300
…
结果溢出转
(Z = 1) JZ
305 SKP DZ D = 0 则跳
306
307
(3) 调用和返回
7.2
主程序
2100
2101
CALL SUB1
...
地址
2000
... ...
子程序SUB1
…
2400
CALL SUB2
2560
2561
CALL SUB2
...
2500
2501
…
RETURN
子程序SUB2
2700
... ...
RETURN
主存空间分配
程序执行流程
(4) 陷阱(Trap)与陷阱指令
意外事故的中断
7.2
• 一般不提供给用户直接使用
在出现事故时,由 CPU 自动产生并执行(隐指令)
• 设置供用户使用的陷阱指令
如 8086
INT TYPE
软中断
提供给用户使用的陷阱指令,完成系统调用
5. 输入输出
入
端口地址
如
出
AX, nn
IN AL,
CPU 的寄存器
如
OUT n, AL
AX
CPU 的寄存器
IN AL,
AX, DX
DX
端口地址
OUT DX, AL
AX
7.3 寻 址 方 式
寻址方式 确定 本条指令 的 操作数地址
下一条 欲执行 指令 的 指令地址
指令寻址
寻址方式
数据寻址
7.3 寻 址 方 式
一、指令寻址
顺序
( PC ) + 1
跳跃
由转移指令指出
指令地址
PC
+1
指令
LDA
ADD
DEC
JMP
LDA
SUB
INC
STA
LDA
指令地址寻址方式
1000
1001
1200
7
2000
2001
2500
1100
...
0
11
22
33
4
5
6
77
88
9
PC
顺序寻址
顺序寻址
顺序寻址
跳跃寻址
顺序寻址
二、数据寻址
操作码
7.3
寻址特征
形式地址 A
形式地址
指令字中的地址
有效地址
操作数的真实地址
约定
指令字长 = 存储字长 = 机器字长
1. 立即寻址
形式地址 A 就是操作数
立即寻址特征
OP
#
A
立即数
可正可负 补码
• 指令执行阶段不访存
• A 的位数限制了立即数的范围
2. 直接寻址
EA = A
7.3
有效地址由形式地址直接给出
寻址特征
LDA
主存
A
A
操作数
ACC
• 执行阶段访问一次存储器
• A 的位数决定了该指令操作数的寻址范围
• 操作数的地址不易修改(必须修改A)
7.3
3. 隐含寻址
操作数地址隐含在操作码中
寻址特征
ADD
主存
A
ACC
A
操作数
另一个操作数
隐含在 ACC 中
暂存
如 8086
MUL 指令
MOVS 指令
ALU
被乘数隐含在 AX(16位)或 AL(8位)中
源操作数的地址隐含在 SI 中
目的操作数的地址隐含在 DI 中
• 指令字中少了一个地址字段,可缩短指令字长
7.3
4. 间接寻址
EA =(A) 有效地址由形式地址间接提供
寻址特征
OP
A
OP
A
一次间址
寻址特征
主存
EA
EA 操作数
多次间址
• 执行指令阶段 2 次访存
主存
A
A
1
A1
A1
0
EA
EA
操作数
• 可扩大寻址范围
• 便于编制程序
多次访存
间接寻址编程举例
主程序
子程序
…
…
80
7.3
转 子程序
… ……
… ……
201
202
转 子程序
…
… …
81
JMP @ A
(A)
(A) =
= 81
202
@ 间址特征
5. 寄存器寻址
EA = Ri
7.3
有效地址即为寄存器编号
寻址特征
OP
Ri
…
…
R0
…
…
Ri
操作数
…
…
Rn
寄存器
• 执行阶段不访存,只访问寄存器,执行速度快
• 寄存器个数有限,可缩短指令字长
6. 寄存器间接寻址
EA = ( Ri )
有效地址在寄存器中
寻址特征
OP
主存
Ri
…
…
R0
…
…
Ri
地址
问题1:间接寻
址和寄存器间
接寻址有什么
异同?
操作数
…
…
Rn
7.3
寄存器
• 有效地址在寄存器中, 操作数在存储器中,执行阶段访存
• 便于编制循环程序
7. 基址寻址
7.3
(1) 采用专用寄存器作基址寄存器
EA = ( BR ) + A
BR 为基址寄存器
寻址特征
OP
BR
A
主存
ALU
操作数
• 可扩大寻址范围
• 便于程序搬家
• BR 内容由操作系统或管理程序确定
• 在程序的执行过程中 BR 内容不变,形式地址 A 可变
(2) 采用通用寄存器作基址寄存器
7.3
寻址特征
OP
R0
R0 作基址寄存器
A
主存
R0
R1
…
Rn-1
通用寄存器
ALU
操作数
• 由用户指定哪个通用寄存器作为基址寄存器
• 基址寄存器的内容由操作系统确定
• 在程序的执行过程中 R0 内容不变,形式地址 A 可变
8. 变址寻址
7.3
EA = ( IX ) +A
IX 为变址寄存器(专用)
通用寄存器也可以作为变址寄存器
寻址特征
OP
IX
A
主存
问题2:基址寻
址和变址寻址有
什么区别?
ALU
操作数
• 可扩大寻址范围
• IX 的内容由用户给定
• 在程序的执行过程中 IX 内容可变,形式地址 A 不变
• 便于处理数组问题
例
设数据块首地址为 D,求 N 个数的平均值
7.3
直接寻址
变址寻址
LDA D
LDA
#0
ADD
D+1
LDX
#0
X 为变址寄存器
ADD
D+2
M ADD
X, D
D 为形式地址
……
INX
(X) +1
CPX
#N
(X) 和 #N 比较
结果不为零则转
ADD
D + ( N -1 )
BNE
M
DIV
#N
DIV
#N
STA
ANS
STA
ANS
共 N + 2 条指令
X
共 8 条指令
9. 相对寻址
7.3
EA = ( PC ) + A
A 是相对于当前指令的位移量(可正可负,补码)
寻址特征
OP
PC
A
主存
1000
1000 OP
…
…
ALU
A
操作数
• A 的位数决定操作数的寻址范围
• 程序浮动
• 广泛用于转移指令
相对距离 A
(1) 相对寻址举例
M
M+1
M+2
M+3
LDA
LDX
ADD
INX
CPX
BNE
DIV
STA
7.3
#0
#0
X, D
#N
M
#N
ANS
*
*
–3
相对寻址特征
M 随程序所在存储空间的位置不同而不同
– 3 与 指令 ADD X, D 相对位移量不变
而指令 BNE
– 3 操作数的有效地址为
指令 BNE
EA = ( M+3 ) – 3 = M
*
*
7.3
(2) 按字节寻址的相对寻址举例
2000 H
8
OP
位移量
JMP
* +8
2000 H
8
OP
06 H
二字节指令
2008 H
设 当前指令地址
2008 H
PC = 2000H
转移后的目的地址为 2008H
因为 取出 JMP * + 8 后 PC = 2002H
故 JMP * + 8 指令 的第二字节为 2008H - 2002H = 6H
10. 堆栈寻址
7.3
(1) 堆栈的特点
堆栈
硬堆栈
多个寄存器
软堆栈
指定的存储空间
先进后出(一个入出口) 栈顶地址 由 SP 指出
进栈 (SP)– 1
SP
2000 H
1FFF
SP
–1
出栈 (SP)+ 1
SP
进栈
+1
出栈
栈顶
栈顶
1FFFH
2000 H
1FFF
H
2000 H
SP
栈顶
栈顶
1FFFH
2000 H
…
…
栈底
栈底
(2) 堆栈寻址举例
7.3
主存
ACC
15
SP
200H
PUSH A 前
栈顶
200H
X
主存
ACC
15
SP
1FFH
PUSH A 后
栈底
栈顶
1FFH
200H
栈底
主存
ACC
SP
Y
1FFH
POP A 前
栈顶
1FFH
200H
栈底
15
X
15
X
主存
ACC
15
SP
200H
POP A 后
栈顶
200H
栈底
15
X
(3) SP 的修改与主存编址方法有关
① 按 字 编址
进栈 (SP)– 1
SP
出栈 (SP)+ 1
SP
进栈 (SP)– 2
SP
出栈 (SP)+ 2
SP
进栈 (SP)– 4
SP
出栈 (SP)+ 4
SP
② 按 字节 编址
存储字长 16 位
存储字长 32 位
7.3
7.4 指令格式举例
一、设计指令格式时应考虑的各种因素
1. 指令系统的 兼容性 (向上兼容)
2. 其他因素
操作类型
包括指令个数及操作的难易程度
数据类型
指令格式
指令字长、操作码位数
寻址方式、是否采用扩展操作码
地址码位数、地址个数
寻址方式
寄存器个数
7.4
二、指令格式举例
1. PDP – 8
访存类指令
指令字长固定 12 位
操作码 间 页
0
I/O 类指令
2
3
110
0
寄存器类指令
2 3
111
0
2 3
4
地址码
5
11
设备
操作码
8 9
11
辅助操作码
11
2. PDP – 11
7.4
指令字长有 16 位、32 位、48 位三种
零地址 (16 位)
OP – CODE
扩展操作码技术
16
OP – CODE 目的地址
10
6
OP 源地址 目的地址
4
6
二地址 R
OP
目的地址
存储器地址
10
6
16
6
R (16 位)
6
OP 源地址 目的地址
4
一地址 (16 位)
6
存储器地址1
16
二地址 R
M (32 位)
存储器地址2
16
二地址 M
M (48 位)
7.4
3. IBM 360
RR
格式
RX
格式
RS
格式
SI
格式
SS
格式
二地址 R
OP
R1
R2
8
4
4
OP
R1
X
B
D
8
4
4
4
12
OP
8
R1
4
R3
4
B
4
D
12
三地址 R
基址寻址
立即数 M
基址寻址
R
OP
8
I
8
B
4
D
12
OP
L
B1
D1
8
8
4
12
二地址 M
二地址 R M
基址加变址寻址
B2
4
M
D2
12
M 基址寻址
7.4
4. Intel 8086
(1) 指令字长 1 ~ 6 个字节
INC
AX
1 字节
MOV WORD PTR[0204], 0138H
6 字节
(2) 地址格式
零地址
NOP
一地址
CALL
段间调用
5 字节
CALL
段内调用
3 字节
二地址
1 字节
ADD AX,BX
2 字节 寄存器 — 寄存器
ADD AX,3048H
3 字节 寄存器 — 立即数
ADD AX,[3048H] 4 字节 寄存器 — 存储器
7.5 RISC 技 术
一、RISC 的产生和发展
RISC(Reduced Instruction Set Computer)
CISC(Complex Instruction Set Computer)
80 — 20 规律
—— RISC技术
 典型程序中 80% 的语句仅仅使
用处理机中 20% 的指令
 执行频度高的简单指令,因复杂指令
的存在,执行速度无法提高
?能否用 20% 的简单指令组合不常用的
80% 的指令功能
二、RISC 的主要特征
 选用使用频率较高的一些 简单指令
复杂指令的功能由简单指令来组合
 指令 长度固定
 只有 LOAD / STORE 指令访存
 流水技术
一个时钟周期 内完成一条指令
 组合逻辑 实现控制器
 多个 通用 寄存器
 采用 优化 的 编译 程序
7.5
典型例题:

7.4零地址指令的操作数来自哪里?在一
地址指令中,另一个操作数的地址通常
可采用什么寻址方式获得?各举一例说
明。

7.6某指令系统字长为16位,地址码取4位,
试提出一种方案,使该指令系统有8条三
地址指令、16条二地址指令、100条一地
址指令。
典型例题:

7.17举例说明哪几种寻址方式在指令的
执行阶段不访问存储器,哪几种寻址方
式在指令的执行阶段只需要访问一次存
储器?完成什么样的指令,包括取指令
在内共访问存储器4次?

7.18某机器共能完成78种操作,若指令
字长为16位,试问一地址格式的指令地
址码可取几位?若想使指令寻址范围扩
大到216 ,可采用什么方法?举出三种不
同例子加以说明。
课堂练习题:
1.以下四种类型指令中,执行时间最长的是_____。
A. RR型
B. RS型
C. SS型
D.程序控制指令
答案:C
2. 设变址寄存器为X,形式地址为D,(X)表示寄
存器X的内容,这种寻址方式的有效地址为_____。
A. EA=(X)+D
B. EA=(X)+(D)
C.EA=((X)+D)
D. EA=((X)+(D))
答案:A
课堂练习题:
3. 在指令的地址字段中,直接指出操作数本身的寻
址方式,称为______。
A. 隐含寻址
B. 立即寻址
C. 寄存器寻址
D. 直接寻址
答案:B
4.条件转移、无条件转移、转子程序、返主程序、
中断返回指令都属于A.______类指令,这类指令在
指令格式中所表示的地址不是B.______的地址,而
是C.______的地址。
答案:A.程序控制 B.操作数 C.下一条指令
课堂练习题:
5.若机器字长36位,采用三地址格式访存指令,共
完成54种操作,操作数可在1K地址范围内寻找,
画出该机器的指令格式。
解:
课堂练习题:
6.举例说明存储器堆栈的原理及入栈、出栈的过程。
答案:所谓存储器堆栈,是把存储器的一部分用作
堆栈区。
入栈操作可描述为(A)→MSP,(SP-1)→SP
出栈操作可描述为(SP+1)→SP,(MSP)→A
课堂练习题:
7. 堆栈寻址方式中,设A为累加器,SP为堆栈指示
器,MSP为SP指示的栈顶单元。如果进栈操作的动
作顺序是(A)→MSP,(SP)-1→SP。那么出栈操作
的动作顺序应为______。
A.(MSP)→A,(SP)+1→SP
B.(SP)+1→SP,(MSP)→A
C.(SP-1)→SP,(MSP)→A
D.(MSP)→A, (SP)-1→SP
答案:B
课堂练习题:
8.某机指令格式如图所示:
图中X为寻址特征位,且X=0时,不变址;X=1时,
用变址寄存器X1进行变址;X=2时,用变址寄存器X2
进行变址;X=3时,相对寻址。设(PC)=1234H,
(X1)=0037H, (X2)=1122H,请确定下列指令的有
效地址(均用十六进制表示,H表示十六进制)
(1)4420H (2)2244H (3)1322H (4)3521H (5)6723H
答案: (1)0020H (2)1166H (3)1256H
(4)0058H (5)1257H
课堂练习题:
9.用于对某个存储器中操作数的寻址方式称为
______寻址。
A. 直接
B. 间接
C. 寄存器直接
D. 寄存器间接
答案:C
10.程序控制类指令的功能______。
A. 进行算术运算和逻辑运算
B. 进行主存和CPU之间的数据传送
C. 进行CPU和I/O设备之间的数据传送
D. 改变程序执行的顺序
答案:D
课堂练习题:
11.指令格式是指令用A.______表示的结构形式,通
常格式中由操作码字段和B.______字段组成。
答案:A.二进制代码 B.地址码
12.RISC机器一定是A._______CPU,但后者不一定
是RISC机器,奔腾机属于B.______机器。
答案:A.流水 B.CISC
13. 寄存器间接寻址方式中,操作数处在______。
A.通用寄存器
B.程序计数器
C.堆栈
D.主存单元
答案:D
课堂练习题:
14.指令格式如下所示,其中OP为操作码,试分析
指令格式特点:
解:
(1)操作数字段OP可以指定64种基本操作
(2)单字长(16位)= 地址指令
(3)源寄存器和目标寄存器都是通用寄存器(各
指定16个),所以是RR型指令,两个操作数均在
通用寄存器中
(4)这种指令结构常用于算术/逻辑运算类运算指
令,执行速度最快。
课堂练习题:
15.下面描述RISC机器基本概念中,正确的表述是
______。
A.RISC机器不一定是流水CPU
B.RISC机器一定是流水CPU
C.RISC机器有复杂的指令系统
D.其CPU配备很少的通用寄存器
答案:B
16. 以下四种类型指令中,执行时间最长的是___。
A.RR型指令
B.RS型指令
C.SS型指令
D.程序控制指令
答案:C
课堂练习题:
17. 堆栈是一种特殊的数据寻址方式,它采用A.___
原理。按结构不同,分为B.___堆栈和C.___堆栈。
答案:A.先进后出 B.寄存器 C.存储器
18.什么是RISC?RISC指令系统的特点是什么?
解:
课堂练习题:
19.指令格式如下所示,其中OP为操作码字段,试分
析指令格式特点。
解:
(1)双字长二地址指令,用于访问存储器
(2)操作码字段OP为六位,可以指定64种操作
(3)一个操作数在源寄存器(共16个),另一个操
作数在存储器中(由基址寄存器和位移量决定),
所以是RS型指令。
课堂练习题:
20. 单地址指令中为了完成两个数的算术运算,除
地址码指明的一个操作数外,另一个数常需采用
______。
A.堆栈寻址方式 B.立即寻址方式
C.隐含寻址方式 D.间接寻址方式
答案: C
21. 寻址方式按操作数的物理位置不同,多使用
A._____型和B._____型,前者比后者执行速度快。
答案:A.RR
B.RS
课堂练习题:
22. 什么是CISC?CISC指令系统的特点是什么?
解:
课堂练习题:
23.指令格式结构如下所示,试分析指令格式特点。
解:
(1)OP字段指定16种操作
(2)单字长二地址指令
(3)每个操作数可以指定8种寻址方式
(4)操作数可以是RR型、RS型、SS型
作业:7.7、7.8、7.12、7.14、
7.16、7.20