




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章 指 令 系 统 7.1 机器指令 7.2 操作数类型和操作类型 7.3 寻址方式 7.4 指令格式举例 7.5 RISC 技术 指令系统 CPU的主要工作是执行指令,指令是指挥计算 机执行某些操作的命令,一台计算机所有指令 的集合构成该计算机的指令系统。 一、机器指令的格式 u一条指令就是机器语言的一个语句,由一组 二进制代码来表示。一条指令由两部分构成: OPAddr 操作码:指明指令的操作性质及功能。 地址码:指明操作数的地址。 u一条指令必须有一个操作码,可能包含几个 地址码。 1、操作码 l指令系统中的每一条指令都有一个唯一确定的操 作码,反应不同的操作功能。 l指令操作码的编码可以分为定长编码和变长编 码。 (1)定长编码 l这是一种最简单的编码方式,操作码的位数和位 置固定,指令长度不固定。 l操作码不同涉及的操作数的个数不同,所以指令 的长度随操作码而变化。 l例如,IBM370机就是采用这种定长操作码格式 。 IBM 370机(字长32位)的指令可分为三种不 同的长度,不论指令的长度有多少位,其中的操 作码字段一律都是8位。 IBM 370机的指令格式 (2)变长编码 u这是一种操作码长度不固定,而指令长度固定的 设计方法。 uPDP-11机(字长16位)的指令分为单字长、两 字长、三字长三种,操作码字段占416位不等 ,可遍及整个指令长度。 u显然,操作码字段位数的不固定将增加指令译码 的难度,使控制器的设计复杂化。但是,它有效 地利用每个二进制位。 PDP-11机的指令格式 (3) 扩展操作码技术 操作码的位数随地址数的减少而增加 OP A1 A2 A3 0000 0001 1110 A1 A1 A1 A2 A2 A2 A3 A3 A3 A2 A2 A2 A3 A3 A3 1111 1111 1111 0000 0001 1110 1111 1111 1111 1111 1111 1111 1111 1111 1111 0000 0001 1111 1111 1111 1111 1111 1111 1111 A3 A3 A3 0000 0001 1110 4 位操作码 8 位操作码 12 位操作码 16 位操作码 15条三地址指令 15条二地址指令 15条一地址指令 16条零地址指令 7.17.1 2. 地址码 (1) 四地址 (2) 三地址 OP A1 A2 A3 A4 8 6 6 6 6 A1 第一操作数地址 A2 第二操作数地址 A3 结果的地址 A4 下一条指令地址 若 PC 代替 A4(A1) OP (A2) A3 8 8 8 8 OP A1 A2 A3 (A1) OP (A2) A3 4 次访存 4 次访存 寻址范围 26 = 64 寻址范围 28 = 256 若 A3 用 A1 或 A2 代替 7.17.1 设指令字长为 32 位 操作码固定为 8 位 (3) 二地址 OP A1 A2 8 12 12 (A1) OP (A2) A1 (A1) OP (A2) A2 或 4 次访存 若ACC 代替 A1(或A2)若结果存于 ACC (4) 一地址 (5) 零地址 OP A1 8 24 无地址码 (ACC) OP (A1) ACC 2 次访存 寻址范围 212 = 4 K 寻址范围 224 = 16 M 3次访存 7.17.1 二、指令字长 指令字长决定于 操作码的长度 指令字长 = 存储字长 2. 指令字长 可变 操作数地址的长度 操作数地址的个数 1. 指令字长 固定 按字节的倍数变化 7.17.1 小结 当用一些硬件资源代替指令字中的地址码字段后 当指令的地址字段为寄存器时 可扩大指令的寻址范围 可缩短指令字长 可减少访存次数 三地址 OP R1, R2, R3 二地址 OP R1, R2 一地址 OP R1 指令执行阶段不访存 可缩短指令字长 7.17.1 7.2 操作数类型和操作种类 一、操作数类型 地址 数字 字符 逻辑数 无符号整数 定点数、浮点数、十进制数 ASCII 逻辑运算 二、数据在存储器中的存放方式 字地址 为 低字节 地址字地址 为 高字节 地址 3 76 21 54 0 字地址 0 4 低字节 0 45 12 67 3 字地址 0 4 低字节 存储器中的数据存放(存储字长为 32 位) 地址(十进制) 0 4 8 12 16 20 24 28 32 36 双字 双字(地址32) 双字 双字(地址24) 半字(地址20)半字(地址22) 半字(地址16)半字(地址18) 字节(地址8)字节(地址9)字节(地址10)字节(地址11) 字(地址 4) 字(地址 0) 字节(地址14) 字节(地址15)字节(地址13) 字节(地址12) 边界对准 地址(十进制) 0 4 8 字节( 地址7)字节( 地址6) 字( 地址2) 半字( 地址10)半字( 地址8) 半字( 地址0) 字( 地址4) 边界未对准 7.27.2 三、操作类型 1. 数据传送 源 目的 寄存器寄存器 寄存器寄存器 存储器存储器 存储器存储器 置“1”,清“0” 2. 算术逻辑操作 加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算 与、或、非、异或、位操作、位测试、位清除、位求反 如 8086 MOVESTORELOADMOVE PUSHPOP 例如 MOVEMOVE 7.27.2 ADD SUB MUL DIV INC DEC CMP NEG AAA AAS AAM AAD AND OR NOT XOR TEST 3. 移位操作 算术移位 4. 转移 (1) 无条件转移 JMP (2) 条件转移 结果为零转 (Z = 1) JZ 结果溢出转 (O = 1)JO 结果有进位转(C = 1)JC 跳过一条指令 SKP 循环移位(带进位和不带进位) 如 300 305 306 307 SKP DZ D = 0 则跳 逻辑移位 完成触发器 7.27.2 SAL,SAR SHL ,SHR RCL,RCR ROL ,ROR 8086cpu的标志寄存器 标志寄存器 FLAGS为标志寄存器,又称PSW(Program Status Word),即程序状态寄存器。这是一个存 放条件码标志、控制标志和系统标志的寄存器。 条件码标志 包括以下6位: OF(Over Flow Flag) 溢出标志。(示例) 将参加算术运算的数看作带符号数,如运算结果 超出补码表示数的范围N,即溢出时,则OF置1; 否则OF置0。对于字节运算有128N+127;对 于字运算有32768N+32767。 SF(Sign Flag) 符号标志。(示例) 把指令执行结果看作带符号数,如结果为负, 则SF置1;结果为正,则SF置0。 ZF(Zero Flag) 零标志。(示例) 如指令执行结果各位全为0时,则ZF置1;否则ZF 置0。 8086 CPU中标志寄存器的内容: CF(Carry Flag) 进位标志。 (示例) (与OF的区别) 在进行算术运算时,如最高位(对字操作是第15位,对 字节操作是第7位)产生进位或借位时,则CF置1;否则 置0。在移位类指令中,CF用来存放移出的代码(0或1) 。 AF(Auxiliary Carry Flag)辅助进位标志 (与CF的区别 ) 在进行算术运算时,如低字节中低4位(第3位)产生进 位或借位时,则AF置1;否则AF置0。AF可用于十进制运 算的校正。 PF(Parity Flag) 奇偶标志。 (示例) 用来为机器中传送信息时可能产生的代码出错情况提供 检验条件。当运算结果中1的个数为偶数时置1,否则置0 。 l示例指令1: mov al,98 add al,99 执行后将产生溢出。因为add al,99 进行的有 符号数运算是:(al)=(al)+99=98+99=197 而结果197超出了机器所能表示的8位有符号数 的范围:-128127。 l示例指令2: mov al,0F0H ;0F0H,为有符号数-16的补码 add al,88H ;88H,为有符号数-120的补码 执行后将产生溢出。 因为add al,88H进行的有符号数运算是: (al)=(al)+(-120)=(-16)+(-120)=-136 而结果-136超出了机器所能表示的8位有符号 数的范围:-128127。 OF示例 l计算机中通常用补码来表示有符号数据。所以 计算机中的一个数据可以看作是有符号数,也 可以看成是无符号数 l指令示例 mov al,10000001B add al,1 结果: (al)=10000010B 将add指令进行的运算当作无符号数的运算 ,那么add指令相当于计算129+1,结果为130 (10000010B);虽然运算影响了SF的值,但 是SF的值则没有意义。 SF示例 将add指令进行的运算当作有符号数的运算, 那么add指令相当于计算-127+1,结果为-126( 10000010B)。这是结果为负数,则SF=1,所以 通过SF来得知结果的正负。 总之,SF 标志就是CPU对有符号数运算结果的一 种记录 ,它记录数据的正负。 指令示例: mov ax,1 sub ax,1 指令执行后,结果为0,则ZF =1。 mov ax,2 sub ax,1 指令执行后,结果为1,则ZF = 0。 ZF示例 l比如,两个8 位数据:98H+98H,将产生进位。 mov al,98H add al,al ;执行后: (al)=30H,CF=1, add al,al ;执行后:(al)=60H,CF=0, ;CF记录了最高有效位向更高位的进位值 l比如,两个 8 位数据:97H-98H,将产生借位,借 位后,相当于计算197H-98H。 mov al,98H sub al,al ;执行后: (al)=FFH,CF=1, sub al,al ;执行后: (al)=00H,CF=0, ;CF记录了最高有效位向更高位的借位值 CF示例 示例 指令:mov al,1 add al,10 执行后,结果为00001011B,其中有3( 奇数)个1,则PF=0; 指令:mov al,1 or al,10 执行后,结果为00000011B,其中有2( 偶数)个1,则PF=1; PF示例 lCF是对无符号数运算有意义的标志位; OF是对有符号数运算有意义的标志位。 l比如: mov al,98 add al,99 add指令执行后:CF=0,OF=1。 l总的来说, 对于无符号数运算,CPU用CF位来记录是否产生 了进位; 对于有符号数运算,CPU 用 OF 位来记录是否产 生了溢出,还要用SF位来记录结果的符号。 它们之间没有任何关系。 OF与CF的区别 OF与CF的区别 l区别: 8位运算或16位运算时如果有进位或借位CF等于1。 AF也一样是进位或借位的标志,只不过它是4位运算时 的进位或借位的标志。 l示例:两个8位寄存器,AL=1000 0001,BL=1000 0011; add AL BL ;结果CF=1,AF=0 因为AL和BL的低四位相加没有进位 AF是为了在BCD码运 算时,要用到的,因为BCD码是以4位表示的。 控制标志位1位 DF(Direction Flag)方向标志,用来 在串处理指令中控制处理信息的方向。 当DF位为1时,每次操作后使变址寄存器SI 和DI减小,这样就使串处理从高地址向低地 址方向处理。当DF位为0时,则使SI和DI增 大,使串处理从低地址向高地址方向处理。 系统标志位: TF(Trap Flag) 陷阱标志,用于调试 时的单步方式操作。 IF(Interrupt Flag) 中断标志 。 在调试程序DEBUG中提供了测试标志位的手段,用 符号表示某些标志位的值: 标标志名标标志为为1标标志为为0 OF 溢出(是/否) OVNV DF 方向(增量/ 减量)DNUP IF 中断(允许许/关闭闭)EIDI SF 符号(正/负负)NGPL ZF 零(是/否)ZRNZ AF 辅辅助进进位(是/否)ACNA PF 奇偶(偶/奇)PEPO CF 进进位(是/否)CYNC (3) 调用和返回 CALL SUB1 . CALL SUB2 . CALL SUB2 RETURN RETURN 主程序 地址 2000 2100 2101 子程序SUB1 2400 2500 2501 2560 2561 2700 主存空间分配程序执行流程 子程序SUB2 7.27.2 IN AX, n OUT DX, ALOUT n, AXOUT DX, AX (4) 陷阱(Trap)与陷阱指令 意外事故的中断 设置供用户使用的陷阱指令 如 8086 INT TYPE 软中断 提供给用户使用的陷阱指令,完成系统调用 5. 输入输出 一般不提供给用户直接使用 在出现事故时,由 CPU 自动产生并执行(隐指令) IN AL, DXIN AX, DX 入 端口地址 CPU 的寄存器 出 CPU 的寄存器 端口地址 7.27.2 如 如 IN AL, n OUT n, AL 7.3 寻 址 方 式 寻址方式 确定 本条指令 的 操作数地址 下一条 欲执行 指令 的 指令地址 指令寻址 数据寻址 寻址方式 7.3 寻 址 方 式 一、指令寻址 顺序( PC ) + 1 PC 跳跃由转移指令指出 LDA 1000 ADD 1001 DEC 1200 JMP 7 LDA 2000 SUB 2001 INC STA 2500 LDA 1100 . 0 1 2 3 4 5 6 7 8 9 PC +1 指令地址寻址方式指令地址指令 顺序寻址1 顺序寻址2 顺序寻址3 跳跃寻址7 顺序寻址8 二、数据寻址 形式地址 指令字中的地址 有效地址 操作数的真实地址 约定 指令字长 = 存储字长 = 机器字长 1. 立即寻址 指令执行阶段不访存 A 的位数限制了立即数的范围 形式地址 A操作码寻址特征 OP # A 立即寻址特征 立即数 可正可负 补码 形式地址 A 就是操作数 7.37.3 2. 直接寻址 EA = A 操作数 主存 寻址特征 LDAA AACC 执行阶段访问一次存储器 A 的位数决定了该指令操作数的寻址范围 操作数的地址不易修改(必须修改A) 有效地址由形式地址直接给出 7.37.3 3. 隐含寻址 操作数地址隐含在操作码中 ADDA 操作数 主存 寻址特征 A ACC 暂存 ALU 另一个操作数 隐含在 ACC 中 如 8086 MUL 指令被乘数隐含在 AX(16位)或 AL(8位)中 MOVS 指令源操作数的地址隐含在 SI 中 目的操作数的地址隐含在 DI 中 指令字中少了一个地址字段,可缩短指令字长 7.37.3 4. 间接寻址 EA =(A) 有效地址由形式地址间接提供 OPA 寻址特征 AEA 主存 EA A1 EA A1 主存 EA 1 0 执行指令阶段 2 次访存 可扩大寻址范围 便于编制程序 OPA 寻址特征 A 一次间址多次间址 操作数 操作数 多次访存 7.37.3 子程序主程序 80 81 201 202 转 子程序 转 子程序 间接寻址编程举例 (A) = 81 (A) = 202 间址特征 7.37.3 JMP A 5. 寄存器寻址 EA = Ri 执行阶段不访存,只访问寄存器,执行速度快 OPRi 寻址特征 寄存器个数有限,可缩短指令字长 操作数 R0 Ri Rn 寄存器 有效地址即为寄存器编号 7.37.3 EA = ( Ri ) 6. 寄存器间接寻址 有效地址在寄存器中, 操作数在存储器中,执行阶段访存 操作数 主存 OPRi 寻址特征 便于编制循环程序 地址 R0 Ri Rn 寄存器 有效地址在寄存器中 7.37.3 7. 基址寻址 (1) 采用专用寄存器作基址寄存器 EA = ( BR ) + ABR 为基址寄存器 OPA 操作数 主存 寻址特征 ALUBR 可扩大寻址范围 便于程序搬家 BR 内容由操作系统或管理程序确定 在程序的执行过程中 BR 内容不变,形式地址 A 可变 7.37.3 (2) 采用通用寄存器作基址寄存器 操作数 主存 寻址特征 ALU OPR0AR0 作基址寄存器 由用户指定哪个通用寄存器作为基址寄存器 通用寄存器 R0 Rn-1 R1 基址寄存器的内容由操作系统确定 在程序的执行过程中 R0 内容不变,形式地址 A 可变 7.37.3 8. 变址寻址 EA = ( IX ) +A OPA 操作数 主存 寻址特征 ALUIX 可扩大寻址范围 便于处理数组问题 IX 的内容由用户给定 IX 为变址寄存器(专用) 在程序的执行过程中 IX 内容可变,形式地址 A 不变 通用寄存器也可以作为变址寄存器 7.37.3 例 设数据块首地址为 D,求 N 个数的平均值 直接寻址变址寻址 LDA D ADD D + 1 ADD D + 2 ADD D + ( N -1 ) DIV # N STA ANS LDA # 0 LDX # 0 INX CPX # N BNE M DIV # N STA ANS 共 N + 2 条指令共 8 条指令 ADD X, DM X 为变址寄存器 D 为形式地址 (X) 和 #N 比较 (X) +1 X 结果不为零则转 7.3 7.3 9. 相对寻址 EA = ( PC ) + A A 是相对于当前指令的位移量(可正可负,补码) A 的位数决定操作数的寻址范围 程序浮动 广泛用于转移指令 操作数 寻址特征 ALU OPA 相对距离 A 1000PC 主存 1000AOP 7.37.3 (1) 相对寻址举例 M 随程序所在存储空间的位置不同而不同 EA = ( M+3 ) 3 = M 3 * LDA # 0 LDX # 0 ADD X, D INX CPX # N BNE M DIV # N STA ANS M M+1 M+2 M+3 而指令 BNE 与 指令 ADD X, D 相对位移量不变 3 * 指令 BNE操作数的有效地址为 3 * 相对寻址特征 * 7.37.3 (2) 按字节寻址的相对寻址举例 OP 位移量 2000 H 2008 H 8 JMP * + 8 OP 06 H 2000 H 2008 H 8 设 当前指令地址 PC = 2000H转移后的目的地址为 2008H 因为 取出 JMP * + 8 后 PC = 2002H 二字节指令 故 JMP * + 8 指令 的第二字节为 2008H - 2002H = 6H 7.37.3 10. 堆栈寻址 (1) 堆栈的特点 堆栈 硬堆栈 软堆栈 多个寄存器 指定的存储空间 先进后出(一个入出口) 栈顶地址 由 SP 指出 1 1FFFH +1 2000 H 进栈 (SP) 1 SP出栈 (SP)+ 1 SP 栈顶 栈底 2000 H SP 2000 H 1FFF H SP 1FFFH 栈顶 栈底 进栈出栈 1FFF H 栈顶 2000 H 栈顶 7.37.3 (2) 堆栈寻址举例 15 200H ACC SP X 栈顶 200H 栈底 主存 15 1FFH ACC SP 15 栈顶 200H 栈底 主存 X 1FFH PUSH A 前PUSH A 后 POP A 前POP A 后 Y 1FFH ACC SP X 栈顶 200H 栈底 主存 151FFH 15 200H ACC SP栈顶 200H 栈底 主存 X 15 7.37.3 (3) SP 的修改与主存编址方法有关 按 字 编址 进栈 出栈 (SP) 1 SP (SP)+ 1 SP 按 字节 编址 存储字长 16 位进栈 出栈 (SP) 2 SP (SP)+ 2 SP 存储字长 32 位进栈 出栈 (SP) 4 SP (SP)+ 4 SP 7.37.3 7.4 指令格式举例 一、设计指令格式时应考虑的各种因素 1. 指令系统的 兼容性(向上兼容) 2. 其他因素 操作类型 数据类型 指令格式 包括指令个数及操作的难易程度 指令字长、操作码位数 寻址方式 寄存器个数 地址码位数、地址个数 寻址方式、是否采用扩展操作码 二、指令格式举例 1. PDP 8指令字长固定 12 位 操作码 间 页 地址码 访存类指令 0235411 寄存器类指令 1 1 1 辅助操作码 02 311 I/O 类指令 1 1 0 设备 操作码 02 31198 7.47.4 2. PDP 11 源地址OP 4 6 6 16 16 目的地址存储
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省天台县2025年上半年事业单位公开遴选试题含答案分析
- 云南省陆良县2025年上半年事业单位公开遴选试题含答案分析
- 2025版教育产业入股合作协议书规范范本
- 2025年美容美发店转让及专业技术支持合同
- 2025年度吊车设备租赁与操作人员技能培训合同
- 2025年泵车租赁与租赁期间设备技术升级及改造合同
- 2025版乳胶漆涂装工程安全管理与应急预案承包合同
- 河北省昌黎县2025年上半年事业单位公开遴选试题含答案分析
- 2025年度轻钢别墅工程绿色建筑认证与推广合同
- 2025年二手车过户交易合同书
- 宣传片拍摄保密协议(2024版)
- 医疗设备采购招标投标文件格式
- 离婚协议书与离婚协议书
- 房屋出租委托协议
- 加装电梯业主同意协议书
- 医疗器械经销商管理
- 人教版九年级英语全册词性转换1-14单元
- 铭记抗战历史+弘扬民族精神+纪念抗战胜利主题班会
- 非居民金融账户涉税信息尽职调查管理办法
- 拓扑优化教学课件
- 孕期营养需求指南
评论
0/150
提交评论