计算机组成原理复习提纲五(指令系统)
第7章 指令系统
文章目录
1.掌握指令的一般格式以及指令字各字段的作用;掌握不同的地址格式对访存次数、寻址范围的影响。
2.熟练运用扩展操作码技术。
3.指令寻址方式(顺序寻址和跳跃寻址)
数据寻址
形式地址:指令中给出的地址
有效地址:操作数的真实地址
约定:指令字长=存储字长=机器字长
-
立即寻址
形式地址 A 就是操作数
- 指令执行阶段不访存
- A 的位数限制了立即数的范围
-
直接寻址
EA=A 有效地址由形式地址直接给出
- 执行阶段访问一次存储器
- A 的位数决定了该指令操作数的寻址范围
- 操作数的地址不易修改(必须修改 A)
-
隐含寻址
操作数的地址隐含在操作码或寄存器中
- 指令中少了一个地址字段,可缩短指令字长。
-
间接寻址
EA = (A) 有效地址有形式地址间接提供
- 执行指令阶段 2 次访存
- 可扩大寻址范围
- 便于编制程序
-
寄存器寻址
EA = Ri
- 执行阶段不访存,只访问寄存器,执行速度快
- 寄存器个数有限,可缩短指令字长
-
寄存器间接寻址
EA = (Ri) 有效地址在寄存器中
- 有效地址在寄存器中,操作数在存储器中,执行阶段访存
- 便于编制循环程序
-
基址寻址
-
采用专用寄存器作基址寄存器
EA = (BR) + A BR 为基址寄存器,真实地址为基地址加上 A
- 可扩大寻址范围
- 有利于多道程序
- BR 内容由操作系统或管理程序确定
- 在程序执行过程中
BR
内容不变,形式地址 A 可变。
-
采用通用寄存器作基址寄存器
- 用用户指定哪个通用寄存器作为基址寄存器
- 基址寄存器的内容有操作系统确定
- 在程序执行过程中 R 0 R_0 R0内容不变,形式地址 A 可变。
-
-
变址寻址
EA=(IX) +A IX为变址寄存器(专用),通用寄存器也可以作为变址寄存器
- 可扩大寻址范围
- IX 的内容用用户指定
- 在程序执行过程中IX 内容可变,形式地址A 不变
- 便于处理数组问题
-
相对寻址
EA = (PC) + A, A 是相对于当前指令的位移量(可正可负,补码)
- A 的位数决定操作数的寻址范围
- 程序浮动
- 广泛用于转移指令
-
堆栈寻址
-
堆栈的特点
- 硬堆栈 对个寄存器
- 软堆栈 指定的存储空间
先进后出,栈顶地址有
SP
指出进栈: ( S P ) − 1 → S P (SP)-1 \to SP (SP)−1→SP,出栈: ( S P ) + 1 → S P (SP)+1\to SP (SP)+1→SP
-
操作数寻址方式
深刻理解不同数据寻址方式(立即寻址、直接寻址、隐含寻址、存储器间接寻址、寄存器寻址、寄存器间接寻址、基址寻址、变址寻址、相对寻址、堆栈寻址等)的有效地址的计算方法、特点以及深刻理解不同数据寻址方式对指令执行速度(访存次数)的影响。
指令格式
课后习题
-
什么是指令字长、机器字长和存储字长?
答:指令字长:是指机器指令中二进制代码的总位数。指令字长取决于从操作码的长度、操作数地址的长度和操作数地址的个数。不同的指令的字长是不同的。
机器字长:是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度。即字长越长,数的表示范围也越大,精度也越高。机器的字长也会影响机器的运算速度。
存储字长:一个存储单元存储一串二进制代码(存储字),这串二进制代码的位数称为存储字长,存储字长可以是8位、16位、32位等。
-
比较基址寻址和变址寻址的异同点。
答:比较如下:⑴都可有效地扩大指令寻址范围。
⑵基址寻址时,基准地址由基址寄存器给出,地址的改变反映在位移量A的取值上;变址寻址时,基准地址由A给出,地址的改变反映在变址值的自动修改上,变址值由变址寄存器给出。
⑶基址寄存器内容通常由操作系统或管理程序给定,且在程序的执行过程中不可变;变址寄存器内容通常由用户给定,且在程序的执行过程中可变。
⑷基址寻址支持多道程序技术的应用,变址寻址适用于数组或字符串处理,适用场合不同。 -
比较间接寻址和变址寻址的异同点。
答:间接寻址和变址寻址都可以扩大寻址范围,但他们形成有效地址的方式不同:间址需通过访存(若是多次间址还需要多次访存)得到有效地址;而变址需通过地址变换(将变址寄存器内容加上形式地址)得到有效地址,故通常间址指令执行时间比变址指令长。此外,两种指令的应用场合不同,变址寻址特别适用于处理数组问题。 -
假设指令字长为16位,操作数的地址码为6位,指令有零地址、一地址、二地址三种格式。
- 设操作码固定,若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种?
- 采用扩展码操作技术,二地址指令最多有几种?
- 采用扩展操作码技术,若二地址指令有P种,零地址指令有M种,则一地址指令最多有几种?
-
设指令字长为16位,采用扩展操作码技术,每个操作数的地址为6位。如果定义了13条二地址指令,试问还可安排多少条一地址指令?
-
某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式。若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许有几种?
-
假设指令字长为16位,操作数的地址码为6位,指令有零地址、一地址、二地址三种格式。
- 设操作码固定,若零地址指令有3种,一地址指令有5种,则二地址指令最多有几种?
- 设操作码固定,若零地址指令有3种,一地址指令有5种,则二地址指令最多有几种?