控制转移类指令PPT课件.ppt

上传人:本田雅阁 文档编号:2855242 上传时间:2019-05-29 格式:PPT 页数:54 大小:396.06KB
返回 下载 相关 举报
控制转移类指令PPT课件.ppt_第1页
第1页 / 共54页
控制转移类指令PPT课件.ppt_第2页
第2页 / 共54页
控制转移类指令PPT课件.ppt_第3页
第3页 / 共54页
控制转移类指令PPT课件.ppt_第4页
第4页 / 共54页
控制转移类指令PPT课件.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《控制转移类指令PPT课件.ppt》由会员分享,可在线阅读,更多相关《控制转移类指令PPT课件.ppt(54页珍藏版)》请在三一文库上搜索。

1、8088/8086CPU指令系统,寻址方式解决了操作数存放的形式, 本节讲述 8088/8086 CPU基本指令的助记符表示形式及功能 结合不同的寻址方式,将 133 条基本 指令组合为上千种指令功能,8088/8086 CPU 基本指令类,数据传送类指令 算术运算类指令 逻辑运算类指令 串操作类指令 控制转移类指令 处理器控制类指令,程序转移指令用来控制程序的走向,其实质是设法改变当前的CS和IP值,以使CPU转移到一个新的地址处执行程序。,控制转移类指令,控制转移类指令,无条件转移指令 JMP 指令 CALL、RET指令 有条件转移指令 JXX 组指令 中断指令 INT、IRET、INTO

2、指令 循环控制指令 LOOP,LOOPZ, LOOPNZ指令,控制转移类指令,JMP 无条件转移指令,段内直接短转移 JMP SHORT LABEL ;IP目的 IP当前 + rel8(8 bit 符号数) rel8 在-128 +127之间 段内直接近转移 JMP NEAR LABEL ;IP目的 IP当前 + rel16 (16 bit 符号数) rel16 在-32768 +32767之间,段内直接短转移 rel8, IP源, IP当前, IP目的,错误的 rel8,正确的 rel8,LABEL,JMP SHOR LABEL,IP目的 IP当前 + rel8 IP目的 IP源 + rel

3、8 + 2,注:rel8 80H, 06H,段内直接近转移 rel16, IP源, IP当前, IP目的,错误的 rel16,正确的 rel16,LABEL,JMP NEAR LABEL,IP目的 IP当前 + rel16 IP目的 IP源 + rel16 + 3, 00H, 05H,例:设标号偏移地址=1000H,执行完JMP指令后的当前IP值为0009H,则,位移量=1000H0009H = 0FF7H,控制转移类指令,JMP 无条件转移指令,段内间接转移 寄存器中的值为段内IP目的地址 JMP BX 存储器中的值为段内IP目的地址 JMP WORD BX JMP WORD 2000H ,

4、注:段内转移方式 CS不变、IP变,控制转移类指令,JMP 无条件转移指令,段间直接远转移 JMP FAR LABEL ; LABEL 为 CS目的:IP目的 段间间接远转移 JMP DWORD BX ; CS目的:IP目的 在地址 BX 中,注:段间转移方式 CS变、IP变,当前CS=2100H,JMP 0C 02 00 65,转移目标的偏移地址,转移目标的段地址,16 21000H,代码段1,16 65000H,新CS=6500H,代码段2,转移至此,当前IP =1500H,新IP = 020CH,控制转移类指令,段内间接转移与段间间接远转移讨论,JMP BX ;指令错误,未确定BX中的数

5、据类型 JMP WORD BX ;段内间接转移,返回 16 位 IP目的 值 JMP DWORD BX ;段间间接远转移,返回 32 位 CS目的:IP目的 值,段内间接转移与段间间接远转移例,若(BX)= 2000H JMP WORD BX CS目的 = CS源 IP目的 = 3C2AH JMP DWORD BX CS目的 = 3367H IP目的 = 3C2AH,2000H,控制转移类指令,CALL、RET 过程调用与过程返回指令,过程调用指令 CALL LABEL 段内近调用过程 CS 不变,IP 变;保护现场即将IP当前值入栈 段间远调用过程 CS、IP 均变;保护现场即将CS当前、I

