1 / 54

第 5 章 指令系统

第 5 章 指令系统. 指令(机器指令) :让计算机执行某种操作的命令。 指令系统: 一台计算机中所有机器指令的集合。. 第 5 章 指令系统. §5.1 指令格式 §5.2 寻址方式 §5.3 指令类型 §5.4 堆栈和堆栈存取方式 §5.5 CISC 与 RISC 指令 §5.6 MMX 技术. §5.1 指令格式. 一、指令格式 二、指令长度. 操作码字段 OP. 地址码字段 D. 一、指令格式. 1 、机器指令的组成: 由 操作码 (表示操作性质)和 操作数 (表示操作对象)或 操作数的地址码 组成。.

emera
Download Presentation

第 5 章 指令系统

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. 第5章 指令系统 指令(机器指令):让计算机执行某种操作的命令。 指令系统:一台计算机中所有机器指令的集合。

  2. 第5章 指令系统 §5.1 指令格式 §5.2 寻址方式 §5.3 指令类型 §5.4 堆栈和堆栈存取方式 §5.5 CISC与RISC指令 §5.6 MMX技术

  3. §5.1 指令格式 一、指令格式 二、指令长度

  4. 操作码字段 OP 地址码字段 D 一、指令格式 1、机器指令的组成: 由操作码(表示操作性质)和操作数(表示操作对象)或操作数的地址码组成。 2、指令的基本格式: 例:(51) ADD A, direct 25 direct 00101001 00001000

  5. (1)三地址指令: OP D1 D2 D3 (2)二地址指令: OP D1 D2 (3)一地址指令: OP D OP (4)零地址指令: 一、指令格式 3、按指令包含的地址的个数分类:

  6. 二、指令长度 原则: 1.指令长度应为存储器基本字长的整数倍 : 指令长度可以固定,也可以变化。 2.指令字长应尽量短: 有利于提高程序的效率,即减少所需存储量和加快运行速度。

  7. §5.2 寻址方式 一、立即寻址 二、直接寻址 三、间接寻址 四、寄存器(直接)寻址 五、寄存器间接寻址 六、寄存器变址寻址 七、相对寻址 八、基址寻址 九、隐含寻址方式 十、其它寻址方式

  8. 存储器地址 存储器内容 存储器地址 存储器内容 n 操作码 n 操作码 n+1 8位立即数 n+1 立即数低8位 n+2 下条指令 n+2 立即数高8位 n+3 下条指令 (b) 16位立即数 (a) 8位立即数 图5.1 按字节编址机器中的立即寻址指令 §5.2 寻址方式 一、立即寻址: 指令直接给出操作数(立即数)本身。 例如:MOV A, #data 74 data

  9. 存储器地址 存储器内容 n 操作码 n+1 操作数地址低8位 n+2 操作数地址高8位 n+3 下条指令 图5.2 按字节编址机器中的直接寻址指令 §5.2 寻址方式 二、直接寻址: 指令直接给出操作数地址。 例如:MOV A,direct E5 direct

  10. OP @ 间接地址 主存 有效地址 图5.3 单级间接寻址 操作数 §5.2 寻址方式 三、间接寻址: 指令给出存放操作数地址的存储单元地址。

  11. OP 寄存器号 OP 寄存器号1 寄存器号2 §5.2 寻址方式 四、寄存器(直接)寻址: 操作数在指令指定的CPU的某个寄存器中。 优点: 1、CPU寄存器数量远小于内存单元,所以寄存器号比内存地址短,因而寄存器寻址方式指令短; 2、操作数已在CPU中,不用访存,因而指令执行速度快。 例如:MOV A,Rn E8-EF

  12. §5.2 寻址方式 五、寄存器间接寻址: 操作数地址在指令指定的CPU某个寄存器中。 例如:MOV A,@Ri E6,E7

  13. OP 寄存器号 形式地址 §5.2 寻址方式 六、寄存器变址寻址: 指定一个CPU寄存器(称为变址寄存器)和一个形式地址,操作数地址是二者之和。 形式地址:指令的操作数地址字段不是操作数的真实地址。 例如:MOV AL,[SI+1000H] 其中:SI为变址寄存器,1000为形式地址。

  14. §5.2 寻址方式 SI data n … + data 2 data 1 形式地址 图5.4 变址寻址选择数组数据

  15. §5.2 寻址方式 七、相对寻址: 相对寻址是把程序计数器PC的内容,加上由指令给出的形式地址而形成操作数地址。 相对寻址实际上是规定了操作数和指令的相对位置,因而得名。 采用相对寻址便于编制可浮动程序,这种程序随便放在内存什么位置,都能正常运行。 相对寻址是以程序计数器PC作为变址寄存器的特殊变址寻址的情况。 例如:MOVC A, @A+PC

  16. §5.2 寻址方式 八、基址寻址: 基址寻址是把由指令中给出的地址(形式地址,或称位移量)与CPU 中的某个基址寄存器相加而得到实际的操作数地址。

  17. §5.2 寻址方式 九、隐含寻址方式 : 操作码中隐含着操作数地址。 例如单地址指令中只给出一个操作数地址,另一个操作数规定为累加器,它的地址就是隐含的。另外,如堆栈指令,其操作数在堆栈内,指令中无需指出具体地址。

  18. §5.2 寻址方式 十、其它寻址方式: 有的计算机指令系统中还有更复杂的寻址方式,如基址变址寻址、位寻址、块寻址、串寻址等等 。

  19. §5.3 指令类型 一、指令系统的设计原则 二、指令分类

  20. 一、指令系统的设计原则 1、完备性: 指令系统的功能应尽量完备 。 2、兼容性: 至少要能做到“向上兼容”,即低档机上运行的软件可以在高档机上运行。 3、均匀性: 数据处理指令能对多种类型的数据进行处理,包括三种整数(字节、字、双字)和两种浮点数(单精度和双精度浮点数)。 4、可扩充性: 操作码字段要保留一定的空间,以便需要时进行功能扩充。

  21. 指令操作码的扩展技术 在指令字中用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,把它们的操作码扩充到该地址字段,这样既能充分地利用指令字的各个字段,又能在不增加指令长度的情况下扩展操作码的长度,使它能表示更多的指令。

  22. 指令操作码的扩展技术 例1:已知指令字长为16位,每个地址码为4位,采用扩展操作码的方式,设计15条三地址指令、15条二地址指令、15条一地址指令、16条零地址指令。

  23. 指令操作码的扩展技术

  24. 指令操作码的扩展技术 例2:某机指令系统采用定字长指令格式,指令字长32位,每个操作数的地址编码长12位。指令分二地址、单地址和无地址三类。若二地址指令有K条,一地址指令有L条,则无地址指令有多少条? 解: 1、[(28-K)×212-L] ×212 2、 232 - K×224 - L×212

  25. 二、指令分类 1、按功能分类 2、按操作数个数分类 3、按操作数寻址方式分类

  26. 1、按功能分类 1、按功能分类: (1)、算术和逻辑运算指令 (2)、移位指令和循环指令 (3)、传送类指令 (4)、串指令 (5)、顺序控制指令 (6)、CPU控制指令 (7)、输入、输出指令

  27. 1、按功能分类 (1)、算术和逻辑运算指令: 加(ADD)、减(SUB)、比较(CMP)、乘(MUL)、除(DIV)、与(AND)、或(OR)、取反(NOT)、异或(XOR)、变补(NEG)、加1(INC)、减1(DEC)、带进位的加(ADC)、带借位的减(SBB)指令等。

  28. 1、按功能分类 (2)、移位指令和循环指令: 算术移位、逻辑移位、环移、半字交换等。 (3)、传送类指令: 传送(MOV)、交换(XCHG)等。 (4)、串指令: 对字符串进行操作的指令。如有字符串传送、比较、检索等指令。

  29. 1、按功能分类 (5)、顺序控制指令: 用来控制程序执行的顺序。 有条件转移、无条件转移(JMP)、跳步(SKIP)、转子(CALL)、返主(RET)等指令。 (6)、CPU控制指令: 停机、开中断、关中断等指令。 (7)、输入、输出指令: 用于完成CPU与外部设备交换数据或传送控制命令及状态信息

  30. 2、按操作数个数分类 (1)、双操作数指令:如:ADD、SUB、AND等。 (2)、单操作数指令:如:NEG、NOT、INC、DEC等。 (3)、无操作数指令:如:停机,开中断、关中断等。

  31. 3、按操作数寻址方式分类 (1)、R-R型:两个操作数都在CPU的寄存器中。 (2)、R-S型:两个操作数中一个在CPU寄存器中,另一个在内存中。 (4)、S-S型:两个操作数都在内存中。

  32. §5.4 堆栈和堆栈存取方式 堆栈:一种特定的数据结构,其特点是后进先出(LIFO)或先进后出(FILO)。 入栈(进栈、压栈):往堆栈里存数。 出栈(弹出):从堆栈里取数。 一、用移位寄存器实现堆栈 二、内存中开辟堆栈区

  33. 栈顶 栈底 空栈: 栈顶 栈底 存入a: a 栈顶 栈底 存入b: a b 栈顶 栈底 取出b: a 图5.10 栈顶固定方式堆栈及其存取 一、用移位寄存器实现堆栈 用若干寄存器构成,又叫栈顶固定方式堆栈。

  34. 二、内存中开辟堆栈区 在内存中开辟堆栈区。 存储器单元固定,而栈顶位置动态变化。在CPU中专门设置堆栈指针SP,指示栈顶位置,存取只能在栈顶进行。 1、自底向上生成堆栈 2、自顶向下生成堆栈

  35. 二、内存中开辟堆栈区 1、自底向上生成堆栈: 建栈:堆栈指针SP指向栈底下面一个单元。 入栈操作(PUSH)步骤: 1)SP-1→SP 2)存入数据→(SP) 出栈操作(POP)步骤: 1)(SP)内容读出 2)SP+1→SP 入栈操作时,指针向减小的方向变化,所以叫自底向上生成堆栈。

  36. 二、内存中开辟堆栈区

  37. 二、内存中开辟堆栈区 2、自顶向下生成堆栈 : 堆栈:指针SP指向栈底上面一个单元。 入栈:操作(PUSH)步骤: 1)SP+1→SP 2)存入数据→(SP) 出栈:操作(POP)步骤: 1)(SP)内容读出 2)SP-1→SP 入栈操作时,指针向增大的方向变化,所以叫自顶向下生成堆栈。

  38. §5.4 CISC与RISC指令 CISC:复杂指令集计算机。 RISC:精简指令集计算机。 一、复杂指令集计算机CISC 二、精简指令集计算机RISC 三、CISC与RISC之争论

  39. 一、复杂指令集计算机CISC 使指令系统越来越复杂的出发点: 1、使目标程序得到优化。 2、给高级语言提供更好的支持。 3、提供对操作系统的支持。

  40. 一、复杂指令集计算机CISC 设计目的:用最少的机器语言指令来完成所需的计算任务。 例如:乘法运算,MUL ADDRA, ADDRB C语言:a*=b 可以直接编译为一条乘法指令。

  41. 二、精简指令集计算机RISC 通过简化指令使计算机的结构更加简单合理,从而提高机器的性能。 RISC的特点: 1、指令数目较少,一般都选用使用频度最高的一些简单指令; 2、指令长度固定,指令格式种类少,寻址方式种类少; 3、大多数指令可在一个机器周期内完成; 4、通用寄存器数量多,只有存数/取数指令访问存储器,而其余指令均在寄存器之间进行操作。

  42. 二、精简指令集计算机RISC 例如:乘法运算,MUL ADDRA, ADDRB C语言:a*=b RISC架构要求软件来指定各个操作步骤。 MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。 这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。

  43. 三、CISC与RISC之争论

  44. §5.6 MMX技术 MMX是Intel公司为提高PC机上处理多媒体和通信能力而推出的新一代处理器技术。 它通过在Pentium或Pentium Pro处理器中增加8个64位寄存器和57条新指令来实现。

  45. 作业 P150 1、9、10

  46. 指令操作码的扩展技术 课堂练习:某机指令系统采用定字长指令格式,指令字长20位,每个操作数的地址编码长6位。指令分二地址、单地址和无地址三类。若二地址指令数取最大值,而且一地址指令数也取最大值,这3种指令最多可能拥有的指令数各是多少? 解: 二地址:255、单地址:63、无地址:64

  47. 8086指令详解 8086采用变字节指令格式,指令由1-6个字节组成。一般指令格式如下: 第一字节: 操作码 D W D:方向位。D=0:REG为源操作数寄存器;D=1:REG为目的操作数寄存器。 W:字位。W=0:参加运算的操作数为字节;W=1:参加运算的操作数为字。

  48. 8086指令详解 第二字节: MOD REG R/M MOD:R/M中的操作数方式编码。 REG:寄存器编码。 R/M:MOD=11:第二操作数的寄存器编号;MOD=00、01、10:指出存储器操作数的计算方法。 第3-6字节根据指令需要取舍,一般由它指出存储器操作数地址的位移量或立即数。

  49. 8086指令详解 MOD字段编码表:

  50. 8086指令详解 REG字段编码表:

More Related