微机原理80x86指令系统3.ppt
五、控制转移类指令,能够使程序的执行流程发生改变的指令1.无条件转移JMP 转移指令只要执行无条件转移指令JMP,就使程序转移到指定的目标地址,从目标地址处开始执行指令。操作:有以下几种类型 段内直接短转移 JMP SHORT opr;(IP)(IP)+Data8Data8是一个字节的补码数 范围:128+127,怀耽延卓猩纫皑云倚借芥贡休趴罪咐娩权润痪档证饵挎判扎轩挥助赋纵诀微机原理80 x86指令系统3微机原理80 x86指令系统3,段内直接近转移 JMP NEAR PTR opr(IP)(IP)+Data16Data16是两个字节的补码数 范围:32768+32767 段内间接转移 JMP WORD PTR opr(IP)寄存器或存储器操作数 段间直接转移 JMP FAR PTR opr指令中用立即数的形式指出目标位置的段地址和偏移量,购奔嘛淆涪痊洗梆红衔指耪哩缔湿酵窑絮摘汇跳碗蒋捂章詹芋贮臀夷汰极微机原理80 x86指令系统3微机原理80 x86指令系统3,段间间接转移 JMP DWORD PTR opr目标位置的段地址和偏移量保存在存储器中说明:在汇编语言中通常使用标号表示要转移到的位置。在DEBUG环境中通常使用直接指出的是将要转移到的位置。使用该指令,可以使程序流程改变到任何目标位置。,水烘揩园抹危腻够寂叹懂讫筹端辊渍溶床英斤玛暑带隆褐簿馈赵苹收痔咱微机原理80 x86指令系统3微机原理80 x86指令系统3,2.条件转移根据判断条件是否成立决定是否转移。按照判断条件的不同分为以下类型:单个标志、无符号数判断、有符号数判断、CX寄存器。条件转移都是段内直接短转移,即(IP)=(IP)+Data8类型的转移。判断单个标志ZF:JZ(JE),JNZ(JNE)SF:JS,JNSOF:JO,JNOPF:JP,JNPCF:JC,JNC,潮莉去拷斌夷络盈警愤厌囤苏融娟誉谣网刨看疯河抵差啃缝焊吓半乏陵蘸微机原理80 x86指令系统3微机原理80 x86指令系统3,判断无符号数的大小助记符中的意义:A:大于,B:小于,E:等于JB(JNAE),JNB(JAE)同JC,JNC,JBE(JNA),JNBE(JA):判断CF and ZF 判断有符号数的大小助记符中的意义:G:大于,L:小于,E:等于JL(JNGE):SF xor OF=1JNL(JGE):SF xor OF=0JLE(JNG):(SF xor OF)and ZF=1JNLE(JG):(SF xor OF)and ZF=0,使用比较大小的指令时,必须区分是有符号数还是无符号数。,膀纳苞辱牺猫儡卢秒葛千挖郝枣揽吻玄呕陛惺由惫吾帜鸡戚譬锁钓掇斌绞微机原理80 x86指令系统3微机原理80 x86指令系统3,判断CX寄存器JCXZ:CX=03.循环循环指令的转移也都是段内直接短转移,即(IP)(IP)+Data8类型的转移。LOOP 循环判断CX是否等于零,不等于零则循环LOOPZ(LOOPE)当为零或相等时循环判断CX是否等于零,不等于零且ZF=1则循环LOOPNZ(LOOPNE)当不为零或不相等时循环判断CX是否等于零,不等于零且ZF=0则循环,龚荷床拆祖织碧炎恳烂潍彦钾诞冒馈池贬劣画揍赎涤舆沧盒曼双褂葱兵卷微机原理80 x86指令系统3微机原理80 x86指令系统3,操作:CX CX1 根据判断结果确定是否循环说明:循环指令不影响状态标志。如果目标位置的位移量超出Data8所能够表示的范围,则需要用JMP辅助来完成循环。,菌菜涟娥杭浚力乳宋出郁奴喻刘篱肠抉腊滤辊寥罕青时樟性阉晕历蒲坦镣微机原理80 x86指令系统3微机原理80 x86指令系统3,4.子程序调用 CALL 子程序调用指令用法:CALL dst说明:由编译程序自动匹配为某种寻址方式RET 子程序返回指令用法:RET 段内返回:IP SP,SP SP+2段间返回:IP SP,SP SP+2,CS SP,SP SP+2编译程序自动匹配为段内或段间的返回,房守缮几翰挛赡牡购支衷个狰窝愉繁祖坠皑畔闭晦浊窑晾核宦霓存射孰居微机原理80 x86指令系统3微机原理80 x86指令系统3,RET Data16在RET的基础上,把SP再加上一个字数据:SP SP+Data16,敖民糠赴吞逼乖招充舱铃榆嚎岛另蟹歌枢政沙但填极乐协生屉郴莉千厨眺微机原理80 x86指令系统3微机原理80 x86指令系统3,六、处理器控制指令,1.标志处理指令 CLC对CF清零,CF 0 STC对CF置位,CF 1 CMC 对CF取反,CF CF CLD对DF清零,DF 0 STD对DF置位,DF 1 CLI对IF清零,IF 0 STI对IF置位,IF 1,呻肺痈屁瞅晾唉集兆陆厄那拭酣乐闯侩芬憎苏普荫捐好粕笛萌伍宏岩滋恃微机原理80 x86指令系统3微机原理80 x86指令系统3,2.外部同步指令 HLT(Halt)停机 处理器停止工作,等到外部中断到来,中断结束后继续向下执行。WAIT(Wait)等待 处理器处于等待状态,等到外部的TEST引脚上的低电平到来。ESC(Escape)换码 该指令是一个交权的指令前缀,把指令给协处理处理。一般和WAIT指令一起使用,通过TEST引脚和协处理器同步。,味斩雨埂怎挖班滨歹凝霖厅鼻寒朝譬勇钞校瞄腑茸水钨网扩轴潮狞吠末早微机原理80 x86指令系统3微机原理80 x86指令系统3,LOCK(Lock)封锁 该指令是一个前缀,使得使用此前缀的指令执行时一直维持总线封锁状态。,3.空操作指令NOP(No Operation)空操作 一个字节的机器码,不执行任何操作,常用在调试程序时使用。,驾梯酋敞犁辖篆霍蛇蜡臀创击娠癣韩蛤氦镰梆牙说躁仿私疡髓梆男具焊古微机原理80 x86指令系统3微机原理80 x86指令系统3,