1 / 27

2 .2 指令系统

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

quilla
Download Presentation

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

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

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

  4. 五、程序转移指令—无条件转移 Part1 JMP 12H CS:1220H Part2 12H+2H=14H CS:1234H XXXXX Part3 • 段内转移: • 直接短转移 : • JMP SHORT START • SHORT START为 8位位移量(-128~+127),或一距离本指令 • -126~+129字节的NEAR标号 • 执行操作:(IP)←(IP)+2±位移量 Part3 XXXXX 例如: JMP 12H 指令跳转到 CS:(IP+2+12H)执行。 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 FAR 标号 DS:0200H 78H 56H IP=5678H 34H CS=1234H 12H Part1 JMP DWORD PTR [DI] CS:0100H Part2 1234H:5678H XXX Part3 例如: JMP 12345678H 指令跳转到 1234:5678H执行 • 间接转移 :JMP DEST • DEST为32位内存操作数 例如:DI=200H 双字(DS:0200H)=12345678H JMP DWORD PTR [DI] 指令执行: 低位字:(IP)=5678H 高位字(CS)=1234H

  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. 五、程序转移指令—条件转移 复杂转移: 由多个标志的状态决定的转移,常在减法/自减指令/比较指令后。 • 无符号数转移指令(根据CF、ZF判定) • 比较两个无符号数,并根据比较结果转移 • JA 标号 ;两数比较,高于则转移 (JNBE) • JNA 标号 ;两数比较,不高于则转移(JBE) • JB 标号 ;两数比较,低于则转移 (JNAE) • JNB 标号 ;两数比较,不低于则转移(JAE) • 有符号数转移指令(根据SF、OF、ZF判定) • 比较两个带符号数,并根据比较结果转移 • JG 标号 ;两数比较,大于则转移 (JNLE) • (SFCF=0 & ZF=0) • 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. 五、程序转移指令—子程序调用与返回: 调用 CALL 过程名 功能:(1)下条指令的地址压入堆栈。 对于段内调用将IP的值压入堆栈 对于段间调用先将CS的值压入堆栈,再将IP的值压入堆栈。 (2)子程序的地址送入CS:IP(段内调用只送IP)从而转入子程序运行。 返回指令 RET 子程序的最后一条指令,用于返回CALL指令的下条指令继续执行。 功能:(1) 对于段内调用只将当前[SP]弹进IP,从而使程序正常返回。 (2)对于段间调用则先弹IP,再弹CS。

  11. 五、程序转移指令—处理器控制 对处理机的工作状态的控制指令,分为标志控制、外设同步工作状态控制两类指令。 • 标志控制 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 • (X)同步控制

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

  13. 题1: 8086系统中,若一内存单元在DS=0980H时,EA=0134H,则当DS=0820H时,EA=?

  14. 第 二章 习 题 课 题2: 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP = 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H, (1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何? (1) MOV CL, [ BX + 20H] [ SI]; PA=DS*16+[BX+SI+20H]=091DH*16+0024H+0012H+20H=09226H ([09226H])=(CL)=F6H (2) MOV [BP][DI], CX; PA=SS*16+([BP+DI])=1E4A0H+0024H+0032H=1E4F6H ([1E4F6H])=(CX)=5678H (3) LEA BX,[BX+20H][SI] MOV AX, [ BX + 2 ]; (BX)=(BX+SI+20H)=0024H+0012H+20H=0056H PA=DS*16+[BX+2H]=091D0H+0056H+2H= 09228H (AX)=([09228H])=1E40H

  15. 第二章 习 题 课 (X)题2: 已知 DS = 091DH, SS = 1E4AH, AX = 1234H, BX = 0024H, CX = 5678H, BP = 0024H, SI = 0012H, DI = 0032H, (09226H) = 00F6H, (09228H) =1E40H, (1E4F6H) = 091DH. 在以上给出的环境下,试问下列指令或指令段执行后的结果如何? (5) XCHG CX, [BX + 32H] XCHG [ BX + 20H] [SI] ,AX PA1= DS*16+BX+32H =091D0H+0024H+0032H=09226H 与CX进行交换 (CX)=00F6H ([09226H])=(CX)=5678H PA2= DS*16+BX+SI+20H = 091D0H+0024H+0012H+0020H =09226H 与AX进行交换 (AX)=5678H ([09226H])=1234H

  16. 第二章 习 题 课 题3: 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (1) MOV AX, 1352H AX =1352H (2) MOV AX, [1352H] AX =26FFH (3) MOV 0150H[BX] ,CH PA1= DS*16+BX+150H=10000H+1200H+150H=11350H (11350H) = 33H (11351H)= 3CH

  17. 第二章 习 题 课 题3: 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (4) Mov AX,0150H[BP] PA= SS*16+BP+150H=20000H+1200H+150H=21350H (21350H) 送AX=5188H AX =5188H (5) POP AX PA= SS*16+SP=20000H+1352H=21352H 栈顶为21352H,将其送入AX.该单元未知为XXXXH AX =xxxxH SP =1354H

  18. 第二章 习 题 课 题3: 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果(有关内存单元的值、标志位)。 (6) ADD [SI] ,CX PA1= DS*16+SI=10000H+1354H=11354H (11354H)=52H (11355H)=E7H E752H+339AH=1AEC H ; CF=1 E 7 5 2 H + 3 3 9 A H 1 1 A E C H 1 (11355H) =1AH ( 11354H) =ECH SF=0 ZF =0 , PF = , CF =1 , OF =0

  19. 第二章 习 题 课 题3: 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (7) SUB BH,0l50H[BX] [SI] PA=DS*16+BX+SI+150H =10000H+1200H+1354H+150H=126A4H (126A4H)=9DH BH=12H 12H-9DH=75H SF=0 ZF =0 , PF = 0 , CF =1 , OF =0

  20. 第二章 习 题 课 CF 1010 0101B=A5H CF=1 11010010B=D2H (X)题3: 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (10) SAR BYTE PTR 0150H[ BX], 1 PA=10000H+1200H+150H=11350H (11350H)=0A5H=1010 0101B (11350H)=D2H CF =1 OF =0

  21. 第二章 习 题 课 (X)题3: 设, DS=1000H; SS = 2000H, AX = 1A2BH, BX = 1200H, CX = 339AH, BP =1200H,SP = 1352H, SI= 1354H, (11350H) =0A5H, (11351H) = 3CH, (11352H) =OFFH,(11353H) = 26H, (11354H) = 52H, (11355H) = 0E7H, (126A4H) = 9DH,(126A5H) = 16H, (21350H) = 88H, (21351H) = 51H. 下列各指令都在此环境下执行,在下列各小题的空格中填人相应各指令执行结果。 (11) SAL BYTE PTR 0150H[BX],1 PA=10000H+1200H+150H=11350H (11350H)=0A5H=1010 0101B 一次移位时最高位不发变化时OF=0 ,最高位发生变化OF=1 SAL 010 0 1010B=4AH CF =1 (11350H)=4AH ,CF =1 ,OF=1

  22. 第二章 习 题 课 题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

  23. 第二章 习 题 课 题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

  24. 第二章 习 题 课 题5: 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。

  25. 第二章 习 题 课 题 设下列各转移指令的第一个字节在内存中的地址为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=1772H (CS)=2000H (3)为段内长转移。 (IP)=(BX)=16C0H (CS)=2000H

  26. 第二章 习 题 课 题 设下列各转移指令的第一个字节在内存中的地址为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

  27. 课后作业: • P71 4、6、7、8、10

More Related