1 / 73

2.3 指令信息的表示

2.3 指令信息的表示. 指令:计算机要执行某种操作的命令,称为指令。 指令系统:一台计算机所能执行的全部指令的集合。 本节主要讨论:一般指令格式 常用寻址方式 面向用户指令类型. 操作码 OP 地址码 AD. 2.3.1 指令格式. 指令基本格式. 一个. 一个或几个. 1. 操作码是指明指令操作性质的命令码。它提供指令的操作控制信息。. 2. 地址码指明与操作数相关的信息。. 2.3.1 指令格式. 对指令格式,应注意如下问题: 1 )指令字长需多少位,是定字长,还是变字长

tanaya
Télécharger la présentation

2.3 指令信息的表示

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2.3 指令信息的表示 • 指令:计算机要执行某种操作的命令,称为指令。 • 指令系统:一台计算机所能执行的全部指令的集合。 本节主要讨论:一般指令格式 常用寻址方式 面向用户指令类型

  2. 操作码OP 地址码 AD 2.3.1 指令格式 • 指令基本格式 一个 一个或几个 1.操作码是指明指令操作性质的命令码。它提供指令的操作控制信息。 2. 地址码指明与操作数相关的信息。

  3. 2.3.1 指令格式 对指令格式,应注意如下问题: 1)指令字长需多少位,是定字长,还是变字长 2)操作码长度 若长度为n,则可表示2n条指令。 3)地址结构 指令中涉及哪些地址,在指令中给出哪些地址,哪些地址隐含约定。 4)寻址方式 如何获得操作数的值,是直接给出还是间接给出,或是经过变址计算获得。

  4. 2.3.1.1 指令字长 • 指令字长与主存的编址单位及CPU的机器字长有一定关系。 • 指令字长位数越多,所能表示的操作信息和地址信息也就越多,指令的功能越丰富,但所占空间和时间也越多。 定长指令格式 变长指令格式 便于控制 合理利用存储空间

  5. 2.3.1.2 操作码格式 操作码一般在指令格式的前面一个或几个字节。根据它可以判明该指令的基本类型及相应的字节数。 1.定长操作码 各指令中操作码的位置、位数固定相同。 例:INTEL 8088 的前6位为操作码。 2.扩展操作码 各指令中操作码的位置、位数不固定,根据 需要变化。 关键在设置扩展标志。

  6. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 例. 指令字长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条

  7. 练 习 1.设指令系统指令字长是12位,每个地址长3位,该指令系统有一地址、二地址和三地址三种格式。假设该指令系统有6条三地址指令,12条二地址指令,请问一地址指令有多少条? 2.某计算机指令字长16位,每个地址是6位,指令有零地址、一地址和二地址三种格式,设有二地址指令N条,零地址指令M条,试问一地址指令最多有多少条?

  8. 操作码地址码 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

  9. 练习答案 2、解:指令字长16位,每个地址是6位 二地址指令N条,零地址指令M条 设一地址指令有X条 ((24-N)*26-X)*26=M 得:X=(24-N)*26-M*2-6

  10. 0 1 2 3 4 5 6 7 8 15 基本操作 进位 移位 回送 判跳 操作数 2.3.1.2 操作码格式 3. 单功能型或复合型操作码 复合型操作码: 操作码分为几部分,每部分表示一种操作。 例如:NOVA系列和ECLIPSE系列的算逻指令

  11. 2.3.1.3 地址结构 存储单元地址码 寄存器编号 指令中提供的地址数 直接或间接给出 1.指令提供地址的方式 显地址方式:指令中明显指明地址。 隐地址方式:地址隐含约定,如事先隐含约定操作数在某个寄存器中或在堆栈中,不出现在指令中。 使用隐地址可以减少指令中的地址数,简 化地址结构。

  12. OP D1 D2 D3 D4 (D1)OP(D2) D3 (D4) 下条指令 2.3.1.3 地址结构 2. 地址结构 1)四地址指令 格式: 操作数地址 结果地址 下条指令地址 功能:

  13. OP D1 D2 D3 (D1)OP(D2) D3 (PC) + n PC 2.3.1.3 地址结构 2)三地址指令 格式: 用指令计数器PC指示指令地址。 操作数地址 结果地址 功能: 现行指令所占字节数 下条指令地址 转移时,用转移地址修改PC内容。

  14. OP D1 D2 (D1)OP(D2) D1 (PC) + n PC 2.3.1.3 地址结构 3)二地址指令 格式: 目的 源 功能:

  15. (D1)OP(A) A (PC) + n PC OP D1 OP(D1) D1 (PC) + n PC 2.3.1.3 地址结构 4)一地址指令 格式: 隐含约定 功能: 双操作数: 单操作数:

  16. 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.操作数隐含指令:

  17. 2.3.2 寻址方式 • 什么叫寻址方式? 指令中提供操作数或提供操作数地址的方式,称为寻址方式或编址方式。 一个指令系统采用什么样的寻址方式与存储结构及其存取方式有关。

  18. 2.3.2.1 存储结构与存取方式 1.在指令中 通过指令可直接获得操作数。 2.CPU中的寄存器 访问时只需给出寄存器号或隐含约定(根据操作码)。称为可编址寄存器。 3.主存 访问时应给出相应的存储单元号

  19. 2.3.2.1 存储结构与存取方式 4.堆栈 堆栈的操作在栈顶实现,栈顶地址有堆栈指针寄存器SP给出,用隐地址访问。 5.外设 访问时,主机通过外设中的相关寄存器实现与外设的I/O传送。可将这些寄存器与主存统一编址,或为其分配专门的I/O端口地址。

  20. 操作码OP 立即数S 基本指令 立即数S 2.3.2.2 常见寻址方式 • 立即寻址方式 由指令直接给出操作数。 数在指令中,其长度固定、有限。 定长格式: 变长格式: 数在基本指令之后,其长度可变。 用来提供常数、设置初值等。

  21. 操作码OP 寄存器号R 2.3.2.2 常见寻址方式 • 直接寻址方式 指令直接给出操作数地址 存储单元号 寄存器号 (数在M中) (数在R中) (寄存器寻址) (1)寄存器直接寻址 格式 R所占位数少; 访问R比访问M快 S =(R)

  22. 1000H 2000H 3A00H 3C00H R0 R1 R2 R3 2.3.2.2 常见寻址方式 例. 指令:INC R1

  23. 操作码OP 有效地址D 基本指令 DL DH 2.3.2.2 常见寻址方式 (2)存储器直接寻址 (直接寻址) 定长格式 变长格式 D的位数可覆盖 整个存储空间 S =(D)

  24. M 1000H 1A00H 2000H 1B00H ... 2.3.2.2 常见寻址方式 例. 指令:INC 2000H 直接寻址主要用于访问固定的存储单元或寄存器。

  25. 操作码OP 间接地址D 2.3.2.2 常见寻址方式 3. 间接寻址方式 指令给出操作数的间接地址。 存储单元号 寄存器号 (数在M中) (数在M中) 间址单元 地址指针 M (1)存储器间址 D=0030 0060 格式 ... 0060 S S =((D)) ... M M 间址单元地址 操作数地址 操作数

  26. 操作码OP 寄存器号R 2.3.2.2 常见寻址方式 (2)寄存器间址 M 地址指针 格式 R=02 ... 0040 ... S =((R)) 0040 S ... R M 操作数 寄存器号 操作数地址 R所占位数少;R可提供全字长地 址码;修改R内容比修改M内容快。

  27. 2.3.2.2 常见寻址方式 (3)自增型寄存器间址 R M 寄存器号 操作数地址 操作数 (R)+1 先操作后修改 (4)自减型寄存器间址 R M 寄存器号 寄存器内容减1 操作数地址 操作数 先修改后操作

  28. 0070 M 低 高 操作码OP 堆栈指针SP 2.3.2.2 常见寻址方式 (5)堆栈寻址 格式 S =((SP)) SP 堆栈向上生成 ... 栈顶 S 压栈: SP自动减1,再存数。 -(SP),自减型间址。 ... 出栈: ... 先取数,SP再自动加1。 (SP)+,自增型间址。 SP既可出现在指令中,也可隐含约定。

  29. 2.3.2.2 常见寻址方式 (6)多重间址 • 存储器多重间址: M M M 间址单元地址 间址单元地址 操作数地址 操作数 • 寄存器多重间址 R M M 寄存器号 间址单元地址 操作数地址 操作数

  30. 操作码OP RX D 2.3.2.2 常见寻址方式 4. 变址、基址及其变化 (1)变址寻址方式 指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。 格式 变址寄存器号 形式地址 S =((RX)+ D) 基准地址 变址量

  31. 0 1 2 ... ... n-1 2.3.2.2 常见寻址方式 例. 用变址方式访问一组连续区间内的数组元素。 D为存储区首址; (RX)为所访单元距离 首址的长度; RX初值为0,每访问一 个单元,(RX)+1。 D=首址 D+1 D+2 ... D+n-1

  32. M Rb Rb ... …... ... …... 操作码OP Rb D 2.3.2.2 常见寻址方式 (2)基址寻址方式 指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。 4K D=2 格式 基址寄存器号 位移量 4K D=2 S =((Rb)+ D) 基准地址 相对于基址的位移

  33. M Rb Rb 学生姓名 性别 4K D=2 年龄 ... …... 学生姓名 性别 4K D=2 年龄 ... …... 2.3.2.2 常见寻址方式 便于访问两维数组中某类指定的元素。 比如:

  34. 2.3.2.2 常见寻址方式 • 变址与基址的区别: 变址:指令提供基准量(不变),R提供修改量 (可变);适于处理一维数组。 基址:指令提供位移量(不变),R提供基准量 (可变);用于扩大有限字长指令的访存空间。

  35. 操作码OP Rb RX D 2.3.2.2 常见寻址方式 (3)基址加变址方式 指令给出两个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。 格式 位移量 基址寄存器号 变址寄存器号 便于处理两维数组。 S =((Rb)+(RX)+ D)

  36. D (Rb)+(Rx) 2.3.2.2 常见寻址方式 例. 访问二维表格。 S =((Rb)+(RX)+ D) 令: (Rb)+(Rx)指向各行起始; D指向一行中各元素。 (Rb)为表格首址 Rx初值为0,每访问一行,(RX)+4; D初值为0,每访问一列,D+1。

  37. 操作码OP PC±D 2.3.2.2 常见寻址方式 (4)相对寻址方式 指令给出位移量,PC内容与位移量之和为有效地址。 程序计数器,由寄存器号选定或隐含指定 格式 位移量 S =((PC)±D) 有效地址相对PC上下浮动,给编程带来方便。

  38. PC ... 0165H ... ... 操作码OP PCD ... (5)页面寻址方式 指令给出位移量,PC的高位部分与位移量拼接,形成有效地址。 格式 或隐含指定 位移量 S =((PC)H,D) 页号 页内地址 用于页式管理存储系统。 寻址速度快,适于组织程序模块,有效利用存储空间。 D=7C S 017CH

  39. 操作码OP 寻址方式 R 寻址方式 R 2.3.2.2 常见寻址方式 • 相关问题: 寻址方式如何表示? (1)指令中设置专门字段说明寻址方式 例.某机指令的每个地址字段中各设置一个 3位的寻址方式字段。 3位 3位 目的地址字段 源地址字段

  40. 2.3.2.2 常见寻址方式 (2)操作码隐含说明不同寻址方式 例.某机指令操作码最高两位 00:RR型指令,寄存器-寄存器寻址 01:RX型指令,寄存器-变址寻址 10:SI型指令,基址-立即寻址 11:SS型指令,基址-基址寻址

  41. 2.3.2.3 堆栈操作 1.堆栈的存取规则:“先进后出”。 2.堆栈的硬件设置: 一端固定,另一端浮动。设置堆栈指针SP指向浮动端。 3.堆栈的工作方式: (1)向上生成方式 (P57图2-16) (2)向下生成方式 (P59图2-19) (3)栈顶固定方式 (P60图2-20)

  42. 2.3.3 指令的功能和类型 • 不同的机种,对指令的分类方法不同。通常有三类: 1. 按指令格式分类 分为双操作数指令、单操作数指令、程序转移指令等。 2. 按操作数寻址方式分类 如IBM370,其指令可分为:RR型、RX型、RS型、SI型及SS型。 3. 按指令功能分类 可分为传送指令、访存指令、算术运算指令、逻辑运算指令、I/O指令、程序控制类指令、处理机控制类指令等。

  43. 2.3.3.1 传送类指令 • 机器的绝大部分操作(数据传送、字符串处理、堆栈操作、输入/输出操作等),从广义角度看,都可以归结为信息的传送,或在传送过程中作了运算处理。 数 源地址 目的地址 • 传送指令一次可以传送一个数据或一批数据,有些机器设置了数据交换指令,可实现双向传送。

  44. 2.3.3.1 传送类指令 • 在设置传送指令时,应考虑三个方面: • 规定传送范围 (1)寄存器与寄存器 (2)存储器与寄存器 (3)I/O接口寄存器与主机 —— 传送指令 —— 访存指令 —— I/O指令

  45. 2.3.3.1 传送类指令 2.指明传送单位 传送指令用某种方式指明数据是按字节、 字、双字还是数组为单位进行传送。 例. VAX11 (用操作码说明): MOVB 8 MOVW 16 MOVL 32 80X86 (用地址量说明): MOVAL,BL(8) MOVAX,BX(16) MOVEAX,EBX(32)

  46. 2.3.3.1 传送类指令 3.设置寻址方式 • 传送指令以什么方式给出数据的源地址和目的地址,这涉及到寻址方式的选择。 • 在寻址方式的设置上几乎不受限制,能比较集中地反映指令系统各种寻址方式的实现。

  47. 主机 外设 2.3.3.2 输入/输出指令 这是用来实现主机与外部设备之间进行信息交换的一类指令。 各种信息 以主机为基准,信息由外部设备传向主机称为输入(Input),信息由主机传给外部设备称为输出(Output)。

  48. 2.3.3.2 输入/输出指令 • 在设置输入/输出指令时,应考虑: 1. I/O指令的功能扩展 如何用通用I/O指令实现对各种具体设备的控制? (1)I/O指令中留有扩展余地 指令中某些字段编码事先不定义,需要 时再约定其含义。 用于外设种类、数量不多的场合。

  49. 2.3.3.2 输入/输出指令 (2)I/O接口中设置控制/状态寄存器 • 主机用输出指令或传送指令将具体设备的控制 • 命令按约定的代码格式送往接口中的控制寄存器, • 向外设发出命令。 • 外设的状态信息也以某种格式放在接口的状态 • 寄存器中,主机用输入指令或传送指令从状态寄 • 存器中取出有关信息进行查询、分析。 如何设置控制/状态寄存器是接口设计的关键。

  50. 2.3.3.2 输入/输出指令 2. 主机对外设的寻址方式 寻找I/O接口中的寄存器的方式。 (1)单独编址 编址到设备:每个设备有各自的设备编 码;I/O指令中给出设备码,并指明访 问该设备的哪个寄存器。 编址到寄存器:为每个寄存器(I/O端口) 分配独立的端口地址;I/O指令中给出端 口地址。

More Related