《控制转移类指令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当前+rel8IP目的 IP源+rel8+2,注:rel8 80H,06H,段内直接近转移 rel
3、16,IP源,IP当前,IP目的,错误的 rel16,正确的 rel16,LABEL,JMP NEAR LABEL,IP目的 IP当前+rel16IP目的 IP源+rel16+3,00H,05H,例:设标号偏移地址=1000H,执行完JMP指令后的当前IP值为0009H,则,位移量=1000H0009H=0FF7H,控制转移类指令,JMP 无条件转移指令,段内间接转移 寄存器中的值为段内IP目的地址 JMP BX 存储器中的值为段内IP目的地址 JMP WORD BX JMP WORD 2000H,注:段内转移方式 CS不变、IP变,控制转移类指令,JMP 无条件转移指令,段间直接远转移 JM
4、P 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中的数据类型 JMP WORD BX;段内间接转移,返回 16 位 IP目的 值 JMP DWORD BX;段间间接远
5、转移,返回 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当前、IP当前值入栈 过程返回指令 RET 定义近过程时 RET 指令恢复现场即将 IP当前值出栈 定义远过程时 RET 指令恢复现场即将 I
6、P当前、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 值出栈,控制转移类指令,近过程的调用时的保持现场,.MOV AX,BX CALL MAINMOV BX,AX.,2002H,CS,2005H,IP当前 入栈
7、,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目的,JMP 指令 不保护现场 CS当前:IP当前只获得跳转程序入口CS目的:IP目的,控制转移类指令,JXX 有条件转移指令,指令格式 JL、JGE、.JNZ 等 指令特点 仅有段内
8、短转移,IP目的=IP当前+rel8 rel8 值在页内,即-128+127间 前导指令 CMP、TEST、DEC CX 等,注:执行 JXX 指令前的指令必须影响 标志位,条件转移指令的执行流程,控制转移类指令,有条件转移指令的英文符号,Zero 目的操作数减源操作数为0(ZF=0)Equal 目的操作数等于源操作数(ZF=0)Above 目的操作数高于源操作数(CF=0)Below 目的操作数低于源操作数(CF=1)Greater 目的操作数大于源操作数(OF SF=0)Less 目的操作数小于源操作数(OF SF=1)Carry 两无符号运算后有进位(CF=1)Overflow 两有符号
9、运算后有溢出(OF=1)Sign 两有符号运算后有符号(SF=1)Parity 奇偶位为偶(PF=1)Not 不是,控制转移类指令,JXX指令与状态标志位 ZF、CF,与ZF有关的条件转移指令 JE/JZ 两数相等/两数相减不为零(ZF=0)JNE/JNZ 两数有等/两数相减为零(ZF=1)与CF有关的条件转移指令 JAE/JNB 高于或等于/不低于(CF=0)JNC 无进位/无借位(CF=0)JB/JNAE 低于/不高于也不等于(CF=1)JC 有进位/有借位(CF=1),例:JC/JNC指令,;统计BX中1的个数(方法一)xor al,al;AL0,CF0again:test bx,0ff
10、ffh;等价于 cmp bx,0je next;ZF=1,即(BX)=0,转移shl bx,1jnc again;CF=0.转移inc al;CF=1,加1jmp againnext:.;AL保存1的个数,统计BX中“1”的个数(方法二),xor al,al;AL0,CF0again:cmp bx,0jz nextshl bx,1;也可使用 shr bx,1adc al,0jmp againnext:.;AL保存1的个数,例:JZ/JNZ指令,repz cmpsb;重复比较两个字符串jnz unmat;ZF0(不等),转移mov al,0;顺序执行(相等)jmp outputunmat:mov
11、 al,0ffhoutput:mov result,alrepz cmpsb;重复比较两个字符串jz mat;ZF1(相等),转移mov al,0ffh;顺序执行(不等)jmp outputmat:mov al,0output: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|(绝对值)
12、;X和Y为存放于X单元和Y单元的16位操作数;结果存入resultmov ax,Xsub ax,Yjns nonnegneg ax;neg是求补指令nonneg:mov result,ax,例:JO/JNO指令,;计算XY;X和Y为存放于X单元和Y单元的16位操作数;若溢出,则转移到overflow处理mov ax,Xsub ax,Yjo overflow.;无溢出,结果正确overflow:.;有溢出处理,例:JP/JNP指令,;设字符的ASCII码在AL寄存器中;将字符加上奇校验位;在字符ASCII码中为“1”的个数已为奇数时;则令其最高位为“0”;否则令最高位为“1”and al,7fh
13、;最高位置“0”,同时判断“1”的个数 jnp next;个数已为奇数,则转向next or al,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 目操作数源操
14、作数则转移(CF=0且ZF=0)JAE/JNB 目操作数 源操作数则转移(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/JNG 目操作数 源操作
15、数则转移(OF SF=1、ZF=0 或 ZF=1)注:两个有符号数的比较 称大于、称小于,例:比较无符号数,cmp ax,bx;比较ax和bxjnb next;若axbx,转移xchg ax,bx;若axbx,交换next:.,例:比较有符号数,cmp ax,bx;比较ax和bxjnl next;若axbx,转移xchg ax,bx;若axbx,交换next:.,控制转移类指令,LOOP 循环控制指令,指令 特点 以计数器 CX,标志位 ZF 为条件,控制循环体 指令格式 LOOP LABEL 若(CX)0,执行循环体 LABEL LOOPZ LABEL 或 LOOPE LABEL 若(CX)
16、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 AGAEXIT:,AGA:MOV AX,BX LOOP AGAEXIT:,例:统计空格个数,mov cx,count;设置循环次数 mov si,offset string xor bx,bx;bx清0,用于统计空格数 mov al,20hagain:cmp al,es:si jnz next;ZF=0,非
17、空格,转移 inc bx;ZF=1,是空格,个数加1 next:inc si loop again;字符个数减1,不为0继续循环,控制转移类指令,INT 中断控制指令,中断概念 特事特办,立即处理 中断类型 内部中断 软中断,由执行中断指令 INT 获得中断服务 外部中断 硬中断,由外部电平触发获得中断服务,控制转移类指令,CALL 指令与 INT 指令比较,执行 CALL LABEL 指令 调用过程名为LABEL 的子程序 执行 INT n 指令 调用中断类型(号)为 n 的中断服务程序,控制转移类指令,保护现场与恢复现场,保护现场(断点)CALL 近调用保护IP,远调用保护CS、IP IN
18、T 保护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 值入栈 n*4(IP目的)获得中服程序的入口 IP 值 从CS目的:IP目的处执行中服程序,控制转移类指令,IRET 指令执行过程,(
19、IP当前)SS:SP 恢复现场 IP 值出栈(CS当前)SS:SP 恢复现场 CS 值出栈(FLAG)SS:SP 恢复标志寄存器 的值出栈,控制转移类指令,INTO 溢出中断指令,指令功能若溢出标志OF=1,产生4号中断(中断向量地址为10H),否则顺序执行,ADD AX,BXINTOSUB AX,BXINTO,控制转移类指令,中断号、中断向量、中断向量表,中断号(中断类型码)PC 机定义了 256 个中断号 从0 255 或 00H 0FFH 中断向量 中断服务程序的入口地址,即 CS目的:IP目的值 中断向量表 存放所有中断号对应中断服务程序的 入口地址 CS目的:IP目的值的存储区,控制
20、转移类指令,Intel对8088/8086CPU的保留中断向量表区,00000H,0007FH,FFFFFH,128B中断向量表区,可存放 32 个中断向量,控制转移类指令,中断向量的存放,中断服务程序,中断向量表,8FC0H:2A30H,IP目的,CS目的,每个中断服务程序的 入口地址CS目的:IP目的 占用4 个存储单元。,IP目的值放在低地址的 2 个存储单元。,CS目的值放在高地址的 2 个存储单元。,从CS目的:IP目的 处 执行中断服务程序。,30H,2AH,C0H,8FH,控制转移类指令,中断号与中断向量表的关系,根据中断号 n 求中断服务程序的入口表地址 IP目的=n*4 或
21、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 指令的相同点与不同点中断号、中断向量、中断向量表的概念,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个时钟周期的时间,它常用于程序运行中的短延时需求等。,