第七章 指 令 系 统7.1 机器指令7.2 操作数类型和操作类型7.3 寻址方式7.4 指令格式举例7.5 RISC 技术7.1 机 器 指 令一、指令系统的发展指令系统 一台计算机中所有机器指令的集合是表征一台计算机性能的重要因素,其 格式与功能 不仅直接影响到机器的 硬件结构 ,也直接影响到 系统软件 ,影响到机器的 适用范围分立元件 十几至几十条指令集成电路 一、二百条VLSI 几百条 复杂指令系统计算机 (CISC)精简指令系统计算机( RISC)Complex Instruction Set ComputerReduced „二、指令的一般格式操作码字段 地址码字段1. 操作码 反映机器做什么操作(1) 长度固定(2) 长度可变用于指令字长较长的情况 , RISC如 IBM 370 操作码 8 位操作码分散在指令字的不同字段中2. 地址码(1) 四地址(2) 三地址OP A1 A2 A3 A48 6 6 6 6A1 第一操作数地址A2 第二操作数地址A3 结果的地址A4 下一条指令地址若 PC 代替 A4(A1) OP (A2) A38 8 8 8 OP A1 A2 A3(A1) OP (A2) A34 次访存4 次访存寻址范围 26 = 64寻址范围 28 = 256若 A3 用 A1 或 A2 代替设指令字长为 32 位操作码固定为 8 位(3) 二地址OP A1 A28 12 12(A1) OP (A2) A1(A1) OP (A2) A2或 4 次访存若 ACC 代替 A1( 或 A2) ?若结果存于 ACC (4) 一地址(5) 零地址OP A18 24无地址码(ACC) OP (A1) ACC2 次访存寻址范围 212 = 4 K寻址范围 224 = 16 M 3次访存3. 扩展操作码技术操作码的位数随地址数的减少而增加OP A1 A2 A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4 位操作码8 位操作码12 位操作码16 位操作码15条三地址指令15条二地址指令15条一地址指令16条零地址指令固定格式最多几条指令?4 4 4 4 14条三地址指令? 条二地址指令 31例: 设某指令系统指令字是 16位,每个地址码为 6位。
若二地址指令 15条,一地址指令 34条,则剩下零地址指令最多有多少条?解 :操作码按短到长进行扩展编码二地址指令 : (0000 ~ 1110) 一地址指令 : 11110 ( 00000 ~ 11111) ; 11111 ( 00000 ~ 00001) 零地址指令 : 11111 ( 00010 ~ 11111) (000000 ~ 111111)故零地址指令最多有 30x26=15x27 种例: 设某指令系统指令字是 16位,每个地址码为 6位指令有二地址、一地址、零地址三种格式 1)设操作码固定,零地址指令有 P条,一地址指令 Q条,则二地址指令最多有多少条?( 2)采用扩展操作码技术,若二地址指令 X条,零地址指令 Y条,则一地址指令最多有多少条?解 : ( 1)操作码固定为 4位,共有 16种指令故二地址指令最多有 16 - P - Q 种( 2)二地址指令最多有 16 种,现有 X条,则一地址指令最多有( 16- X) 26 - Y/ 26条三、指令字长指令字长决定于 操作码的长度指令字长 = 存储字长2. 指令字长 可变 操作数地址的长度 操作数地址的个数1. 指令字长 固定按 字节的倍数 变化小结 当用一些硬件资源代替指令字中的地址码字段后 当指令的地址字段为寄存器时• 可扩大指令的寻址范围• 可缩短指令字长• 可减少访存次数三地址 OP R1, R2, R3二地址 OP R1, R2 一地址 OP R1• 指令执行阶段不访存• 可缩短指令字长7.2 操作数类型和操作种类一、操作数类型地址数字字符逻辑数无符号整数定点数、浮点数、十进制数ASCII逻辑运算二、数据在存储器中的存放方式低字节 为 低地址 高字节 为 低地址37 62 15 40字地址04低字节04 51 26 73字地址04低字节存储器中的数据存放(存储字长为 32 位)地址(十进制)04812162024283236双字双字(地址 32)双字双字(地址 24)半字(地址 20)半字(地址 22)半字(地址 16)半字(地址 18)字节(地址 8)字节(地址 9)字节(地址 10)字节(地址 11)字(地址 4)字(地址 0)字节(地址 14)字节(地址 15) 字节(地址 13) 字节(地址 12)边界对准地址(十进制)048字节 ( 地址 7) 字节 ( 地址 6)字 ( 地址 2)半字 ( 地址 10) 半字 ( 地址 8)半字 ( 地址 0)字 ( 地址 4)边界未对准▲▲三、操作类型1. 数据传送源目的寄存器 寄存器寄存器 寄存器存储器 存储器存储器 存储器置“ 1”,清“ 0”2. 算术逻辑操作加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算与、或、非、异或、位操作、位测试、位清除、位求反如 8086MOVE STORE LOAD MOVEPUSH POP例如MOVE MOVEADD SUB MUL DIV INC DEC CMP NEG AAA AAS AAM AAD AND OR NOT XOR TEST3. 移位操作算术移位4. 转移(1) 无条件转移 JMP(2) 条件转移结果为零转( Z = 1) JZ结果溢出转( O = 1) JO结果有进位转( C = 1) JC跳过一条指令 SKP循环移位(带进位和不带进位)如300„305306307SKP DZ ; D = 0 则跳逻辑移位完成触发器(3) 调用和返回CALL SUB1.........CALL SUB2…...CALL SUB2…RETURNRETURN......主程序地址200021002101子程序 SUB1240025002501256025612700主存空间分配 程序执行流程子程序 SUB2IN AX, nOUT DX, ALOUT n, AX X(4) 陷阱( Trap) 与陷阱指令意外事故的中断• 设置供用户使用的陷阱指令如 8086 INT TYPE 软中断提供给用户使用的陷阱指令,完成系统调用5. 输入输出• 一般不提供给用户直接使用在出现事故时,由 CPU 自动产生并执行(隐指令)IN AL, DXX入 端口地址 → CPU 的寄存器出 CPU 的寄存器 → 端口地址如如L, AL?7.3 寻 址 方 式寻址方式确定 本条指令 的 操作数地址指令寻址数据寻址下一条 欲执行 指令 的 指令地址一、指令寻址 顺序 ( PC ) + 1 PC 跳跃 由转移指令指出LDA 1000ADD 1001DEC 1200JMP 7LDA 2000SUB 2001INCSTA 2500LDA 1100...0123456789PC+1指令地址寻址方式指令地址 指令顺序寻址顺序寻址2顺序寻址3跳跃寻址7顺序寻址8二、数据寻址形式地址 指令字中的地址有效地址 EA 操作数的真实地址约定 指令字长 = 存储字长 = 机器字长1. 立即寻址• 指令执行阶段不访存• A 的位数限制了立即数的范围形式地址 A操作码 寻址特征OP # A立即寻址特征立即数 可正可负 补码形式地址 A 就是操作数2. 直接寻址EA = A操作数主存寻址特征LDA AA ACC• 执行阶段访问一次存储器• A 的位数决定了该指令操作数的寻址范围• 操作数的地址不易修改(必须修改 A)有效地址由形式地址直接给出3. 隐含寻址操作数地址隐含在操作码中ADD A操作数主存寻址特征AACC暂存ALU另一个操作数隐含在 ACC 中如 8086MUL 指令 被乘数隐含在 AX( 16位)或 AL( 8位)中MOVS 指令 源操作数的地址隐含在 SI 中目的操作数的地址隐含在 DI 中• 指令字中少了一个地址字段,可缩短指令字长4. 间接寻址EA =( A) 有效地址由形式地址间接提供OP A寻址特征A EA主存EA A1EAA1主存EA10 执行指令阶段 2 次访存 可扩大寻址范围 便于编制程序OP A寻址特征A一次间址 多次间址操作数操作数多次访存… ……子程序主程序…8081201202转 子程序转 子程序间接寻址编程举例(A) = 81(A) = 202…… @ 间址特征JMP @ A…… …………… ………5. 寄存器寻址EA = Ri• 执行阶段不访存,只访问寄存器,执行速度快OP Ri寻址特征• 寄存器个数有限,可缩短指令字长操作数„„„„„„R0RiRn寄存器有效地址即为寄存器编号EA = ( Ri )6. 寄存器间接寻址• 有效地址在寄存器中, 操作数在存储器中,执行阶段访存操作数主存OP Ri寻址特征• 便于编制循环程序地址„„„„„„R0RiRn寄存器有效地址在寄存器中7. 基址寻址(1) 采用专用寄存器作基址寄存器EA = ( BR ) + A BR 为基址寄存器OP A操作数主存寻址特征ALUBR• 可扩大寻址范围• 便于程序搬家• BR 内容由操作系统或管理程序确定• 在程序的执行过程中 BR 内容不变 ,形式地址 A 可变(2) 采用通用寄存器作基址寄存器操作数主存寻址特征ALUOP R0 A R0 作基址寄存器• 由用户指定哪个通用寄存器作为基址寄存器通用寄存器R0Rn-1R1„• 基址寄存器的内容由操作系统确定• 在程序的执行过程中 R0 内容不变,形式地址 A 可变8. 变址寻址EA = ( IX ) +AOP A操作数主存寻址特征ALUIX• 可扩大寻址范围• 便于处理数组问题• IX 的内容由用户给定IX 为变址寄存器(专用)• 在程序的执行过程中 IX 内容可变 ,形式地址 A 不变通用寄存器也可以作为变址寄存器例 设数据块首地址为 D, 求 N 个数的平均值直接寻址 变址寻址LDA DADD D + 1ADD D + 2„„ADD D + ( N -1 )DIV # NSTA ANSLDA # 0LDX # 0INXCPX # NBNE MDI # NSTA ANS共 N + 2 条指令 共 8 条指令ADD X, DMX 为变址寄存器D 为形式地址(X) 和 #N 比较(X)+1 X结果不为零则转9. 相对寻址EA = ( PC ) + AA 是相对于当前指令的位移量(可正可负,补码)• A 的位数决定操作数的寻址范围• 程序浮动• 广泛用于转移指令操作数寻址特征ALUOP A相对距离 。