6、P当前值入栈 过程返回指令 RET 定义近过程时 RET 指令恢复现场即将 IP当前值出栈 定义远过程时 RET 指令恢复现场即将 IP当前、CS当前值出栈,控制转移类指令,(IP当前) SS:SP 保护现场 IP 值入栈,段内近调用过程 CALL LABEL,段内近调用返回 RET,(IP当前) SS:SP 恢复现场 IP 值出栈,段间远调用过程 CALL LABEL,(CS当前) SS:SP 恢复现场 CS 值出栈,(CS当前) SS:SP 保护现场 CS 值入栈,(IP当前) SS:SP 保护现场 IP 值入栈,段间远调用返回 RET,(IP当前) SS:SP 恢复现场 IP 值出栈,控

7、制转移类指令,近过程的调用时的保持现场,. . MOV AX,BX CALL MAIN MOV BX,AX . .,2002H,CS,2005H,IP当前 入栈,IP目的 = 8030H, IP源, IP当前,2000H,控制转移类指令,CALL指令中的直接调用与间接调用 段内近过程调用 直接 IP目的 间接 IP目的 段间远过程调用 直接 CS目的:IP目的 间接 CS目的:IP目的,CALL MAIN,CALL BX,CALL DWORD BX ,CALL MAIN,控制转移类指令,CALL、JMP 指令比较,CALL 指令 先保护现场 CS当前:IP当前 后获得调用过程入口CS目的:IP

8、目的,JMP 指令 不保护现场 CS当前:IP当前 只获得跳转程序入口CS目的:IP目的,控制转移类指令,JXX 有条件转移指令,指令格式 JL、JGE、. . . . . . JNZ 等 指令特点 仅有段内短转移,IP目的 = IP当前 + rel8 rel8 值在页内,即-128 +127间 前导指令 CMP、TEST、DEC CX 等,注:执行 JXX 指令前的指令必须影响 标志位,条件转移指令的执行流程,控制转移类指令,有条件转移指令的英文符号,Zero 目的操作数减源操作数为0(ZF = 0) Equal 目的操作数等于源操作数(ZF = 0) Above 目的操作数高于源操作数(C

9、F = 0) Below 目的操作数低于源操作数(CF = 1) Greater 目的操作数大于源操作数(OF SF = 0) Less 目的操作数小于源操作数(OF SF = 1) Carry 两无符号运算后有进位(CF = 1) Overflow 两有符号运算后有溢出(OF = 1) Sign 两有符号运算后有符号(SF = 1) Parity 奇偶位为偶(PF = 1) Not 不是,控制转移类指令,JXX指令与状态标志位 ZF、CF,与ZF有关的条件转移指令 JE/JZ 两数相等/两数相减不为零(ZF = 0) JNE/JNZ 两数有等/两数相减为零(ZF = 1) 与CF有关的条件转

10、移指令 JAE/JNB 高于或等于/不低于(CF = 0) JNC 无进位/无借位(CF = 0) JB/JNAE 低于/不高于也不等于(CF = 1) JC 有进位/有借位(CF = 1),例:JC/JNC指令,;统计BX中1的个数(方法一) xor al,al ;AL0,CF0 again: test bx,0ffffh ;等价于 cmp bx,0 je next ; ZF=1,即(BX)=0,转移 shl bx,1 jnc again ;CF=0.转移 inc al ;CF=1,加1 jmp again next: . ;AL保存1的个数,统计BX中“1”的个数(方法二),xor al,

11、al ;AL0,CF0 again: cmp bx,0 jz next shl bx,1 ;也可使用 shr bx,1 adc al,0 jmp again next: . ;AL保存1的个数,例:JZ/JNZ指令,repz cmpsb ;重复比较两个字符串 jnz unmat ;ZF0(不等),转移 mov al,0 ;顺序执行(相等) jmp output unmat: mov al,0ffh output: mov result,al repz cmpsb ;重复比较两个字符串 jz mat ;ZF1(相等),转移 mov al,0ffh ;顺序执行(不等) jmp output mat

