560 likes | 929 Views
第 5 章 指令系统. 指令(机器指令) :让计算机执行某种操作的命令。 指令系统: 一台计算机中所有机器指令的集合。. 第 5 章 指令系统. §5.1 指令格式 §5.2 寻址方式 §5.3 指令类型 §5.4 堆栈和堆栈存取方式 §5.5 CISC 与 RISC 指令 §5.6 MMX 技术. §5.1 指令格式. 一、指令格式 二、指令长度. 操作码字段 OP. 地址码字段 D. 一、指令格式. 1 、机器指令的组成: 由 操作码 (表示操作性质)和 操作数 (表示操作对象)或 操作数的地址码 组成。.
E N D
第5章 指令系统 指令(机器指令):让计算机执行某种操作的命令。 指令系统:一台计算机中所有机器指令的集合。
第5章 指令系统 §5.1 指令格式 §5.2 寻址方式 §5.3 指令类型 §5.4 堆栈和堆栈存取方式 §5.5 CISC与RISC指令 §5.6 MMX技术
§5.1 指令格式 一、指令格式 二、指令长度
操作码字段 OP 地址码字段 D 一、指令格式 1、机器指令的组成: 由操作码(表示操作性质)和操作数(表示操作对象)或操作数的地址码组成。 2、指令的基本格式: 例:(51) ADD A, direct 25 direct 00101001 00001000
(1)三地址指令: OP D1 D2 D3 (2)二地址指令: OP D1 D2 (3)一地址指令: OP D OP (4)零地址指令: 一、指令格式 3、按指令包含的地址的个数分类:
二、指令长度 原则: 1.指令长度应为存储器基本字长的整数倍 : 指令长度可以固定,也可以变化。 2.指令字长应尽量短: 有利于提高程序的效率,即减少所需存储量和加快运行速度。
§5.2 寻址方式 一、立即寻址 二、直接寻址 三、间接寻址 四、寄存器(直接)寻址 五、寄存器间接寻址 六、寄存器变址寻址 七、相对寻址 八、基址寻址 九、隐含寻址方式 十、其它寻址方式
存储器地址 存储器内容 存储器地址 存储器内容 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
存储器地址 存储器内容 n 操作码 n+1 操作数地址低8位 n+2 操作数地址高8位 n+3 下条指令 图5.2 按字节编址机器中的直接寻址指令 §5.2 寻址方式 二、直接寻址: 指令直接给出操作数地址。 例如:MOV A,direct E5 direct
OP @ 间接地址 主存 有效地址 图5.3 单级间接寻址 操作数 §5.2 寻址方式 三、间接寻址: 指令给出存放操作数地址的存储单元地址。
OP 寄存器号 OP 寄存器号1 寄存器号2 §5.2 寻址方式 四、寄存器(直接)寻址: 操作数在指令指定的CPU的某个寄存器中。 优点: 1、CPU寄存器数量远小于内存单元,所以寄存器号比内存地址短,因而寄存器寻址方式指令短; 2、操作数已在CPU中,不用访存,因而指令执行速度快。 例如:MOV A,Rn E8-EF
§5.2 寻址方式 五、寄存器间接寻址: 操作数地址在指令指定的CPU某个寄存器中。 例如:MOV A,@Ri E6,E7
OP 寄存器号 形式地址 §5.2 寻址方式 六、寄存器变址寻址: 指定一个CPU寄存器(称为变址寄存器)和一个形式地址,操作数地址是二者之和。 形式地址:指令的操作数地址字段不是操作数的真实地址。 例如:MOV AL,[SI+1000H] 其中:SI为变址寄存器,1000为形式地址。
§5.2 寻址方式 SI data n … + data 2 data 1 形式地址 图5.4 变址寻址选择数组数据
§5.2 寻址方式 七、相对寻址: 相对寻址是把程序计数器PC的内容,加上由指令给出的形式地址而形成操作数地址。 相对寻址实际上是规定了操作数和指令的相对位置,因而得名。 采用相对寻址便于编制可浮动程序,这种程序随便放在内存什么位置,都能正常运行。 相对寻址是以程序计数器PC作为变址寄存器的特殊变址寻址的情况。 例如:MOVC A, @A+PC
§5.2 寻址方式 八、基址寻址: 基址寻址是把由指令中给出的地址(形式地址,或称位移量)与CPU 中的某个基址寄存器相加而得到实际的操作数地址。
§5.2 寻址方式 九、隐含寻址方式 : 操作码中隐含着操作数地址。 例如单地址指令中只给出一个操作数地址,另一个操作数规定为累加器,它的地址就是隐含的。另外,如堆栈指令,其操作数在堆栈内,指令中无需指出具体地址。
§5.2 寻址方式 十、其它寻址方式: 有的计算机指令系统中还有更复杂的寻址方式,如基址变址寻址、位寻址、块寻址、串寻址等等 。
§5.3 指令类型 一、指令系统的设计原则 二、指令分类
一、指令系统的设计原则 1、完备性: 指令系统的功能应尽量完备 。 2、兼容性: 至少要能做到“向上兼容”,即低档机上运行的软件可以在高档机上运行。 3、均匀性: 数据处理指令能对多种类型的数据进行处理,包括三种整数(字节、字、双字)和两种浮点数(单精度和双精度浮点数)。 4、可扩充性: 操作码字段要保留一定的空间,以便需要时进行功能扩充。
指令操作码的扩展技术 在指令字中用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,把它们的操作码扩充到该地址字段,这样既能充分地利用指令字的各个字段,又能在不增加指令长度的情况下扩展操作码的长度,使它能表示更多的指令。
指令操作码的扩展技术 例1:已知指令字长为16位,每个地址码为4位,采用扩展操作码的方式,设计15条三地址指令、15条二地址指令、15条一地址指令、16条零地址指令。
指令操作码的扩展技术 例2:某机指令系统采用定字长指令格式,指令字长32位,每个操作数的地址编码长12位。指令分二地址、单地址和无地址三类。若二地址指令有K条,一地址指令有L条,则无地址指令有多少条? 解: 1、[(28-K)×212-L] ×212 2、 232 - K×224 - L×212
二、指令分类 1、按功能分类 2、按操作数个数分类 3、按操作数寻址方式分类
1、按功能分类 1、按功能分类: (1)、算术和逻辑运算指令 (2)、移位指令和循环指令 (3)、传送类指令 (4)、串指令 (5)、顺序控制指令 (6)、CPU控制指令 (7)、输入、输出指令
1、按功能分类 (1)、算术和逻辑运算指令: 加(ADD)、减(SUB)、比较(CMP)、乘(MUL)、除(DIV)、与(AND)、或(OR)、取反(NOT)、异或(XOR)、变补(NEG)、加1(INC)、减1(DEC)、带进位的加(ADC)、带借位的减(SBB)指令等。
1、按功能分类 (2)、移位指令和循环指令: 算术移位、逻辑移位、环移、半字交换等。 (3)、传送类指令: 传送(MOV)、交换(XCHG)等。 (4)、串指令: 对字符串进行操作的指令。如有字符串传送、比较、检索等指令。
1、按功能分类 (5)、顺序控制指令: 用来控制程序执行的顺序。 有条件转移、无条件转移(JMP)、跳步(SKIP)、转子(CALL)、返主(RET)等指令。 (6)、CPU控制指令: 停机、开中断、关中断等指令。 (7)、输入、输出指令: 用于完成CPU与外部设备交换数据或传送控制命令及状态信息
2、按操作数个数分类 (1)、双操作数指令:如:ADD、SUB、AND等。 (2)、单操作数指令:如:NEG、NOT、INC、DEC等。 (3)、无操作数指令:如:停机,开中断、关中断等。
3、按操作数寻址方式分类 (1)、R-R型:两个操作数都在CPU的寄存器中。 (2)、R-S型:两个操作数中一个在CPU寄存器中,另一个在内存中。 (4)、S-S型:两个操作数都在内存中。
§5.4 堆栈和堆栈存取方式 堆栈:一种特定的数据结构,其特点是后进先出(LIFO)或先进后出(FILO)。 入栈(进栈、压栈):往堆栈里存数。 出栈(弹出):从堆栈里取数。 一、用移位寄存器实现堆栈 二、内存中开辟堆栈区
栈顶 栈底 空栈: 栈顶 栈底 存入a: a 栈顶 栈底 存入b: a b 栈顶 栈底 取出b: a 图5.10 栈顶固定方式堆栈及其存取 一、用移位寄存器实现堆栈 用若干寄存器构成,又叫栈顶固定方式堆栈。
二、内存中开辟堆栈区 在内存中开辟堆栈区。 存储器单元固定,而栈顶位置动态变化。在CPU中专门设置堆栈指针SP,指示栈顶位置,存取只能在栈顶进行。 1、自底向上生成堆栈 2、自顶向下生成堆栈
二、内存中开辟堆栈区 1、自底向上生成堆栈: 建栈:堆栈指针SP指向栈底下面一个单元。 入栈操作(PUSH)步骤: 1)SP-1→SP 2)存入数据→(SP) 出栈操作(POP)步骤: 1)(SP)内容读出 2)SP+1→SP 入栈操作时,指针向减小的方向变化,所以叫自底向上生成堆栈。
二、内存中开辟堆栈区 2、自顶向下生成堆栈 : 堆栈:指针SP指向栈底上面一个单元。 入栈:操作(PUSH)步骤: 1)SP+1→SP 2)存入数据→(SP) 出栈:操作(POP)步骤: 1)(SP)内容读出 2)SP-1→SP 入栈操作时,指针向增大的方向变化,所以叫自顶向下生成堆栈。
§5.4 CISC与RISC指令 CISC:复杂指令集计算机。 RISC:精简指令集计算机。 一、复杂指令集计算机CISC 二、精简指令集计算机RISC 三、CISC与RISC之争论
一、复杂指令集计算机CISC 使指令系统越来越复杂的出发点: 1、使目标程序得到优化。 2、给高级语言提供更好的支持。 3、提供对操作系统的支持。
一、复杂指令集计算机CISC 设计目的:用最少的机器语言指令来完成所需的计算任务。 例如:乘法运算,MUL ADDRA, ADDRB C语言:a*=b 可以直接编译为一条乘法指令。
二、精简指令集计算机RISC 通过简化指令使计算机的结构更加简单合理,从而提高机器的性能。 RISC的特点: 1、指令数目较少,一般都选用使用频度最高的一些简单指令; 2、指令长度固定,指令格式种类少,寻址方式种类少; 3、大多数指令可在一个机器周期内完成; 4、通用寄存器数量多,只有存数/取数指令访问存储器,而其余指令均在寄存器之间进行操作。
二、精简指令集计算机RISC 例如:乘法运算,MUL ADDRA, ADDRB C语言:a*=b RISC架构要求软件来指定各个操作步骤。 MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。 这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。
§5.6 MMX技术 MMX是Intel公司为提高PC机上处理多媒体和通信能力而推出的新一代处理器技术。 它通过在Pentium或Pentium Pro处理器中增加8个64位寄存器和57条新指令来实现。
作业 P150 1、9、10
指令操作码的扩展技术 课堂练习:某机指令系统采用定字长指令格式,指令字长20位,每个操作数的地址编码长6位。指令分二地址、单地址和无地址三类。若二地址指令数取最大值,而且一地址指令数也取最大值,这3种指令最多可能拥有的指令数各是多少? 解: 二地址:255、单地址:63、无地址:64
8086指令详解 8086采用变字节指令格式,指令由1-6个字节组成。一般指令格式如下: 第一字节: 操作码 D W D:方向位。D=0:REG为源操作数寄存器;D=1:REG为目的操作数寄存器。 W:字位。W=0:参加运算的操作数为字节;W=1:参加运算的操作数为字。
8086指令详解 第二字节: MOD REG R/M MOD:R/M中的操作数方式编码。 REG:寄存器编码。 R/M:MOD=11:第二操作数的寄存器编号;MOD=00、01、10:指出存储器操作数的计算方法。 第3-6字节根据指令需要取舍,一般由它指出存储器操作数地址的位移量或立即数。
8086指令详解 MOD字段编码表:
8086指令详解 REG字段编码表: