1 / 17

3 .2 指令系统

3 .2 指令系统. 按功能分为: 数据传送指令 算术运算指令 位处理指令(逻辑运算指令) 串操作指令 控制转移指令 处理机控制指令. 五、程序转移指令— 无条件转移和条件转移. Part1 JMP AA. 无条件转移: 转移发生不需要状态信息,执行到 JMP 处则发生转移。. 无条件转移指令. Part2. 转移跳过的地址. AA XXXX Part3. 下一条执行指令. 条件转移: 当条件满足是发生转移,否则顺序执行下一条指令。. Part1 JCC AA. 条件转移指令. XXXX Part2. 条件 成立?. No.

Download Presentation

3 .2 指令系统

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. 3.2 指令系统 • 按功能分为: • 数据传送指令 • 算术运算指令 • 位处理指令(逻辑运算指令) • 串操作指令 • 控制转移指令 • 处理机控制指令

  2. 五、程序转移指令—无条件转移和条件转移 Part1 JMP AA 无条件转移: 转移发生不需要状态信息,执行到JMP处则发生转移。 无条件转移指令 Part2 转移跳过的地址 AA XXXX Part3 下一条执行指令 条件转移: 当条件满足是发生转移,否则顺序执行下一条指令。 Part1 JCC AA 条件转移指令 XXXX Part2 条件 成立? No 转移跳过的地址 Yes AA XXX Part3 下一条执行指令

  3. 五、程序转移指令—无条件转移 1、JMP 指令 格式:JMP dest 功能:无条件转移到操作数(dest)所指示的地址,不影响标志。 Part1 JMP1234H • 段内转移: 16位立即数 CS:0100H (IP)←START • 直接转移 : JMP START Part2 跳过1134H NERA 标号 例如: JMP 1234H 指令跳转到 CS:1234H执行。 CS:1234H 1234H XXX Part3

  4. 五、程序转移指令—无条件转移 Part1 JMP 12H • 段内转移: • 直接短转移 : • JMP SHORT START • SHORT START为 8位位移量(-128~+127) CS:1220H Part2 12H+2H=14H CS:1234H XXXXX Part3 • 执行操作:(IP)←(IP)+2±位移量 例如: JMP 12H 指令跳转到 CS:(IP+2+12H)执行。 Part3 XXXXX CS:1224H Part2 2H—12H=—10H 例如: JMP -12H 指令跳转到 CS:(IP+2 - 12H)执行 JMP —12H Part1 CS:1234H

  5. 五、程序转移指令—无条件转移 34H DS:0100H 12H IP=1234H Part1 JMP [BX] CS:0100H Part2 跳过1134H 例如,(BX)=100H,DS:0100H=1234H JMP [BX] 指令跳转到 CS:1234H执行。 CS:1234H 1234H XXX Part3 • 段内转移: • 间接转移 :JMP DEST——DEST为 16寄存器或内存操作数 • 执行操作:(IP)←DEST 例如: (SI)=0100H JMP SI 指令跳转到 CS:0100H执行。

  6. 五、程序转移指令—无条件转移 • 段间转移: (IP)←低16位 (CS)←高16位 32位立即数 • 直接转移 : JMP DEST 32内存操作数 FAR 标号 DS:0200H 78H 56H IP=5678H 34H CS=1234H 12H Part1 JMP DWORD PTR [DI] 例如:DI=200H 双字(DS:0200H)=12345678H JMP DWORD PTR [DI] 指令执行: 低位字:(IP)=5678H 高位字:(CS)=1234H CS:0100H Part2 1234H:5678H XXX Part3 例如: JMP 12345678H 指令跳转到 1234:5678H执行

  7. 五、程序转移指令—条件转移 CF JO 标号 OF=1结果溢出则转移到标号所在地址 JP 标号 PF=1 结果1的个数为偶数个则转移 JZ 标号 ZF=1结果为零则转移到标号所在地址 JC 标号 CF=1有进位则转移到标号所在地址 ZF JNZ 标号 ZF=0 结果为非零则转移到标号所在地址 JNO 标号 OF=0结果未溢出则转移到标号所在地址 JNP 标号 PF=0 结果1的个数为奇数个则转移 JNC 标号 CF=0无进位则转移到标号所在地址 JS 标号 SF=1 结果为负则转移到标号所在地址 SF FR JNS 标号 SF=0 结果非负则转移到标号所在地址 PF OF 条件转移都是短转移,转移距离只能在(-128~+127)内完成。 简单转移:条件是由标志寄存器中的标志的状态决定的转移。 复杂转移:条件是由有有符号数和无符号数的大小决定的转移。 • 简单转移:

  8. 五、程序转移指令—条件转移 复杂转移: 由多个标志的状态决定的转移,分为有符号数和无符号数转移 • 无符号数转移指令 • 比较两个无符号数,并根据比较结果转移 • JA 标号 ;两数比较,高于则转移 (JNBE) • JNA 标号 ;两数比较,不高于则转移(JBE) • JB 标号 ;两数比较,低于则转移 (JNAE) • JNB 标号 ;两数比较,不低于则转移(JAE) • 有符号数转移指令 • 比较两个带符号数,并根据比较结果转移 • JG 标号 ;两数比较,大于则转移 (JNLE) • JNG 标号 ;两数比较,不大于则转移(JLE) • JL 标号 ;两数比较,小于则转移 (JNGE) • JNL 标号 ;两数比较,不小于则转移(JGE)

  9. 五、程序转移指令—循环控制 • 测试CX的值为0则转移 JCXZ 标号 ;(CX)=0则转移 • 循环控制指令 CX计数循环次数,每循环一次CX← CX-1 • 无条件循环 CX≠0转移到标号继续循环,CX=0顺序执行。 LOOP 标号 • 条件循环 CX≠0且 ZF=1转移到标号继续循环, CX=0或 ZF=0顺序执行。 CX≠0 且 ZF=0转移到标号继续循环, CX=0或 ZF=1顺序执行。 LOOP Z 标号 LOOPNZ 标号

  10. 五、程序转移指令—处理器控制 对处理机的工作状态的控制指令,分为标志控制、外设同步工作状态控制两类指令。 • 标志控制 CF标志 CLC CF=0 STC CF=1 CMC CF= CF • 同步控制 WAIT 指令——CPU处于空操作状态,每5个T周期测试信号线 当为低电平时脱离WAIT LOCK 指令的前缀,在执行有LOCK指令时发出总线封锁信号, 禁止其它主控设备申请总线。 例如 LOCK MOV AX,BX DF标志 CLD DF=0 STD DF=1 IF标志 CLI IF=0 STI IF=1

  11. 五、程序转移指令—处理器控制 • 同步控制 HLT 暂定指令CPU处于空操作状态,以下三种情况可以使CPU脱离暂定状态。 • RESET • NMI • 当IF=1时INTR • 该指令是为中断等待而设。 NOP 空操作指令,进行一个总线周期的空操作,相当于延时4T时钟周期。 ESC OPCODE ,SRC 交权指令, 把控制权交给协处理器。 OPCODE~6位立即数,外部处理器操作指令。 SRC~外部处理器的内存源操作数,由8086取出放在数据总线上供外部理器操作。

  12. 第 三 章 习 题 课 P129 3.4题 阅读下列各小题的指令序列,在后面空格中填人该指令序列的执行结果。 (1) MOV BL,85H MOV AL,17H ADD AL,BL ;AL=85H+17H=09CH DAA ;AL=09CH+66H=02H CF=1 AL =02H BL=85H CF =1 (2) MOV AX,BX NOT AX ADD AX, BX ;相反数相加=FFH INC AX ;AX=0H INC不影响标志位CF=0H AX = 0H CF =0H debug

  13. 第 三 章 习 题 课 P129 3.4题 阅读下列各小题的指令序列,在后面空格中填人该指令序列的执行结果。 (3) MOV AX,OFF60H STC ;CF=1 MOV DX, 96 ;DX=96=0060H XOR DH, OFFH ;DH=FFH DX=FF60H CF=0 SBB AX DX ;AX=0000H AX =0000H ; CF =0 (4) MOV BX,OFFFEH MOV CL,2 ;BX=1111 1111 1111 1110B SAR BX, CL ;BX=1111 1111 1111 1111B CF=1 BX =FFFFH ; CF =1

  14. 第 三 章 习 题 课 P130 3.6题 3.6 AND AL, AL JZ BRCH1 ;AL=0满足条件 RCR AL, 1 JZ BRCH2 ;AL=01此时CF=0能满足条件 RCL AL, 1 INC AL ;FFH+1=00H JZ BRCH3 上述程序运行后,试回答: (1)当(AL)=0 时,程序转向BRCH1。 (2)当(AL)= 01H 时,程序转向BRCH2。 (3)当(AL)= FFH 时,程序转向BRCH3。

  15. 第 三 章 习 题 课 P130 3.3题 设下列各转移指令的第一个字节在内存中的地址为CS=2000H和IP =016EH,且环境均为DS=6000H, BX = 16C0H, (616C0H) = 46H, (616C1H) =01H, (616C2H) = 00H, (616C3H) = 30H ,(61732H) = 70H (61733H) = 17H。写出下列无条件转移指令执行后CS和IP的值。和指令左首的16进制编码是该指令的机器码。指令的目的地址用相应的标号表示。 (1)EBE7 JMP SHORT AGAIN (2)E90016 JMP NEAR OTHER (3)FFE3 JMB BX 解: (1)为段内短转移,SHORT AGAIN为8位位移量=(E7H)补=-19H (IP)=16EH+2H+(-19H)=157H (CS)=2000H (2)为段内长转移,NEAR OTHER为16位位移量=1600H (IP)=16EH+3H+1600H=1771H (CS)=2000H (3)为段内长转移。 (IP)=(BX)=16C0H (CS)=2000H

  16. 第 三 章 习 题 课 P130 3.3题 设下列各转移指令的第一个字节在内存中的地址为CS=2000H和IP =016EH,且环境均为DS=6000H, BX = 16C0H, (616C0H) = 46H, (616C1H) =01H, (616C2H) = 00H, (616C3H) = 30H ,(61732H) = 70H (61733H) = 17H。写出下列无条件转移指令执行后CS和IP的值。和指令左首的16进制编码是该指令的机器码。指令的目的地址用相应的标号表示。 (4)EA46010030 JMP FAR PROB (5)FF67 JMP WORD PTR 0072H[BX] (6)FFEB JMP DWORD PTR [BX] 解: (4)为段间转移 FAR PROB为地址3000H:0146H (IP)==0146H (CS)=3000H (5)为段内转移,目标地址DS:BX=6000H*10H+16C0H=616C0H→0146H (IP)=0146H (6)为段间转移,目标地址DS:[BX+2]:[BX]=[616C2H]:[616C0H]=3000H:0146H (IP)=0146H (CS)=3000H

  17. 课后作业: • P129 3.3 (1) (2) (3) • P130 3.6 • P131 3.11

More Related