12、: mov al,0 output: mov result,al,控制转移类指令,JXX指令与状态标志位 SF、PF、OF,与SF有关的条件转移指令 JS (SF = 1)时跳转 JNS (SF = 0)时跳转 与PF有关的条件转移指令 JO/JPE (PF = 1)时跳转 JNP/JPO (PF = 0)时跳转 与OF有关的条件转移指令 JO (OF = 1)时跳转 JNO (OF = 0)时跳转,例:JS/JNS指令,;计算|XY|(绝对值) ;X和Y为存放于X单元和Y单元的16位操作数 ;结果存入result mov ax,X sub ax,Y jns nonneg neg ax ;ne

13、g是求补指令 nonneg: mov result,ax,例:JO/JNO指令,;计算XY; ;X和Y为存放于X单元和Y单元的16位操作数 ;若溢出,则转移到overflow处理 mov ax,X sub ax,Y jo overflow . ;无溢出,结果正确 overflow: . ;有溢出处理,例:JP/JNP指令,;设字符的ASCII码在AL寄存器中 ;将字符加上奇校验位 ;在字符ASCII码中为“1”的个数已为奇数时 ;则令其最高位为“0”;否则令最高位为“1” and al,7fh ;最高位置“0”,同时判断“1”的个数 jnp next ;个数已为奇数,则转向next or al

14、,80h ;否则,最高位置“1” next: .,01000001,控制转移类指令,高于与大于、低于与小于,两无符号数比较称 高于、低于 与标志位CF有关 JA/JNBE、 JAE/JNB、 JB/JNAE、 JBE/JNA Above、Below、Not、Equal 两有符号数比较称 大于、小于 与标志位OF,SF有关 JG/JNLE、 JGE/JNL 、 JL/JNGE、 JLE/JNG Greater、Less、Not、Equal,控制转移类指令,JXX指令与状态标志位 CF,ZF,JA/JNBE 目操作数源操作数则转移 (CF = 0且ZF = 0) JAE/JNB 目操作数 源操作数

15、则转移 (CF = 0、ZF = 0 或 ZF = 1) JB/JNAE 目操作数 源操作数则转移 (CF = 1且ZF = 0) JBE/JNA 目操作数 源操作数则转移 (CF = 1、ZF = 0 或 ZF = 1) 注:两个无符号数的比较, 称高于、 称低于,控制转移类指令,JXX指令与状态标志位 OF,SF,ZF,JG/JNLE 目操作数源操作数则转移 (OF SF = 0 且 ZF = 0) JGE/JNL 目操作数 源操作数则转移 (OF SF = 0、ZF = 0 或 ZF = 1) JL/JNGE 目操作数 源操作数则转移 (OF SF = 1 且 ZF = 0) JLE/J

16、NG 目操作数 源操作数则转移 (OF SF = 1、ZF = 0 或 ZF = 1) 注:两个有符号数的比较 称大于、 称小于,例:比较无符号数,cmp ax,bx ;比较ax和bx jnb next ;若axbx,转移 xchg ax,bx ;若axbx,交换 next: .,例:比较有符号数,cmp ax,bx ;比较ax和bx jnl next ;若axbx,转移 xchg ax,bx ; 若axbx,交换 next: .,控制转移类指令,LOOP 循环控制指令,指令 特点 以计数器 CX,标志位 ZF 为条件,控制循环体 指令格式 LOOP LABEL 若(CX) 0,执行循环体 L

17、ABEL LOOPZ LABEL 或 LOOPE LABEL 若(CX) 0 或 ZF = 1,执行循环体LABEL LOOPNZ LABEL 或 LOOPNE LABEL 若(CX) 0 或 ZF = 0、执行循环体LABEL JCXZ 短标号 若 (CX)= 0 则转移至目标地址,控制转移类指令,JNZ、LOOP 指令比较,AGA:MOV AX,BX DEC CX JNZ AGA EXIT:,AGA:MOV AX,BX LOOP AGA EXIT:,例:统计空格个数,mov cx,count ;设置循环次数 mov si,offset string xor bx,bx ;bx清0,用于统计

