730 likes | 901 Views
2.3 指令信息的表示. 指令:计算机要执行某种操作的命令,称为指令。 指令系统:一台计算机所能执行的全部指令的集合。 本节主要讨论:一般指令格式 常用寻址方式 面向用户指令类型. 操作码 OP 地址码 AD. 2.3.1 指令格式. 指令基本格式. 一个. 一个或几个. 1. 操作码是指明指令操作性质的命令码。它提供指令的操作控制信息。. 2. 地址码指明与操作数相关的信息。. 2.3.1 指令格式. 对指令格式,应注意如下问题: 1 )指令字长需多少位,是定字长,还是变字长
E N D
2.3 指令信息的表示 • 指令:计算机要执行某种操作的命令,称为指令。 • 指令系统:一台计算机所能执行的全部指令的集合。 本节主要讨论:一般指令格式 常用寻址方式 面向用户指令类型
操作码OP 地址码 AD 2.3.1 指令格式 • 指令基本格式 一个 一个或几个 1.操作码是指明指令操作性质的命令码。它提供指令的操作控制信息。 2. 地址码指明与操作数相关的信息。
2.3.1 指令格式 对指令格式,应注意如下问题: 1)指令字长需多少位,是定字长,还是变字长 2)操作码长度 若长度为n,则可表示2n条指令。 3)地址结构 指令中涉及哪些地址,在指令中给出哪些地址,哪些地址隐含约定。 4)寻址方式 如何获得操作数的值,是直接给出还是间接给出,或是经过变址计算获得。
2.3.1.1 指令字长 • 指令字长与主存的编址单位及CPU的机器字长有一定关系。 • 指令字长位数越多,所能表示的操作信息和地址信息也就越多,指令的功能越丰富,但所占空间和时间也越多。 定长指令格式 变长指令格式 便于控制 合理利用存储空间
2.3.1.2 操作码格式 操作码一般在指令格式的前面一个或几个字节。根据它可以判明该指令的基本类型及相应的字节数。 1.定长操作码 各指令中操作码的位置、位数固定相同。 例:INTEL 8088 的前6位为操作码。 2.扩展操作码 各指令中操作码的位置、位数不固定,根据 需要变化。 关键在设置扩展标志。
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 例. 指令字长16位,可含有3、2、1或0 个地址,每个地址占4位。 操作码 地址码 15~ 12 11~ 8 7 ~ 4 3 ~ 0 0000 XYZ 1110 XYZ 三地址指令 15条 1111 0000 Y Z 1111 1110 Y Z 二地址指令 15条 11111111 0000 Z 1111 1111 1110 Z 一地址指令 15条 111111111111 0000 1111 11111111 1111 零地址指令 16条
练 习 1.设指令系统指令字长是12位,每个地址长3位,该指令系统有一地址、二地址和三地址三种格式。假设该指令系统有6条三地址指令,12条二地址指令,请问一地址指令有多少条? 2.某计算机指令字长16位,每个地址是6位,指令有零地址、一地址和二地址三种格式,设有二地址指令N条,零地址指令M条,试问一地址指令最多有多少条?
操作码地址码 11~ 9 8~ 6 5~3 2 ~ 0 000 XY Z 101XY Z ... ... ... ... 110000Y Z 110111Y Z ... ... ... ... 111000Y Z 111011 Y Z ... ... ... ... 练习答案 1、解:指令字长是12位,每个地址长3位。 6条三地址指令,12条二地址指令。 三地址指令 6条23 – 6 = 2 二地址指令 12条 23 *2=16 16-12=4 一地址指令? 23 *4 ((23- 6)*23 – 12)* 23 = 32
练习答案 2、解:指令字长16位,每个地址是6位 二地址指令N条,零地址指令M条 设一地址指令有X条 ((24-N)*26-X)*26=M 得:X=(24-N)*26-M*2-6
0 1 2 3 4 5 6 7 8 15 基本操作 进位 移位 回送 判跳 操作数 2.3.1.2 操作码格式 3. 单功能型或复合型操作码 复合型操作码: 操作码分为几部分,每部分表示一种操作。 例如:NOVA系列和ECLIPSE系列的算逻指令
2.3.1.3 地址结构 存储单元地址码 寄存器编号 指令中提供的地址数 直接或间接给出 1.指令提供地址的方式 显地址方式:指令中明显指明地址。 隐地址方式:地址隐含约定,如事先隐含约定操作数在某个寄存器中或在堆栈中,不出现在指令中。 使用隐地址可以减少指令中的地址数,简 化地址结构。
OP D1 D2 D3 D4 (D1)OP(D2) D3 (D4) 下条指令 2.3.1.3 地址结构 2. 地址结构 1)四地址指令 格式: 操作数地址 结果地址 下条指令地址 功能:
OP D1 D2 D3 (D1)OP(D2) D3 (PC) + n PC 2.3.1.3 地址结构 2)三地址指令 格式: 用指令计数器PC指示指令地址。 操作数地址 结果地址 功能: 现行指令所占字节数 下条指令地址 转移时,用转移地址修改PC内容。
OP D1 D2 (D1)OP(D2) D1 (PC) + n PC 2.3.1.3 地址结构 3)二地址指令 格式: 目的 源 功能:
(D1)OP(A) A (PC) + n PC OP D1 OP(D1) D1 (PC) + n PC 2.3.1.3 地址结构 4)一地址指令 格式: 隐含约定 功能: 双操作数: 单操作数:
10 20 30 46 46 SP SP OP(A) A (PC) + n PC ((SP))OP((SP)+1) (SP)+1 (SP)+1 SP 栈顶下一单元内容 OP 栈顶内容 新栈顶 5)零地址指令 格式: 功能: 指向新栈顶 a. 用于堆栈: 执行前: 执行后: 例.ADD; 低 低 高 高 b.操作数隐含指令:
2.3.2 寻址方式 • 什么叫寻址方式? 指令中提供操作数或提供操作数地址的方式,称为寻址方式或编址方式。 一个指令系统采用什么样的寻址方式与存储结构及其存取方式有关。
2.3.2.1 存储结构与存取方式 1.在指令中 通过指令可直接获得操作数。 2.CPU中的寄存器 访问时只需给出寄存器号或隐含约定(根据操作码)。称为可编址寄存器。 3.主存 访问时应给出相应的存储单元号
2.3.2.1 存储结构与存取方式 4.堆栈 堆栈的操作在栈顶实现,栈顶地址有堆栈指针寄存器SP给出,用隐地址访问。 5.外设 访问时,主机通过外设中的相关寄存器实现与外设的I/O传送。可将这些寄存器与主存统一编址,或为其分配专门的I/O端口地址。
操作码OP 立即数S 基本指令 立即数S 2.3.2.2 常见寻址方式 • 立即寻址方式 由指令直接给出操作数。 数在指令中,其长度固定、有限。 定长格式: 变长格式: 数在基本指令之后,其长度可变。 用来提供常数、设置初值等。
操作码OP 寄存器号R 2.3.2.2 常见寻址方式 • 直接寻址方式 指令直接给出操作数地址 存储单元号 寄存器号 (数在M中) (数在R中) (寄存器寻址) (1)寄存器直接寻址 格式 R所占位数少; 访问R比访问M快 S =(R)
1000H 2000H 3A00H 3C00H R0 R1 R2 R3 2.3.2.2 常见寻址方式 例. 指令:INC R1
操作码OP 有效地址D 基本指令 DL DH 2.3.2.2 常见寻址方式 (2)存储器直接寻址 (直接寻址) 定长格式 变长格式 D的位数可覆盖 整个存储空间 S =(D)
M 1000H 1A00H 2000H 1B00H ... 2.3.2.2 常见寻址方式 例. 指令:INC 2000H 直接寻址主要用于访问固定的存储单元或寄存器。
操作码OP 间接地址D 2.3.2.2 常见寻址方式 3. 间接寻址方式 指令给出操作数的间接地址。 存储单元号 寄存器号 (数在M中) (数在M中) 间址单元 地址指针 M (1)存储器间址 D=0030 0060 格式 ... 0060 S S =((D)) ... M M 间址单元地址 操作数地址 操作数
操作码OP 寄存器号R 2.3.2.2 常见寻址方式 (2)寄存器间址 M 地址指针 格式 R=02 ... 0040 ... S =((R)) 0040 S ... R M 操作数 寄存器号 操作数地址 R所占位数少;R可提供全字长地 址码;修改R内容比修改M内容快。
2.3.2.2 常见寻址方式 (3)自增型寄存器间址 R M 寄存器号 操作数地址 操作数 (R)+1 先操作后修改 (4)自减型寄存器间址 R M 寄存器号 寄存器内容减1 操作数地址 操作数 先修改后操作
0070 M 低 高 操作码OP 堆栈指针SP 2.3.2.2 常见寻址方式 (5)堆栈寻址 格式 S =((SP)) SP 堆栈向上生成 ... 栈顶 S 压栈: SP自动减1,再存数。 -(SP),自减型间址。 ... 出栈: ... 先取数,SP再自动加1。 (SP)+,自增型间址。 SP既可出现在指令中,也可隐含约定。
2.3.2.2 常见寻址方式 (6)多重间址 • 存储器多重间址: M M M 间址单元地址 间址单元地址 操作数地址 操作数 • 寄存器多重间址 R M M 寄存器号 间址单元地址 操作数地址 操作数
操作码OP RX D 2.3.2.2 常见寻址方式 4. 变址、基址及其变化 (1)变址寻址方式 指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。 格式 变址寄存器号 形式地址 S =((RX)+ D) 基准地址 变址量
0 1 2 ... ... n-1 2.3.2.2 常见寻址方式 例. 用变址方式访问一组连续区间内的数组元素。 D为存储区首址; (RX)为所访单元距离 首址的长度; RX初值为0,每访问一 个单元,(RX)+1。 D=首址 D+1 D+2 ... D+n-1
M Rb Rb ... …... ... …... 操作码OP Rb D 2.3.2.2 常见寻址方式 (2)基址寻址方式 指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。 4K D=2 格式 基址寄存器号 位移量 4K D=2 S =((Rb)+ D) 基准地址 相对于基址的位移
M Rb Rb 学生姓名 性别 4K D=2 年龄 ... …... 学生姓名 性别 4K D=2 年龄 ... …... 2.3.2.2 常见寻址方式 便于访问两维数组中某类指定的元素。 比如:
2.3.2.2 常见寻址方式 • 变址与基址的区别: 变址:指令提供基准量(不变),R提供修改量 (可变);适于处理一维数组。 基址:指令提供位移量(不变),R提供基准量 (可变);用于扩大有限字长指令的访存空间。
操作码OP Rb RX D 2.3.2.2 常见寻址方式 (3)基址加变址方式 指令给出两个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。 格式 位移量 基址寄存器号 变址寄存器号 便于处理两维数组。 S =((Rb)+(RX)+ D)
D (Rb)+(Rx) 2.3.2.2 常见寻址方式 例. 访问二维表格。 S =((Rb)+(RX)+ D) 令: (Rb)+(Rx)指向各行起始; D指向一行中各元素。 (Rb)为表格首址 Rx初值为0,每访问一行,(RX)+4; D初值为0,每访问一列,D+1。
操作码OP PC±D 2.3.2.2 常见寻址方式 (4)相对寻址方式 指令给出位移量,PC内容与位移量之和为有效地址。 程序计数器,由寄存器号选定或隐含指定 格式 位移量 S =((PC)±D) 有效地址相对PC上下浮动,给编程带来方便。
PC ... 0165H ... ... 操作码OP PCD ... (5)页面寻址方式 指令给出位移量,PC的高位部分与位移量拼接,形成有效地址。 格式 或隐含指定 位移量 S =((PC)H,D) 页号 页内地址 用于页式管理存储系统。 寻址速度快,适于组织程序模块,有效利用存储空间。 D=7C S 017CH
操作码OP 寻址方式 R 寻址方式 R 2.3.2.2 常见寻址方式 • 相关问题: 寻址方式如何表示? (1)指令中设置专门字段说明寻址方式 例.某机指令的每个地址字段中各设置一个 3位的寻址方式字段。 3位 3位 目的地址字段 源地址字段
2.3.2.2 常见寻址方式 (2)操作码隐含说明不同寻址方式 例.某机指令操作码最高两位 00:RR型指令,寄存器-寄存器寻址 01:RX型指令,寄存器-变址寻址 10:SI型指令,基址-立即寻址 11:SS型指令,基址-基址寻址
2.3.2.3 堆栈操作 1.堆栈的存取规则:“先进后出”。 2.堆栈的硬件设置: 一端固定,另一端浮动。设置堆栈指针SP指向浮动端。 3.堆栈的工作方式: (1)向上生成方式 (P57图2-16) (2)向下生成方式 (P59图2-19) (3)栈顶固定方式 (P60图2-20)
2.3.3 指令的功能和类型 • 不同的机种,对指令的分类方法不同。通常有三类: 1. 按指令格式分类 分为双操作数指令、单操作数指令、程序转移指令等。 2. 按操作数寻址方式分类 如IBM370,其指令可分为:RR型、RX型、RS型、SI型及SS型。 3. 按指令功能分类 可分为传送指令、访存指令、算术运算指令、逻辑运算指令、I/O指令、程序控制类指令、处理机控制类指令等。
2.3.3.1 传送类指令 • 机器的绝大部分操作(数据传送、字符串处理、堆栈操作、输入/输出操作等),从广义角度看,都可以归结为信息的传送,或在传送过程中作了运算处理。 数 源地址 目的地址 • 传送指令一次可以传送一个数据或一批数据,有些机器设置了数据交换指令,可实现双向传送。
2.3.3.1 传送类指令 • 在设置传送指令时,应考虑三个方面: • 规定传送范围 (1)寄存器与寄存器 (2)存储器与寄存器 (3)I/O接口寄存器与主机 —— 传送指令 —— 访存指令 —— I/O指令
2.3.3.1 传送类指令 2.指明传送单位 传送指令用某种方式指明数据是按字节、 字、双字还是数组为单位进行传送。 例. VAX11 (用操作码说明): MOVB 8 MOVW 16 MOVL 32 80X86 (用地址量说明): MOVAL,BL(8) MOVAX,BX(16) MOVEAX,EBX(32)
2.3.3.1 传送类指令 3.设置寻址方式 • 传送指令以什么方式给出数据的源地址和目的地址,这涉及到寻址方式的选择。 • 在寻址方式的设置上几乎不受限制,能比较集中地反映指令系统各种寻址方式的实现。
主机 外设 2.3.3.2 输入/输出指令 这是用来实现主机与外部设备之间进行信息交换的一类指令。 各种信息 以主机为基准,信息由外部设备传向主机称为输入(Input),信息由主机传给外部设备称为输出(Output)。
2.3.3.2 输入/输出指令 • 在设置输入/输出指令时,应考虑: 1. I/O指令的功能扩展 如何用通用I/O指令实现对各种具体设备的控制? (1)I/O指令中留有扩展余地 指令中某些字段编码事先不定义,需要 时再约定其含义。 用于外设种类、数量不多的场合。
2.3.3.2 输入/输出指令 (2)I/O接口中设置控制/状态寄存器 • 主机用输出指令或传送指令将具体设备的控制 • 命令按约定的代码格式送往接口中的控制寄存器, • 向外设发出命令。 • 外设的状态信息也以某种格式放在接口的状态 • 寄存器中,主机用输入指令或传送指令从状态寄 • 存器中取出有关信息进行查询、分析。 如何设置控制/状态寄存器是接口设计的关键。
2.3.3.2 输入/输出指令 2. 主机对外设的寻址方式 寻找I/O接口中的寄存器的方式。 (1)单独编址 编址到设备:每个设备有各自的设备编 码;I/O指令中给出设备码,并指明访 问该设备的哪个寄存器。 编址到寄存器:为每个寄存器(I/O端口) 分配独立的端口地址;I/O指令中给出端 口地址。