第4章指令系统 本章重点: 指令格式,功能及分类 指令和数据的寻址方式 堆栈及其实现。 RISC和RISC的特点。 4.1指令 1.概述 (1)指令系统 指令:指挥计算机执行某种操作的命令。 指令系统:某计算机所能执行的全部指令,称为该机的指令系统。 (2)指令系统的类型 ①复杂指令系统计算机CISC ②精简指令系统计算机RSC 指令 系统 (3)指令系统与软硬件的关系 软件 按指令系统功能构造硬件组织;硬件支持指令系统功能 的实现;在指令系统的基础上构造系统软件。 2.对指令系统性能的要求 指令系统的设计是计算机系统设计中的一个核心问题 (1)完备性 要求指令系统丰富,功能齐全,使用方便。 (2)有效性 指编写出的程序能高效率运行,占存储空间小,执行速度快。 (3)规整性 包括对称性、匀齐性、指令格式和数据格式的一致性。 ①对称性:指令系统中所有的寄存器和存储器单元都可同等对待,所有指 令都可使用各种寻址方式。 ②匀齐性:一种操作性质的指令可支持各种数据类型。 ③一致性:指令的长度和数据的长度有一定的关系,以便处理和存取,通 常为字节长度的整数倍 ④兼容性:系列机各机种之间具有相同的基本结构和共同的基本指令集, 而且“向上兼容
第 4 章 指令系统 本章重点: 指令格式,功能及分类。 指令和数据的寻址方式。 堆栈及其实现。 RISC 和 RISC 的特点。 4.1 指令 1. 概述: (1) 指令系统 指令:指挥计算机执行某种操作的命令。 指令系统:某计算机所能执行的全部指令,称为该机的指令系统。 (2) 指令系统的类型 ① 复杂指令系统计算机 CISC ② 精简指令系统计算机 RISC (3)指令系统与软硬件的关系 按指令系统功能构造硬件组织;硬件支持指令系统功能 的实现;在指令系统的基础上构造系统软件。 2. 对指令系统性能的要求 指令系统的设计是计算机系统设计中的一个核心问题。 (1) 完备性: 要求指令系统丰富,功能齐全,使用方便。 (2) 有效性: 指编写出的程序能高效率运行,占存储空间小,执行速度快。 (3)规整性: 包括对称性、匀齐性、指令格式和数据格式的一致性。 ①对称性:指令系统中所有的寄存器和存储器单元都可同等对待,所有指 令都可使用各种寻址方式。 ②匀齐性:一种操作性质的指令可支持各种数据类型。 ③一致性:指令的长度和数据的长度有一定的关系,以便处理和存取,通 常为字节长度的整数倍。 ④兼容性:系列机各机种之间具有相同的基本结构和共同的基本指令集, 而且“向上兼容
4.1.1指令的基本格式 操作码字段操作数地址字段 1.操作码OP—一用于指示指令的操作性质及功能。 n≥log2N或N≤2n 式中,N—一指令系统基本指令的条数。 nOP的二进制位数 2.地址码A——指示操作数或指令的地址 A的位数越多,访问内存的范围(寻址范围)越大。通常还包含寻址方式码。 3.指令字长一条指令含有的二进制位数 指令字长和机器字长通常是整倍数关系 4.决定指令格式的主要因素 操作种类、地址个数、寻址方式。 4.1.2地址码格式 三地址指令 指令意义:(A1)OP(A2)→A3 优点:适用于需保留操作数的场合。(大、中型机用) 缺点:指令码长 2.二地址指令 指令意义:(A1)OP(A2)→A1 特点:①指令码长度适中,使用方便。(中、小、微型机用) ②执行指令后,目的地址A1中的操作数被结果所取代。 3.一地址指令 指令意义:①对于单操作数指令,OP(A)→AC AC——累加器,例如LDA48,执行(48)→AC ②对于双操作数指令,(AC)OP(A)→AC。 A—显地址 AC—隐含地址,是隐含的寻址方式 优点:特别适用于只需一个地址的指令,指令字长短 缺点:对于两个操作数都来自内存的运算,速度慢
4.1.1 指令的基本格式 OP A 操作码字段 操作数地址字段 1. 操作码 OP——用于指示指令的操作性质及功能。 n≥log2N 或 N≤2n 式中,N——指令系统基本指令的条数。 n——OP 的二进制位数。 2. 地址码 A——指示操作数或指令的地址。 A 的位数越多,访问内存的范围(寻址范围)越大。通常还包含寻址方式码。 3. 指令字长——一条指令含有的二进制位数。 指令字长和机器字长通常是整倍数关系。 4. 决定指令格式的主要因素。 操作种类、地址个数、寻址方式。 4.1.2 地址码格式 1. 三地址指令 OP A1 A2 A3 指令意义:(A1) OP (A2) Æ A3 优点:适用于需保留操作数的场合。(大、中型机用) 缺点:指令码长。 2. 二地址指令 OP A1 A2 指令意义:(A1)OP(A2)ÆA1 特点:①指令码长度适中,使用方便。(中、小、微型机用) ②执行指令后,目的地址A1 中的操作数被结果所取代。 3. 一地址指令 OP A 指令意义:①对于单操作数指令,OP (A) Æ AC AC——累加器,例如 LDA 48,执行(48)Æ AC。 ②对于双操作数指令,(AC)OP(A)→AC 。 A——显地址 AC——隐含地址,是隐含的寻址方式 优点:特别适用于只需一个地址的指令,指令字长短。 缺点:对于两个操作数都来自内存的运算,速度慢
4.零地址指令 ①适用于不需操作数的指令。如空操作指令NOP,停机指令STOP等 ②在堆栈处理器中,若需操作数,则由堆栈指针SP指出 5.指令按操作数的来源分:RR型、SS型和RS型三种 RR型指令—两个操作数均来自寄存器的指令 SS型指令——两个操作数均来自内存的指令。 RS型指令—操作数分别来自寄存器和内存的指令。 小结: ①指令字长较短的微、小型机广泛使用二地址、一地址指令。 ②大中型机功能强,各种地址数目的指令都用。 41.3指令的操作码格式 每一条指令对应一个确定的操作吗。 1.固定长度操作码(规整型) 操作码位数固定,而且集中于第一个字段中。 优点:有利于简化译码器的设计。 例如:IBM370机的指令格式 指令格式1 OP 指令格式2: 指令格式3: 0 78 47 OP 2.可变长度操作码(非规整型) 操作码的位数和位置随不同指令而不同。但指令码长度固定不变。 例如PDP1l机:指令长度固定为16位。其中操作码的位数可有4、7、8、10 11、13和16位 【例】某机指令字长均16位,需设置二地址、一地址和零地址指令三种,每个操作数 的地址码占6位,用操作码扩展的方法设计出这三种指令的格式 【解】①二地址的指令格式 A A? 4位OP编码从0000~110是二地址指令的操作码,故最多可有24-1=15条二地址指令
4. 零地址指令 OP ① 适用于不需操作数的指令。如 空操作指令 NOP,停机指令 STOP 等。 ② 在堆栈处理器中,若需操作数,则由堆栈指针 SP 指出。 5. 指令按操作数的来源分:RR 型、SS 型和 RS 型三种。 RR 型指令——两个操作数均来自寄存器的指令 SS 型指令——两个操作数均来自内存的指令。 RS 型指令——操作数分别来自寄存器和内存的指令。 小结: ① 指令字长较短的微、小型机广泛使用二地址、一地址指令。 ② 大中型机功能强,各种地址数目的指令都用。 4.1.3 指令的操作码格式 每一条指令对应一个确定的操作吗。 1. 固定长度操作码(规整型) 操作码位数固定,而且集中于第一个字段中。 优点:有利于简化译码器的设计。 例如:IBM 370 机的指令格式 指令格式 1: 0 7 8 15 OP 指令格式 2: 0 7 8 31 OP 指令格式 3: 0 7 8 47 OP 2. 可变长度操作码(非规整型) 操作码的位数和位置随不同指令而不同。但指令码长度固定不变。 例如 PDP-11 机:指令长度固定为 16 位。其中操作码的位数可有 4、7、8、10、 11、13 和 16 位。 【例】某机指令字长均 16 位,需设置二地址、一地址和零地址指令三种,每个操作数 的地址码占 6 位,用操作码扩展的方法设计出这三种指令的格式。 【解】①二地址的指令格式 15 12 11 6 5 0 OP A1 A2 4 位OP编码从 0000~1110 是二地址指令的操作码, 故最多可有 24 -1=15 条二地址指令
说明:4位OP等于11示非二地址指令。 ②一地址的指令格式 l111 10位OP从1110000110.是一地址指令的操作码。故最多可有26-1=63条 一地址指令 说明:10位OP是全1表示零地址指令。 ③零地址指令 1111|111111 高10位等于全1,低6位可表示26=64条零地址指令。 操作码扩展的特点:操作码可变长。 优点:缩短指令的平均长度,减少程序总位数,增加指令字的操作信息。 缺点:控制器设计难度增大,需要更多的硬件支持(译码复杂等)。 414指令格式举例。 1.8位微型机的指令格式 有单字长、双字长和三字长指令 单字长指令 操作码 双字长指令: 操作码 操作数地址 字长指令: 操作码 操作数地址1 数地址2 每取出一条指令,(PC)△→PC△=1或2或3。 2.PDP-11系列机的指令格式(固定16位的指令长度) 151413121109876543210 指令类型 单操作数指令 操作码(10位) 目标地址(6位) 双操作数指令 操作码(4位) 源地址(6位) 目标地址(6位) 转移指令 操作码(8位) 位移量(8位) 操作码(7位) 寄存器号 子程序返回指令 操作码(13位) 条件码操作指令 操作码(11位) 特点:指令长度固定,非规整型操作码结构,典型的寄存器寻址方式
说明:4 位 OP 等于 1111 表示非二地址指令。 ②一地址的指令格式 15 12 11 6 5 0 1 1 1 1 A OP 10 位OP从 1111000000—1111111110 是一地址指令的操作码。故最多可有 26 -1=63 条 一地址指令。 说明:10 位 OP 是全 1 表示零地址指令。 ③零地址指令 15 12 11 6 5 0 1 1 1 1 1 1 1 1 1 1 OP 高 10 位等于全 1,低 6 位可表示 26 =64 条零地址指令。 操作码扩展的特点:操作码可变长。 优点:缩短指令的平均长度,减少程序总位数,增加指令字的操作信息。 缺点:控制器设计难度增大,需要更多的硬件支持(译码复杂等)。 4.1.4 指令格式举例。 1. 8 位微型机的指令格式 有单字长、双字长和三字长指令 单字长指令: 操作码 双字长指令: 操作码 操作数地址 三字长指令: 操作码 操作数地址 1 操作数地址 2 每取出一条指令,(PC)+ Æ PC =1 或 2 或 3。 2. PDP-11 系列机的指令格式(固定 16 位的指令长度) 指令位 指令类型 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 单操作数指令 操 作 码 (10 位) 目标地址(6 位) 双操作数指令 操作码(4 位) 源地址(6 位) 目标地址(6 位) 转移指令 操作码(8 位) 位移量(8 位) 转子指令 操作码(7 位) 寄存器号 子程序返回指令 操作码(13 位) 条件码操作指令 操作码(11 位) S N Z V C 特点:指令长度固定,非规整型操作码结构,典型的寄存器寻址方式
3. Pentium指令格式 非固定长度的指令格式(CISC结构特征) 0或1 0或1 0或1(字节数) 指令前缀 操作数长 地址长度 0,1,2,4 0或1 0,1,2,4(字节数) 操作码|Mod R/M 位移量 立即数 2位3位3位2位3位3位 (b)指令 图4.2 Pentium指令格式 (1)特点 ①变字长指令(1~12)字节 ②与Inte80486CPU兼容 ③给编译程序写作者以更多灵活的变成支持。 (2)指令前缀(可选) ①指令前缀一LOCK前缀和重复前缀 LOCK一用于多CPU环境中对共享存储器的排他性访问 重复前缀一用于字符串的重复操作一快速。 ②段取代前缀 指令使用不同的段寄存器时需指明。 ③长度取代前缀 a.实地址模式,默认两者长度均为16位。 32位 b.保护模式:D= 0-16位 (3)指令由五部分构成 ①操作码1-2字节 ②Mod-R/M:存储器操作数的寻址方式 ③SIM字段:与Mod-R∧M一起完整说明操作数来源; ④位移量字段; ⑤立即数字段。 【例4.1】指令格式如下所示,其中OP为操作码,试分析指令格式的特点。 源寄存器 目标寄存器 【解】①所示指令是单字长二地址指令。 ②操作码字段OP有7位,可以指定27=128条指令 ③源寄存器和目标寄存器都是通用寄存器(可分别指定16个),所以是RR型指令
3. Pentium 指令格式 非固定长度的指令格式(CISC 结构特征) 0 或 1 0 或 1 0 或 1 0 或 1 (字节数) 指令前缀 段前缀 操作数长度 地址长度 (a) 前 缀 1 或 2 0 或 1 0 或 1 0,1,2,4 0,1,2,4 (字节数) 操作码 Mod Reg 或 操作码 R / M 比例 S 变址 I 基址 B 位移量 立即数 2 位 3 位 3 位 2 位 3 位 3 位 (b) 指 令 图 4.2 Pentium 指令格式 (1) 特点 ①变字长指令(1~12)字节; ②与 Intel 80486 CPU 兼容; ③给编译程序写作者以更多灵活的变成支持。 (2) 指令前缀(可选) ①指令前缀—LOCK 前缀和重复前缀 LOCK—用于多 CPU 环境中对共享存储器的排他性访问。 重复前缀—用于字符串的重复操作—快速。 ②段取代前缀 指令使用不同的段寄存器时需指明。 ③长度取代前缀 a. 实地址模式,默认两者长度均为 16 位。 b. 保护模式: ⎩ ⎨ ⎧ − − = 位 位 160 321 D (3) 指令由五部分构成: ①操作码 1—2 字节; ②Mod-R/M:存储器操作数的寻址方式; ③SIM 字段:与 Mod-R/M 一起完整说明操作数来源; ④位移量字段; ⑤立即数字段。 【例 4.1】指令格式如下所示,其中 OP 为操作码,试分析指令格式的特点。 15 9 7 4 3 0 OP —— 源寄存器 目标寄存器 【解】① 所示指令是单字长二地址指令。 ② 操作码字段OP有 7 位,可以指定 27 =128 条指令。 ③ 源寄存器和目标寄存器都是通用寄存器(可分别指定 16 个),所以是 R-R 型指令
两个操作数均在寄存器中 ④这种指令结构常用于算术逻辑运算类指令。 【例42】指令格式如下所示,OP为操作码字段,试分析指令格式特点 源寄存器 变址寄存器 位移量(16位) 【解】①双字长二地址指令,用于访问存储器。 ②操作码字段OP为6位,可以指定2=64种操作。 ③一个操作数在源寄存器(共16个)中,另一个操作数在内存储器中(有效地址由变 址寄存器和位移量决定),所以是RS型指令。 4.2寻址方式 1.什么叫寻址方式?(编址、选址、定址方式) 形成操作数地址或指令地址的方式 术语 形式地址一指令中给出的地址码 有效地址一操作数(或指令)的真实地址 3.对寻址方式的设计要求 ①指令内的地址尽可能短; ②寻址范围尽可能大 ③地址能隐含在寄存器里,且能访问整个主存空间 ④希望能在不改变指令的情况下改变地址的实际值; ⑤希望寻址方式尽可能简单。 4.常用的寻址方式 立即寻址、直接寻址、间接寻址、相对寻址、寄存器寻址、堆栈寻址等。 42.1指令的寻址方式 1.顺序寻址方式 将程序中的指令按其执行的先后次序存放在内存中,由PC提供要执行的 指令地址 2.跳跃寻址方式 由指令的执行形成下一条指令的地址 应用 ①程序转移:无条件转移、条件转移、子程序调用、程序中断 ②循环程序
两个操作数均在寄存器中。 ④ 这种指令结构常用于算术逻辑运算类指令。 【例 4.2】指令格式如下所示,OP 为操作码字段,试分析指令格式特点。 15 10 7 4 3 0 OP —— 源寄存器 变址寄存器 位移量 (16 位) 【解】① 双字长二地址指令,用于访问存储器。 ② 操作码字段OP为 6 位,可以指定 26 =64 种操作。 ③ 一个操作数在源寄存器(共 16 个)中,另一个操作数在内存储器中(有效地址由变 址寄存器和位移量决定),所以是 RS 型指令。 4.2 寻址方式 1. 什么叫寻址方式?(编址、选址、定址方式) 形成操作数地址或指令地址的方式。 2. 术语 形式地址—指令中给出的地址码 有效地址—操作数(或指令)的真实地址 3. 对寻址方式的设计要求 ① 指令内的地址尽可能短; ② 寻址范围尽可能大 ③ 地址能隐含在寄存器里,且能访问整个主存空间; ④ 希望能在不改变指令的情况下改变地址的实际值; ⑤ 希望寻址方式尽可能简单。 4.常用的寻址方式 立即寻址、直接寻址、间接寻址、相对寻址、寄存器寻址、堆栈寻址等。 4.2.1 指令的寻址方式 1.顺序寻址方式 将程序中的指令按其执行的先后次序存放在内存中,由 PC 提供要执行的 指令地址。 2. 跳跃寻址方式 由指令的执行形成下一条指令的地址。 应用: ① 程序转移:无条件转移、条件转移、子程序调用、程序中断 ② 循环程序
42.2操作数寻址方式 1.立即寻址 指令中的地址字段直接给出操作数 OP 立即数 优点:操作数直观,速度快 缺点:不便于更改,降低了程序的通用性和灵活性。 2.直接寻址 地址字段直接给出操作数在内存的地址D 指令 OPX .D 有效地址E=D 操作数 操作数S=(E)=(D) 可寻址范围为2个存储单元(0~(2-1) n为D的位数 图4.3直接寻址方式 优点:有效地址直观,速度较快。 缺点:可寻址范围受地址码位数所限制。 3.间接寻址 地址字段给出操作数地址的地址。 间址位I:I=0,D为直接地址;I=1,D为间接地址。 次间址:E=(D),S=(E)=(D) 次间址:E=(D),S=(E=(D)) 操作数地址 操作数 图4.4间接寻址方式 优点:扩大寻址范围,方便编程。 缺点:增加指令执行的时间,可能出现无穷间址(死循环)。 4.寄存器寻址和间接寻址 ★多通用寄存器是现代计算机系统结构的特点之 寄存器寻址的特点 ①压缩指令字的长度,有效解决指令码长度短与内存容量大的矛盾 ②加快指令执行速度,如RR型指令; ③可扩大寻址范围 如8个寄存器,地址位数为3,寄存器字长16位,则@R可寻址216=64K。 ④寻址方式多,编程更灵活。 (1)寄存器直接寻址
4.2.2 操作数寻址方式 1.立即寻址 指令中的地址字段直接给出操作数。 OP 立即数 优点:操作数直观,速度快。 缺点:不便于更改,降低了程序的通用性和灵活性。 2.直接寻址 地址字段直接给出操作数在内存的地址 D。 有效地址 E=D 操作数 S=(E)=(D) 可寻址范围为 2n 个存储单元 (0~(2n -1)) ∶∶ S∶∶ OP X1 D 操作数 指令 内存 图 4.3 直接寻址方式 n 为 D 的位数 优点:有效地址直观,速度较快。 缺点:可寻址范围受地址码位数所限制。 3. 间接寻址 地址字段给出操作数地址的地址。 OP I D 间址位 I:I=0 ,D 为直接地址; I=1, D 为间接地址。 一次间址:E=(D) , S=(E)=((D)) 二次间址:E=((D)), S=(E)=(((D))) … S OP X1 D 操作数 … 操作数地址 … 图 4.4 间接寻址方式 优点:扩大寻址范围,方便编程。 缺点:增加指令执行的时间,可能出现无穷间址(死循环)。 4. 寄存器寻址和间接寻址 ★多通用寄存器是现代计算机系统结构的特点之一。 寄存器寻址的特点 ① 压缩指令字的长度,有效解决指令码长度短与内存容量大的矛盾; ② 加快指令执行速度,如 RR 型指令; ③ 可扩大寻址范围; 如 8 个寄存器,地址位数为 3,寄存器字长 16 位,则@R可寻址 2 =64K 16 。. ④ 寻址方式多,编程更灵活。 (1) 寄存器直接寻址
地址字段给出寄存器编号,寄存器的内容就是操作数 654320 OP Mode I R Mode一寻址方式码,I一间址位 当 Mode=00 时为直接寻址 操作数S=(Rn (2)寄存器间接寻址 寄存器的内容为操作数的地址。 Mode=00,I=1,有效地址E=(Rn) 若Rn字长32位,在指令中只用6位可得到232的寻址范围 5.变址寻址和变址间接寻址 (1)将变址器的变址值与形式地址进行加法运算而得到有效地址的寻址方式 变址器:寄存变址值的寄存器 OP Mode Rx D E=(Rx)+D(=0) D为形式地址(补码表示的正或负整数) (Rx)为变址值 (2)变址间接寻址(先变址后间址) E=((Rx)+D) 变址间的应用实例 实现无条件转向含有设备码的服务程序人口的指令:200 JMP@200,AC2;(AC2)=设备码 0号设备服务程序 6.相对寻址 2020 以PC为变址器的变址,称为相对寻址。 1号设备服务程序 2050 E=(PC)+D,D可正可负,(PC)是下一条指令的地址 2号设备服务程序 207 3号设备服务程序 指令寄存器IR OPI 图4.5间址寻址应用实例 操作数 图4.6相对寻址方式 7.基址寻址 将基址寄存器的内容和指令提供的位移量相加而得到E。 基值寻址与变址寻址的不同之处: 变址寻址在于实现程序块的规律变化,而基址寻址可以扩大寻址范围(整个主 存范围)
地址字段给出寄存器编号,寄存器的内容就是操作数 15 6 5 4 3 2 0 OP Mode I Rn Mode—寻址方式码 , I-间址位 当 Mode=00 ,I=0 时为直接寻址 操作数 S=(Rn) (2)寄存器间接寻址 寄存器的内容为操作数的地址。 Mode=00 ,I=1,有效地址 E=(Rn) 若Rn字长 32 位,在指令中只用 6 位可得到 232 的寻址范围。 5. 变址寻址和变址间接寻址 (1)将变址器的变址值与形式地址进行加法运算而得到有效地址的寻址方式。 变址器:寄存变址值的寄存器 OP Mode Rx D E=(Rx)+D (I=0) D 为形式地址(补码表示的正或负整数) (Rx)为变址值 (2)变址间接寻址(先变址后间址) E=((Rx)+D) 变址间的应用实例: 实现无条件转向含有设备码的服务程序人口的指令: JMP@200,AC2;(AC2)=设备码 6. 相对寻址 以 PC 为变址器的变址,称为相对寻址。 E=(PC)+D,D 可正可负,(PC)是下一条指令的地址 7. 基址寻址 将基址寄存器的内容和指令提供的位移量相加而得到 E。 基值寻址与变址寻址的不同之处: 变址寻址在于实现程序块的规律变化,而基址寻址可以扩大寻址范围(整个主 存范围)。 2000 2020 2050 2070 …… 200 201 202 203 2000 2020 2050 2070 0 号设备服务程序 1 号设备服务程序 2 号设备服务程序 3 号设备服务程序 图 4.6 相对寻址方式 S∶∶ OP X3 D 操作数 指令寄存器 IR OP X3 D PC + PC 图 4.5 间址寻址应用实例
8.块寻址方式 用一条指令实现一块数据的传送 (1)好处:速度快(节省多次取指时间) (2)数据块长度的指定方法 指令中划出字段指出长度 指令格式中指出数据块的首地址和末地址; ③由块结束字符指出数据块长度(适用于传送可变长度的数据块)。 9.段寻址方式 将段寄存器的基地址左移4位与偏移量相加形成内存地址的寻址方式。 段寄存器 0000 图4.7段寻址方式 42.3寻址方式举例 1.PDP/l1系列机的寻址方式 PDP-11系列机的寻址方式 寻址 寻址名称 有效地址E 汇编格式 特征值 寄存器Rn的内容是操作数,相当于直接地 寄存器型 E=R 自增 010|E=(Rx(R)+2-R(R)+ 寄存器Rn的内容是操作数地址,然后递增 寄存器的内容 先递减寄存器Rn的内容,然后作为操作数 自减型 100(R)-2→R;E=(R)-(R) 的地址 寄存器Rn的内容与本指令下一单元所存 变址型 x(Rn) E=((PC))+(R); 的数相加,作为操作数的地址 寄存器Rn的内容作为操作数地址,相当于 寄存器间接001 E=(R) @Ra或(Ra) 间接地址 寄存器Rn的内容作为操作数地址的地均 自增间接 E=((R));(R)+2→R R然后递增寄存器内容 寄存器Rn的内容先递减,然后作为操作数 自减间接 101 (R)-2→R:E=(R)@-(R2) (PC)+2→PC: @XR|寄存器R的内容与本指令下一单元中的 E=((R))+((PC)); 内容相加,作为操作数地址的地址
8.块寻址方式 用一条指令实现一块数据的传送。 (1)好处:速度快(节省多次取指时间) (2)数据块长度的指定方法: ① 指令中划出字段指出长度; ② 指令格式中指出数据块的首地址和末地址; ③ 由块结束字符指出数据块长度(适用于传送可变长度的数据块)。 9. 段寻址方式 将段寄存器的基地址左移 4 位与偏移量相加形成内存地址的寻址方式。 4.2.3 寻址方式举例 1. PDP/11 系列机的寻址方式 PDP-11 系列机的寻址方式 寻址名称 寻址 特征值 有效地址 E 汇编格式 说 明 寄存器型 000 E=R Rn 寄存器Rn的内容是操作数,相当于直接地 址 自增型 010 E=(R);(R)+2→R (Rn)+ 寄存器Rn的内容是操作数地址,然后递增 寄存器的内容 自减型 100 (R)-2→R;E=(R) -(Rn) 先递减寄存器Rn的内容,然后作为操作数 的地址 直接型 变址型 110 (PC)+2→PC; E=((PC))+(R); X(Rn) 寄存器Rn的内容与本指令下一单元所存 的数相加,作为操作数的地址 寄存器间接 001 E=(R) @Rn或(Rn) 寄存器Rn的内容作为操作数地址,相当于 间接地址 自增间接 011 E=((R));(R)+2→R @(Rn)+ 寄存器Rn的内容作为操作数地址的地址, 然后递增寄存器内容 自减间接 101 (R)-2→R;E=((R)) @-(Rn) 寄存器Rn的内容先递减,然后作为操作数 地址的地址 间接型 变址间接 111 (PC)+2→PC; E=((R))+((PC)); @X(Rn) 寄存器(Rn)的内容与本指令下一单元中的 内容相加,作为操作数地址的地址 逻辑地址 段寄存器 0000 + 存储器物理地址 15 15 19 0 0 0 图 4.7 段寻址方式
PC)+2→PC: 立即型 指令下一个单元是操作数 E= (PC) 绝对型 oll @#A指令下一个单元内容是操作数的地址 E=((PC)) (PC)+2→PC 令下一个单元内容与指令地址加4的数 相对型 (PC)+(PC)+2=E 相加,其和作为操作数地址 (PC)+2→PC 指令下一个单元内容与指令地址加4的数 相对间接型11 E=(PC)+(PC)+2 相加,其和作为操作数地址的地址 典型的寄存器寻址方式,寻址特征位有三位,R指向R0~R6时,寻址方式有8种 R指向R(程序计数器)时,另有4种寻址方式。 2. Pentium机的寻址方式 (1)实地址模式 段地址左移4位加16位偏移地址形成20位的物理地址。 (2)保护模式 32位段地址加段内偏移→32位物理地址 (3) Pentium的寻址方式 寻址方式名称 有效地址E算法 兑明 操作数在指令中 寄存器 操作数在某寄存器内,指令给出寄存器号 直接 E=Disp Disp为偏移量 B为基址寄存器 基址+偏移量 E=(B)+Disp 比例变址+偏移量E=(1)xs+D 1为变址寄存器,S为比例因子(1,2,4,8) (7)基址+变址+偏移量E=(BH()Dsp (8)基址+比例变址+偏移量|E=(BH(D)×S+Dsp 相对地址=(PC)+ Disp PC为程序计数器或当前指令指针寄存器 ①立即寻址 立即数8位或16位或32位 ②寄存器寻址 通用寄存器的位数是32位(如EAX)、16位(如AX)、或8位(如AL)。 ③直接寻址(偏移量寻址) 偏移量:8位、16位或32位。 ④基址寻址 E=(B)。B→BH,BL或BX或EBX ⑤基址+偏移量寻址
立即型 010 (PC)+2→PC; E=(PC) # n 指令下一个单元是操作数 绝对型 011 (PC)+2→PC; E=((PC)) @ # A 指令下一个单元内容是操作数的地址 相对型 110 (PC)+2→PC; ((PC))+(PC)+2=E A 指令下一个单元内容与指令地址加 4 的数 相加,其和作为操作数地址 程序计数器型 相对间接型 111 (PC)+2→PC; 指令下一个单元内容与指令地址加 4 的数 相加,其和作为操作数地址的地址 @A E=((PC))+(PC)+2 典型的寄存器寻址方式,寻址特征位有三位,Rn指向R0~R6时,寻址方式有 8 种; Rn指向R7(程序计数器)时,另有 4 种寻址方式。 2. Pentium 机的寻址方式 (1) 实地址模式 段地址左移 4 位加 16 位偏移地址形成 20 位的物理地址。 (2) 保护模式 32位段地址加段内偏移 32位物理地址 MMU ⇒ (3)Pentium 的寻址方式 序号 寻址方式名称 有效地址 E 算法 说 明 (1) 立即 操作数在指令中 (2) 寄存器 操作数在某寄存器内,指令给出寄存器号 (3) 直接 E=Disp Disp 为偏移量 (4) 基址 E=(B) B 为基址寄存器 (5) 基址+偏移量 E=(B)+Disp (6) 比例变址+偏移量 E=(I)×S+Disp I 为变址寄存器,S 为比例因子(1, 2, 4, 8) (7) 基址+变址+偏移量 E=(B)+(I)+Disp (8) 基址+比例变址+偏移量 E=(B)+(I)×S+Disp (9) 相对 相对地址=(PC)+Disp PC 为程序计数器或当前指令指针寄存器 注: ①立即寻址 立即数 8 位或 16 位或 32 位。 ②寄存器寻址 通用寄存器的位数是 32 位(如 EAX)、16 位(如 AX)、或 8 位(如 AL)。 ③直接寻址(偏移量寻址) 偏移量:8 位、16 位或 32 位。 ④基址寻址 E=(B)。 B—BH,BL 或 BX 或 EBX。 ⑤基址+偏移量寻址