18、空格数 mov al,20h again: cmp al,es:si jnz next ;ZF=0,非空格,转移 inc bx ;ZF=1,是空格,个数加1 next: inc si loop again ;字符个数减1,不为0继续循环,控制转移类指令,INT 中断控制指令,中断概念 特事特办,立即处理 中断类型 内部中断 软中断,由执行中断指令 INT 获得中断服务 外部中断 硬中断,由外部电平触发获得中断服务,控制转移类指令,CALL 指令与 INT 指令比较,执行 CALL LABEL 指令 调用过程名为LABEL 的子程序 执行 INT n 指令 调用中断类型(号)为 n 的中断服务程

19、序,控制转移类指令,保护现场与恢复现场,保护现场(断点) CALL 近调用保护IP,远调用保护CS、IP INT 保护FLAG、CS、IP 恢复现场(断点) RET 根据定义过程恢复IP 或IP、CS IRET 恢复IP、CS、 FLAG,注:由指令完成入栈、出栈操作,控制转移类指令,INT n 指令执行过程,(F) SS:SP 将标志寄存器 F 的值入栈保存 TF 0 中服程序正常运行,非单步运行 IF 0 中服程序中关可屏蔽中断INTR (CS当前) SS:SP 保护现场 CS 值入栈 n*4+2(CS目的) 获得中服程序的入口 CS 值 (IP当前) SS:SP 保护现场 IP 值入栈

20、n * 4 (IP目的) 获得中服程序的入口 IP 值 从CS目的:IP目的处执行中服程序,控制转移类指令,IRET 指令执行过程,(IP当前) SS:SP 恢复现场 IP 值出栈 (CS当前) SS:SP 恢复现场 CS 值出栈 (FLAG) SS:SP 恢复标志寄存器 的值出栈,控制转移类指令,INTO 溢出中断指令,指令功能 若溢出标志OF=1,产生4号中断(中断向量地址为10H) ,否则顺序执行,ADD AX,BX INTO SUB AX,BX INTO,控制转移类指令,中断号、中断向量、中断向量表,中断号 (中断类型码) PC 机定义了 256 个中断号 从0 255 或 00H 0

21、FFH 中断向量 中断服务程序的入口地址,即 CS目的:IP目的值 中断向量表 存放所有中断号对应中断服务程序的 入口地址 CS目的:IP目的值的存储区,控制转移类指令,Intel对8088/8086CPU的保留中断向量表区,00000H,0007FH,FFFFFH,128B中断向量表区,可存放 32 个中断向量,控制转移类指令,中断向量的存放,中断服务程序,中断向量表,8FC0H:2A30H,IP目的,CS目的,每个中断服务程序的 入口地址CS目的:IP目的 占用4 个存储单元。,IP目的值放在低地址的 2 个存储单元。,CS目的值放在高地址的 2 个存储单元。,从CS目的: IP目的 处

22、执行中断服务程序。,30H,2AH,C0H,8FH,控制转移类指令,中断号与中断向量表的关系,根据中断号 n 求中断服务程序的入口表地址 IP目的 = n * 4 或 IP目的 = n 2 CS目的 = n * 4 + 2 或 CS目的 = n 2 + 2 根据中断服务程序的入口表地址求中断号 n n = IP目的 / 4 n = IP目的 2,控制转移类指令总结,JMP 指令中的相对地址量与绝对地址量 JMP 指令中段内、段间转移的特点 JXX 指令与状态标志位的关系及指令的多样性 CMP、TEST、DEC 指令与JXX指令的应用 CALL、INT 指令的相同点与不同点 中断号、中断向量、中

23、断向量表的概念,8088/8086 CPU 基本指令类,数据传送类指令 算术运算类指令 逻辑运算类指令 串操作类指令 控制转移类指令 处理器控制类指令,处理器专用指令,标志位操作指令 系统操作指令,CLC、STC、CMC 指令,CLD、STD 指令;CLI、STI 指令,HLT 指令;WAIT 指令;NOP 指令; ESC指令;HLT指令;LOCK指令,1. 标志位操作指令,(2) CLD;使DF = 0 (用于串操作之中) STD;使DF = 1,(3) CLI;使IF = 0 (禁止可屏蔽中断) STI;使IF = 1 (允许可屏蔽中断),3. 处理器脱离,4. 处理器等待,6. 总线锁定,NOP 空操作指令,CPU执行此指令时,不做任何具体的操作,但它消耗3个时钟周期的时间,它常用于程序运行中的短延时需求等。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1