计算机组成原理 (5)
⒍变址寻址 EA= (Rx)+指令给出的位移量。 变址寻址方式是指操作数的有效地址是由指令中指定的变址寄存 器的内容与指令字中的形式地址相加形成的。变址寻址的寻址过程 如图5-9所示。 一般格式
图5.9 变址寻址方式
17
例5.7 Intel 8086的变址寻址指令: MOV AL,[SI+4] 其中SI为变址器,4H是形式地址, 变址器的内容可以自动“+1”或“-1”,以适合于数组操作。 例5.8 VAX-11机的变址寻址指令: ①MOV (R1)+,R0 ②MOV -(R1),R0 变址寻址常用于数组、向量、字符串等数据的处理。 先间址后变址和先变址后间址方式的寻址过程如图5-10所示。 ① ②
EA=(BP)+ (Rx)+指令给出的位移量。 例5.10 Intel 8086的基址加变址寻址的指令: MOV AL,[BX+SI+4]
22
10.堆栈寻址 堆栈寻址是一种由堆栈支持的寻址方式。 1) 堆栈 计算机中的堆栈是指按先进后出(FILO)或者说后进先出(LIFO)原 则进行存取的一个特定的存储区域 ⑴ 寄存器堆栈
指令的含义:(A1)OP(A2)→(A3) 下一条指令的地址由(PC)+1→PC(隐含)
2
⒊二地址指令
格式:
指令的含义:(A1)OP(A2)→(A1) A1:为目的操作数地址 A2:为源操作数地址 下一条指令的地址由(PC)+1→PC(隐含) ⒋一地址指令 格式:
分两种情况: ⑴单操作数运算:+1、-1、求反等,这个单地址既是操作数地址, 又是结果存放地址。 指令的含义:OP(A1)→(A1) 下一条指令的地址由(PC)+1→PC(隐含) 3
OP 寻址方式MOD
图5-3 一地址指令格式
形式地址A
10
常用的寻址方式有以下几类:
⒈ 立接寻址
指令直接给出操作数本身,这种寻址方式又称立即数。 格式
操作码 OP 寻址方式 立即寻址 图5-4 立即寻址方式 形式地址 D
Data=D 例5.2 Intel 8086中的立即寻址指令。 MOV AX,2000H ;将立即数2000H存入累加器AX中 优点:操作速度最快。 缺点:操作数是指令的一部分,修改操作数困难;数据表示范围 受指令字的长度限制;寻址灵活性最差。
图5-12 指令JNC 03H和JNC FDH的寻址过程
⒏ 基址寻址
EA=(BP)+指令给出的位移量。
基址寄存器可以是一个专用的寄存器,也可以是由指令指定的通 用寄存器,基址寄存器中的内容称为基地址。
基址寻址的寻址过程如图5-13所示。
21
图5-13基址寻址
变址寻址是面向用户的,用于循环取数组中一个元素; 相对寻址主要用于程序内部的循环或程序转移; 基址寻址是面向系统的,用于程序再定位。 ⒐ 基址加变址寻址
14
4.寄存器直接寻址
寄存器直接寻址也称寄存器寻址。它是指在指令地址码中给出的 是某一通用寄存器的编号(也称寄存器地址),该寄存器的内容即为 指令所需的操作数。即采用寄存器寻址方式时,有效地址EA是寄 存器的编号,即EA=Ri。如图5-7所示。
图5-7 奇存器直接寻址方式
例5· 5 Intel 8086的寄存器寻址指令: MOV AL,BL பைடு நூலகம்将寄存器BL中的内容传送到寄存器AL中15
23
图5-14 寄存器堆栈的进栈和出栈操作过程
这是一种用硬件实现的方法,称为硬堆栈。 优点:存取速度快,不占用主存空间; 缺点:堆栈的容量小不易扩展,是破坏性读出价格高。
⑵存储器堆栈 所谓存储器堆是在内存开辟堆栈区,这种堆栈,它既可以是固定 的区域,也可以是浮动的区域,可以用软件加以定义,而且需要时 可以定义多个存储器堆栈。而栈顶位置动态变化。 自底向上生成堆栈 入栈操作 (PUSH)步骤:①SP-1→SP, ②Data →(SP)。 出栈操作 (POP)步骤: ①从栈顶取出数据, ② SP+1→SP。 自顶向下生成堆栈 入栈操作 (PUSH)步骤:①SP+1→SP, ②Data →(SP)。 出栈操作 (POP)步骤: ①从栈顶取出数据, ② SP-1→SP。 24
18
①
②
⒎相对寻址
EA=(PC)+指令给出的形式地址。 相对寻址方式除了用于访问操作数外,还常被用于转移类指令。 相对转移的好处是可以相对于当前的指令地址进行浮动转移寻址,
19
图5-11 相对寻址
例 5.9 Intel 8086的不为0转移指令JNC D的功能为:如果进位为0 ,则转移到目标地址为(PC)+D处进行执行。该指令为双字节指令 。设本条指令的地址为1000H。 ① 转移指令JNC 03H的功能为:如果进位为0,则转移到目标地 址为(PC)+03H处进行执行。 ②转移指令JNC FDH的功能为:如果进位为0,则转移到目标地 址为(PC)+FDH处进行执行。 20 两条指令的转移寻址过程如图5-12所示。
1
• •
指令字短有利于提高程序效率 不能为了缩短指令长度而影响指令系统的完备性和规整性 ⑴完备性差:机器的功能将影响; ⑵规整性差:则译码部分电路将较为复杂,加长了分析指令的时 间。
5.1.3 指令的地址码
⒈四地址指令 格式: 指令的含义:(A1)OP(A2)→(A3) A4 =下一条指令的地址。 ⒉三地址指令 格式:
⑵该地址中内容是一个操作数,另一个操作数存放在一个叫累加 器的专用寄存器中。 指令的含义:(ACC)OP(A1)→(ACC) 下一条指令的地址由(PC)+1→PC(隐含) ⒌零地址指令
只有操作码字段,没有地址码字段,其格式为:
5.1.4指令的操作码
操作码用于指明指令要完成的操作功能及其特性。指令系统中的 每一条指令都有一个惟一确定的操作码,不同的指令具有不同的操 作码。 若指令系统中有m种操作,即指令系统中可包含m条指令,则操 作码的位数n应满足: n≥log2m (5-1) 若指令中操作码的编码长度是固定的,则称为定长编码;若操作 4 码的编码长度是变长的,则称为变长编码。
11
2.直接寻址
直接寻址方式是指指令的地址码部分给出的形式地址A就是操作 数的有效地址EA,即操作数的有效地址在指令字中直接给出。 如图5-5所示,采用直接寻址时,有效地址EA=A。
OP 直寻址 A
EA=A
操作数 ┇ 图5-5 直即寻址方式
优点是比较直观,也较便于硬件实现。 缺点是随着M•M容量的增长,地址码将会越来越长。对于定长指 令,由于地址码的位数有限,则限制 了地址码的位数。对于变长 指令,势必造成指令的长度过长。 例5.3 Intel 8086中的直接寻址指令。 MOV AX,[2000H] ;将有效地址为2000H的内存单元内容读入 12 累加器AX中
5
15 OP
12
11 A1
8
7 A2
4
3 A3
0
6
图5-2 扩展操作码举例
例5.1 设机器指令字长为16位,指令中地址字段的长度为4位。如 果指令系统中已有11条三地址指令、72条二地址指令和64条零地址 指令,问最多还能规定多少条一地址指令? 解:三地址指令的地址字段共需12位,指令中还可有4位用于操 作码,可规定16条三地址指令。因为现有11条三地址指令,所以还 剩下16-11=5个编码,可用于二地址指令。 二地址指令的地址字段共需8位,可有8位操作码,去掉三地址指 令用掉的操作码,可规定5×24=80条二地址指令。现有72条二地址 指令,所以还有80-72=8个编码用于一地址指令。 一地址指令的地址字段共需4位,可有12位操作码,去掉二、三 地址指令用掉的操作码,可规定8×24=128条一地址指令。 由于要求有64条零地址指令,而4位操作码只能提供16条指令, 所以需要由一地址指令提供64/16=4个操作码编码,构成4×24=64条 零地址指令。因此还能规定128-4=124条一地址指令。 在有限的指令字条件下,若要表示更多操作,还可采用将操作码 进一步分段的方法。例如可将指令操作码OP再进一步分为主操作 码和辅助操作码两部分。主操作码用于表示基本操作,辅助操作码 7 用于表示各种附加操作,如进位、移位、结果回送、判跳等操作。
⒌寄存器间接寻址
操作数地址在指令中指定的CPU中的某个寄存器中。 EA= (Ri)。
图5-8 寄存器间接寻址
例5.6 Intel 8086的寄存器间接寻址指令: MOV AL, [BX] 寄存器间接寻址主要优缺点如下: 优点:是的指令长度较短,与寄存器寻址指令长度差不多。 16 缺点:是指令执行时间比寄存器寻址指令执行时间长。
NOVA机的算术逻辑类指令就采用这种方式,其指令格式为
0
1
1
2 3
4 5
7 8
移位
9 10
11
12
13
14
15
ACS
ACD
主操作码
进位
回送
跳步测试
8
5.2 寻址方式
寻址:寻找操作数的地址。 寻址技术:包括编址方式和寻址方式。 编址单位:字编址、字节编址、位编址。 ⑴字编址 优点:控制方式实现起来简单,地址信息没有任何浪费。 缺点:不支持非数值的应用。因为非数值往往是按节或位进行操 作的。 ⑵字节编址 优点:支持非数值的应用。编址单位与信息单位(字节)基本相一 致。因为非数值往往是按节或位进行操作的。 缺点:如果访问M•M单位是一个字的话, M•M频带就太窄了, 需要多次访问M•M才行。因此,要求访M•M的单位是编址单位的 整数倍。
两个明显的优点: ⑴从寄存器中取数据比从M•M中取数据快得多。 ⑵由于寄存器数量比M•M容量少,因此其地址位数比M•M单元 地址字段短得多,可以缩短指令的长度,提高指令执行的速度。 3.间接寻址 如图5-6所示。
图5-6 间接寻址