5条件转移课件_第1页
5条件转移课件_第2页
5条件转移课件_第3页
5条件转移课件_第4页
5条件转移课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.条件转移指令1.简单条件转移指令2.无符号数条件转移指令3.有符号数条件转移指令它们都有通用的语句格式和功能。语句格式:操作符opr功能:如果条件满足,则(IP)+位移量→IP。存储器OPXXJZ+15MOVXXIPCSIP碗钉灰选券著卒颅疑脏舜棠哉赊株侩逊枯史缆终冗蔗髓鄙染剿萄畴典硬鳖第3章-5-条件转移第3章-5-条件转移12.条件转移指令1.简单条件转移指令存储器OPXXJZ+11)简单条件转移指令助记符转移条件功能JE/JZZF=1相等/等于0转移JNE/JNZZF=0不相等/不等于0转移JSSF=1为负转移JNSSF=0为正转移JOOF=1溢出转移JNOOF=0未溢出转移JCCF=1进位位为1转移JNCCF=0进位位为0转移JP/JPEPF=11的个数为偶数转移JNP/JPOPF=O1的个数为奇数转移委崇眷密闭坍趣炼因捎定屡篷岂瘁麻年躁蛆康政昏驼豫锦眩菩枢蒜秆黑睦第3章-5-条件转移第3章-5-条件转移21)简单条件转移指令助记符转移条件功能JE/JZZF=1控制转移指令-例例:根据加法运算的结果,做不同的动作或者addax,tempjnz

action1……action_1:

……action_2:

addax,tempjz

action_2

…action_1:MOV…

…….action_2:

ADD…凰圈榜抽哆轻虹况戌供等恩酝锗擅多鹰唯虞震尊江划瓢时休蒂今会翟匀惦第3章-5-条件转移第3章-5-条件转移3控制转移指令-例例:根据加法运算的结果,做不同的动作或者凰条件转移指令2)比较两个无符号数,并根据比较的结果转移JBE(JBA)(CFZF)=1无符号数JNBE(JA)(CFZF)=0无符号数3)比较两个带符号数,并根据比较结果转移JL(JNGE)(SFOF)=1有符号数JNL(JGE)(SFOF)=0有符号数JLE(JNG)(SFOF)vZF=1有符号数JNLE(JG)(SFOF)vZF=0有符号数Above

-----大于Blow

------小于Great

-----大于Low

------小于镊写谆鞍衅锤常申躁咨判呕眺洗钠照卧陕铰纺哆宴茅喂甭森类骸恳忙撵势第3章-5-条件转移第3章-5-条件转移4条件转移指令2)比较两个无符号数,并根据比较的结果转移3)比带符号数/无符号数比较必须区分有符号和无符号指令的适用情况,否则会出现错误.例如:AX=11111111,BX=00000000CMPAX,BX无符号数1111111(255)>

00000000(0)有符号数1111111(-1)<

000000000(0)

无符号数比较时,CF=1有借位<

CF=0没有借位>=CFVZF=1<=CFVZF=0>抡糜阑猎芹惑孰羡涤懂戊旦慧组噎衣八圾欠诣渊烹颗截腕渣裳赊榔宏架颂第3章-5-条件转移第3章-5-条件转移5带符号数/无符号数比较必须区分有符号和无符号指令的适用情况,带符号比较的情况SF=1符号为负,OF=1有溢出

SFOFSFOFA000(大于)B011(小于)C101D110-32768+3276780007FFFFFFF0001-1+1负溢正溢负数正数矽掖尿蚌饲羔郝条号除铬滔熊某拽良咖鄙沫瞅摇欢基喀肆镊陪候姑框筋在第3章-5-条件转移第3章-5-条件转移6带符号比较的情况-32768+327678000控制转移指令-测试CX4)测试CX的值为0则转移指令JCXZCX寄存器为0则转移格式:JCXZOPRJECXZOPR

ECX寄存器的内容值为0则转移指令格式:JECXZOPR测试条件(ECX)=0著即蓟慨嫉创任阁核能埔袜斜腐痛膜翅郝杀颓置壤钎虹缎弱蓟采粉慨捕开第3章-5-条件转移第3章-5-条件转移7控制转移指令-测试CX4)测试CX的值为0则转移指令控制转移指令-例movax,xcmpax,50jgtoo-highsubax,yjooverflowjnsnonneg

negaxnonneg:movresult,ax…too_high:

…overflow:例:设X,Y均为存放在X和Y单元中的16位操作数,先判断X>50否?如果满足条件则转移到TOO-HIGH去执行。然后做X-Y;如溢出则转移到OVERFLOW去执行。否则计算|X-Y|,并把结果存入RESULT中。拴戴葛龚泰什郧抽蕴椎芹天娠丁县芥盅上绽啪河贩锐碾袍冠拱魔烤荒朔极第3章-5-条件转移第3章-5-条件转移8控制转移指令-例movax,x例:拴戴葛龚泰什郧抽蕴椎芹控制转移指令例3.65a,b为两个双精度数,分别存储于DX,AX及AX,CX中.要求编制一程序使A>B时转向X转向,否则转Y执行,程序如下:CMPDX,BXJGXJLYCMPAX,CXJAX…Y:…X:0000000111111111-10000001011111101-2网钙呜炎者枝镣烽济炉惧渺罢蹿悲散恭冕色苞限素肥甚匆笨委微燎看露砰第3章-5-条件转移第3章-5-条件转移9控制转移指令例3.65a,b为两个双精度数,分别存储于D例:3.78Cx=nbx=0di=0si=0Array[bx]≤0?INCdiINCsiArray[bx]<0?BX=(BX)+2CX-1=0?AX=n,AX=(AX)-di-siYNYNNYdi:正数个数si:负数个数存储器78250-1556055-4XXXXxxArray推篡菏拜焉厂灼畦盔料宋数咏汁跳今酚左秘强舍挂惨派惊久嘿霉铜望麦挣第3章-5-条件转移第3章-5-条件转移10例:3.78Cx=nbx=0di=0si=0例:统计数组中负数、0、正数的个数MOVCX,NMOVBX,0MOVDI,BXMOVSI,BXAgaig:CMPArray[BX],0JLEle-eqINCDIJMPnextle-eq:JLnextINCSInext:ADDBX,2DECCXJNZagainMOVAX,NSUBAX,DISUBAX,SIJZskipJMPneg-valskip:…neg-val…..撤邮垒弘精选巩章卧乌驱亲叉访亿议土另嫂版阎隘挝必该辐蠢吉删酷留枣第3章-5-条件转移第3章-5-条件转移11例:统计数组中负数、0、正数的个数MOVCX,NM3.条件设置指令根据条件码设置目标寄存器/存储器指令格式:SETccDST操作:根据所指定条件码情况,如果满足条件则把目的字节置为1,否则把目的字节置为0。1)根据单个条件标志的值把目的字节置为1①SETZ/SETEDST结果为零,目的字节DST置为1②SETNZ/SETNEDST结果不为零,目的字节DST置为1…⑨

SETS(或条件位S、O、P、C)黄界蹋响溜葬诱运粥瞒拧美插兢嵌八柜泉怖你泽涨蛮断庐催椭净轧她淑复第3章-5-条件转移第3章-5-条件转移123.条件设置指令根据条件码设置目标寄存器/存储器指令格式:3.条件设置指令2、比较两个无符号数,并根据比较结果目的字节置为1①SETB/SETNAE/SETCDST小于,目的字节DST置为1②SETNB/SETAE/SETNCDST不小于,目的字节DST置为1…④SETBE/SETNADST

小于等于,目的字节DST置为13、比较两个带符号数,并根据比较结果目的字节置为1①SETL/SETNGEDST小于,目的字节DST置为1②SETNL/SETGEDST不小于,目的字节DST置为1③SETLE/SETNGDST

小于等于,目的字节DST置为1④SETNBE/SETGDST不小于等于,目的字节DST置为1兴拢诸扣剁斑波耀企撬绰踢每阀捎悲叔牵矛跑拖凝赔割底离惰乘完袍煽鬃第3章-5-条件转移第3章-5-条件转移133.条件设置指令2、比较两个无符号数,并根据比较结果目的字节4循环指令1)循环指令LOOP2)相等/为零循环指令LOOPE3)不相等/不为零循环指令LOOPNE4)CX为零转移指令JCXZCX←CX-1CX=0?循环体CX←循环次数YN说明:使用LOOP指令可代替两条指令:DECCXJNE短标号1).循环指令LOOP语句格式:LOOP短标号功能:(CX)-1≠0,则程序转移(循环);否则,顺序执行。粮损斌瘪穷著莹迟将蚁嫉拱慢步劲囱往剔肖寨枫痘菊休努铺意坏庇喀墟弥第3章-5-条件转移第3章-5-条件转移144循环指令1)循环指令LOOPCX←CX-1CX=0?2)相等/为零循环指令LOOPE语句格式:LOOPE/LOOPZ短标号功能:(CX)-1≠0且ZF=1,则程序转移(循环)否则,顺序执行。3)不相等/不为零循环指令LOOPNE语句格式:LOOPNE/LOOPNZ短标号功能:(CX)-1≠0,且ZF=0则程序转移(循环);否则,顺序执行。淌辐可暇蜂假产絮啡畏螺桑晌苫黍剿肛器掘邯礁化库锭臀悠指揣习货舷示第3章-5-条件转移第3章-5-条件转移152)相等/为零循环指令LOOPE语句格式:3)不相等/不为零4)CX为零转移指令JCXZ语句格式:JCXZ短标号功能:(CX)-1≠0,则程序转移(循环);否则,顺序执行。返回本节筐咎眶啪多哟疚生颊票左命孟党锹火屈显解孙兆辜决探爬欠胀妓酒遵瘟添第3章-5-条件转移第3章-5-条件转移164)CX为零转移指令JCXZ语句格式:JCXZ短标号循环指令-举例例3.67有一个首地址array的m字数组,试编写一个程序:求出数组的内容之和,并把结果存入total中.movcx,mmovax,0movsi,0

st-1:addax,array[si]addsi,2loopst-1movtotal,ax柄衙孜吹揭俱滨戎盏醚淳骇纪苟添谜傣品群在里指膝钟项桓停叔惕毖呼靡第3章-5-条件转移第3章-5-条件转移17循环指令-举例例3.67有一个首地址array的m字数组,循环指令-举例例3.68有一个串中有l个字符,存放在str存储区中.查找字符串中的空格,如果没找到,则转到not_found去执行.movcx,lmovsi,-1moval,20hnext:incsicmpax,str[si]loopnznext

jnznot_found…not_found:膘黔灸洲俭春健缓拟刘哦雪侯篷钙窖绞俘嘛啡役振耘库藐爸仑组淄右血瘤第3章-5-条件转移第3章-5-条件转移18循环指令-举例例3.68有一个串中有l个字符,存放在str5.子程序-段内直接调用指令:CALL调用RET返回由于子程序与调用程序可以在一个段中,也可以在不同一段中,因此着这两条指令的格式有:(1)CALL调用段内直接调用CALLDST操作:PUSHIPIP=(IP)+D16或EIP=((EIP)+D16)AND0000FFFFHPUSHEIP(32位)存储器XXXX…OPXXOPXXXXOPCS:IPSUBP-AD16+寄存器IP例:CALLSUBP-A舔卓蔑伤晋誊益措绰乍蹈昨森汇泅灼聂横腆浇助麓菜三舒幕亏锰舀寺坯胰第3章-5-条件转移第3章-5-条件转移195.子程序-段内直接调用指令:CALL调用5子程序-段内间接调用指令:CALL调用RET返回②段内间接调用CALLDST操作:PUSHIPIP←(EA)或EIP←(EA)AND0000FFFFHPUSHIP或PUSHEIP(32位)

段寄存器+寄存器EACS段寄存器+IP寄存器存储器XXXXXXXXXXXXOPXXXXOP例:CALL[BX+D16]只贷率扯佰幢详也啪别夸柏理熊俘危长归捷牡始洪薪狮感卸英案阂七伤保第3章-5-条件转移第3章-5-条件转移205子程序-段内间接调用指令:CALL调用②段内5子程序-段间直接远调用

CS1:IP1存储器XXCALLIP2CS2XX…OPXXXXOP例:CALLFARPTRPROGACS2:IP2PROGA栈

IP1CS1////////SS:SP③段间直接远调用CALLDST操作:PUSHCSPUSHIP

IP←DST指定的偏移地址CS←DST指定的段地址

*PUSHCS或PUSHEIP(32位)埂讯建痈芳案穿憨感齿解鄂矩铣盯袍迪秧持宿坪替节葛无涧织纫样益尖潮第3章-5-条件转移第3章-5-条件转移215子程序-段间直接远调用CS1:IP1存储器XXCALL5子程序-段间间接远调用指令:CALL调用RET返回

CS1:IP1存储器CALLXXXXOPXXXXIP2CS2…OPXXXXOP例:CALLFARPTR[BX+D16]CS2:IP2PROGA栈

IP1CS1////////SS:SP

DS段+EA

④段间间接远调用CALLDST操作:PUSHCSPUSHIP

IP←(EA)CS←(EA+2)

*PUSHCS或PUSHEIP(32位)药宠农阳项藩赂溪靛泪队锭啊捻绸浅憾凿铬努束力绪稀褪孽甭铱闸陀扦嚣第3章-5-条件转移第3章-5-条件转移225子程序-段间间接远调用指令:CALL调用CS1【例3.54】比较有符号数大小,将较大的数存放在AX寄存器。CMP AX,BX ;(AX)-(BX)JNL NEXT ;若AX>=BX,转移到NEXTXCHG AX,BX ;若AX<BX,交换NEXT:…返回本节殆深颠慎们前香庶招牡讶浮炊初腕掷满赎诈葬瑚女孕狱狈歧淳绵疼迢奇焚第3章-5-条件转移第3章-5-条件转移23【例3.54】比较有符号数大小,将较大的数存放在AX寄存器。3.6中断指令2.中断返回指令IRET语句格式:IRET功能:①↑(SP)→IP②↑(SP)

→CS③↑(SP)

→FLAGS1.中断调用指令INT语句格式:INTn功能:①(FLAGS)→↓(SP),0→IF、TF。②(CS)→↓(SP),(4*n+2)→CS。③(IP)→↓(SP),(4*n)→IP。中断中断服务中断反回兢绕泰熔愉骨顺日项矢夕袁煽辐剃操胰跃冀鞘铁镜棍伟先殆送本迪湍遭元第3章-5-条件转移第3章-5-条件转移243.6中断指令2.中断返回指令IRET1.中断调用指令3.7处理机控制类指令3.7.1标志位设置指令返回本章首页1.进位标志操作指令2.方向标志操作指令3.中断标志操作指令3.7.2CPU状态控制指令受坪航何苟蓬蒜义脾导虱漳抠讽拼泞焙期疚游盾趟粘仁娶恤欺裂瘫舆词裕第3章-5-条件转移第3章-5-条件转移253.7处理机控制类指令3.7.1标志位设置指令返回本CLCCF=0CMCCF=STCCF=1CLDDF=0STDDF=1CLIIF=0(cpu不识别中断请求线上的外部中断请求信号,屏蔽中断)STIIF=1(取消中断屏蔽)标志位设置指令CF刨蒸屑羞蘑镑稽恶琉渴筷茬履苞诌情罚季孪硬致采屁摹舰除烃喷疟寥获甜第3章-5-条件转移第3章-5-条件转移26CLCCF=0标志位设置指令CF刨蒸屑羞蘑镑CPU状态控制指令NOP无操作(留出富余空间)HLT停机(使cpu进入暂时停机状态,等待外部中断的到来)WAIT等待(循环等待中断,中断执行后,回到等待状态,作用与硬件状态同步)ESC换码(使别的处理器能从LOCK封锁(与其它指令联合时使用,维持总线锁存信号,起协同工作的作用)BOUND界限指令ENTER建立堆栈帧指令(286以后机用)粮秃蜀岿植茫誊纺摇腮秦辈谜霞蔡营实捉焦轿僧币男宾爪苹硅吼冈烯勃有第3章-5-条件转移第3章-5-条件转移27CPU状态控制指令NOP无操作(留出富余空间)粮秃蜀本章重点各种寻址方式学会使用汇编语言的各种命令如何判断溢出(有符号数和无符号数)符号扩展的含义压缩的和非压缩的bcd码的调整指令串操作时,不同前缀的结束重复条件的区别比较大小时,有符号数和无符号数的判断条件荒拘神辟虱际蒲数膨箕于阴之措霉姥阂巩狄涵丙色令会屿拼恤揉耐葡头灯第3章-5-条件转移第3章-5-条件转移28本章重点各种寻址方式荒拘神辟虱际蒲数膨箕于阴之措霉姥阂巩狄涵THANKYOUVERYMUCH本章到此结束,谢谢您的光临!返回本章首页结束搜仙蹈京缔丹镣脸足吩擂氯靴圆鹊惧锑稳啦济射熙门扯歪嗣鼓趣材迁讲悯第3章-5-条件转移第3章-5-条件转移29THANKYOUVERYMUCH本章到此结束,返回本章2.条件转移指令1.简单条件转移指令2.无符号数条件转移指令3.有符号数条件转移指令它们都有通用的语句格式和功能。语句格式:操作符opr功能:如果条件满足,则(IP)+位移量→IP。存储器OPXXJZ+15MOVXXIPCSIP碗钉灰选券著卒颅疑脏舜棠哉赊株侩逊枯史缆终冗蔗髓鄙染剿萄畴典硬鳖第3章-5-条件转移第3章-5-条件转移302.条件转移指令1.简单条件转移指令存储器OPXXJZ+11)简单条件转移指令助记符转移条件功能JE/JZZF=1相等/等于0转移JNE/JNZZF=0不相等/不等于0转移JSSF=1为负转移JNSSF=0为正转移JOOF=1溢出转移JNOOF=0未溢出转移JCCF=1进位位为1转移JNCCF=0进位位为0转移JP/JPEPF=11的个数为偶数转移JNP/JPOPF=O1的个数为奇数转移委崇眷密闭坍趣炼因捎定屡篷岂瘁麻年躁蛆康政昏驼豫锦眩菩枢蒜秆黑睦第3章-5-条件转移第3章-5-条件转移311)简单条件转移指令助记符转移条件功能JE/JZZF=1控制转移指令-例例:根据加法运算的结果,做不同的动作或者addax,tempjnz

action1……action_1:

……action_2:

addax,tempjz

action_2

…action_1:MOV…

…….action_2:

ADD…凰圈榜抽哆轻虹况戌供等恩酝锗擅多鹰唯虞震尊江划瓢时休蒂今会翟匀惦第3章-5-条件转移第3章-5-条件转移32控制转移指令-例例:根据加法运算的结果,做不同的动作或者凰条件转移指令2)比较两个无符号数,并根据比较的结果转移JBE(JBA)(CFZF)=1无符号数JNBE(JA)(CFZF)=0无符号数3)比较两个带符号数,并根据比较结果转移JL(JNGE)(SFOF)=1有符号数JNL(JGE)(SFOF)=0有符号数JLE(JNG)(SFOF)vZF=1有符号数JNLE(JG)(SFOF)vZF=0有符号数Above

-----大于Blow

------小于Great

-----大于Low

------小于镊写谆鞍衅锤常申躁咨判呕眺洗钠照卧陕铰纺哆宴茅喂甭森类骸恳忙撵势第3章-5-条件转移第3章-5-条件转移33条件转移指令2)比较两个无符号数,并根据比较的结果转移3)比带符号数/无符号数比较必须区分有符号和无符号指令的适用情况,否则会出现错误.例如:AX=11111111,BX=00000000CMPAX,BX无符号数1111111(255)>

00000000(0)有符号数1111111(-1)<

000000000(0)

无符号数比较时,CF=1有借位<

CF=0没有借位>=CFVZF=1<=CFVZF=0>抡糜阑猎芹惑孰羡涤懂戊旦慧组噎衣八圾欠诣渊烹颗截腕渣裳赊榔宏架颂第3章-5-条件转移第3章-5-条件转移34带符号数/无符号数比较必须区分有符号和无符号指令的适用情况,带符号比较的情况SF=1符号为负,OF=1有溢出

SFOFSFOFA000(大于)B011(小于)C101D110-32768+3276780007FFFFFFF0001-1+1负溢正溢负数正数矽掖尿蚌饲羔郝条号除铬滔熊某拽良咖鄙沫瞅摇欢基喀肆镊陪候姑框筋在第3章-5-条件转移第3章-5-条件转移35带符号比较的情况-32768+327678000控制转移指令-测试CX4)测试CX的值为0则转移指令JCXZCX寄存器为0则转移格式:JCXZOPRJECXZOPR

ECX寄存器的内容值为0则转移指令格式:JECXZOPR测试条件(ECX)=0著即蓟慨嫉创任阁核能埔袜斜腐痛膜翅郝杀颓置壤钎虹缎弱蓟采粉慨捕开第3章-5-条件转移第3章-5-条件转移36控制转移指令-测试CX4)测试CX的值为0则转移指令控制转移指令-例movax,xcmpax,50jgtoo-highsubax,yjooverflowjnsnonneg

negaxnonneg:movresult,ax…too_high:

…overflow:例:设X,Y均为存放在X和Y单元中的16位操作数,先判断X>50否?如果满足条件则转移到TOO-HIGH去执行。然后做X-Y;如溢出则转移到OVERFLOW去执行。否则计算|X-Y|,并把结果存入RESULT中。拴戴葛龚泰什郧抽蕴椎芹天娠丁县芥盅上绽啪河贩锐碾袍冠拱魔烤荒朔极第3章-5-条件转移第3章-5-条件转移37控制转移指令-例movax,x例:拴戴葛龚泰什郧抽蕴椎芹控制转移指令例3.65a,b为两个双精度数,分别存储于DX,AX及AX,CX中.要求编制一程序使A>B时转向X转向,否则转Y执行,程序如下:CMPDX,BXJGXJLYCMPAX,CXJAX…Y:…X:0000000111111111-10000001011111101-2网钙呜炎者枝镣烽济炉惧渺罢蹿悲散恭冕色苞限素肥甚匆笨委微燎看露砰第3章-5-条件转移第3章-5-条件转移38控制转移指令例3.65a,b为两个双精度数,分别存储于D例:3.78Cx=nbx=0di=0si=0Array[bx]≤0?INCdiINCsiArray[bx]<0?BX=(BX)+2CX-1=0?AX=n,AX=(AX)-di-siYNYNNYdi:正数个数si:负数个数存储器78250-1556055-4XXXXxxArray推篡菏拜焉厂灼畦盔料宋数咏汁跳今酚左秘强舍挂惨派惊久嘿霉铜望麦挣第3章-5-条件转移第3章-5-条件转移39例:3.78Cx=nbx=0di=0si=0例:统计数组中负数、0、正数的个数MOVCX,NMOVBX,0MOVDI,BXMOVSI,BXAgaig:CMPArray[BX],0JLEle-eqINCDIJMPnextle-eq:JLnextINCSInext:ADDBX,2DECCXJNZagainMOVAX,NSUBAX,DISUBAX,SIJZskipJMPneg-valskip:…neg-val…..撤邮垒弘精选巩章卧乌驱亲叉访亿议土另嫂版阎隘挝必该辐蠢吉删酷留枣第3章-5-条件转移第3章-5-条件转移40例:统计数组中负数、0、正数的个数MOVCX,NM3.条件设置指令根据条件码设置目标寄存器/存储器指令格式:SETccDST操作:根据所指定条件码情况,如果满足条件则把目的字节置为1,否则把目的字节置为0。1)根据单个条件标志的值把目的字节置为1①SETZ/SETEDST结果为零,目的字节DST置为1②SETNZ/SETNEDST结果不为零,目的字节DST置为1…⑨

SETS(或条件位S、O、P、C)黄界蹋响溜葬诱运粥瞒拧美插兢嵌八柜泉怖你泽涨蛮断庐催椭净轧她淑复第3章-5-条件转移第3章-5-条件转移413.条件设置指令根据条件码设置目标寄存器/存储器指令格式:3.条件设置指令2、比较两个无符号数,并根据比较结果目的字节置为1①SETB/SETNAE/SETCDST小于,目的字节DST置为1②SETNB/SETAE/SETNCDST不小于,目的字节DST置为1…④SETBE/SETNADST

小于等于,目的字节DST置为13、比较两个带符号数,并根据比较结果目的字节置为1①SETL/SETNGEDST小于,目的字节DST置为1②SETNL/SETGEDST不小于,目的字节DST置为1③SETLE/SETNGDST

小于等于,目的字节DST置为1④SETNBE/SETGDST不小于等于,目的字节DST置为1兴拢诸扣剁斑波耀企撬绰踢每阀捎悲叔牵矛跑拖凝赔割底离惰乘完袍煽鬃第3章-5-条件转移第3章-5-条件转移423.条件设置指令2、比较两个无符号数,并根据比较结果目的字节4循环指令1)循环指令LOOP2)相等/为零循环指令LOOPE3)不相等/不为零循环指令LOOPNE4)CX为零转移指令JCXZCX←CX-1CX=0?循环体CX←循环次数YN说明:使用LOOP指令可代替两条指令:DECCXJNE短标号1).循环指令LOOP语句格式:LOOP短标号功能:(CX)-1≠0,则程序转移(循环);否则,顺序执行。粮损斌瘪穷著莹迟将蚁嫉拱慢步劲囱往剔肖寨枫痘菊休努铺意坏庇喀墟弥第3章-5-条件转移第3章-5-条件转移434循环指令1)循环指令LOOPCX←CX-1CX=0?2)相等/为零循环指令LOOPE语句格式:LOOPE/LOOPZ短标号功能:(CX)-1≠0且ZF=1,则程序转移(循环)否则,顺序执行。3)不相等/不为零循环指令LOOPNE语句格式:LOOPNE/LOOPNZ短标号功能:(CX)-1≠0,且ZF=0则程序转移(循环);否则,顺序执行。淌辐可暇蜂假产絮啡畏螺桑晌苫黍剿肛器掘邯礁化库锭臀悠指揣习货舷示第3章-5-条件转移第3章-5-条件转移442)相等/为零循环指令LOOPE语句格式:3)不相等/不为零4)CX为零转移指令JCXZ语句格式:JCXZ短标号功能:(CX)-1≠0,则程序转移(循环);否则,顺序执行。返回本节筐咎眶啪多哟疚生颊票左命孟党锹火屈显解孙兆辜决探爬欠胀妓酒遵瘟添第3章-5-条件转移第3章-5-条件转移454)CX为零转移指令JCXZ语句格式:JCXZ短标号循环指令-举例例3.67有一个首地址array的m字数组,试编写一个程序:求出数组的内容之和,并把结果存入total中.movcx,mmovax,0movsi,0

st-1:addax,array[si]addsi,2loopst-1movtotal,ax柄衙孜吹揭俱滨戎盏醚淳骇纪苟添谜傣品群在里指膝钟项桓停叔惕毖呼靡第3章-5-条件转移第3章-5-条件转移46循环指令-举例例3.67有一个首地址array的m字数组,循环指令-举例例3.68有一个串中有l个字符,存放在str存储区中.查找字符串中的空格,如果没找到,则转到not_found去执行.movcx,lmovsi,-1moval,20hnext:incsicmpax,str[si]loopnznext

jnznot_found…not_found:膘黔灸洲俭春健缓拟刘哦雪侯篷钙窖绞俘嘛啡役振耘库藐爸仑组淄右血瘤第3章-5-条件转移第3章-5-条件转移47循环指令-举例例3.68有一个串中有l个字符,存放在str5.子程序-段内直接调用指令:CALL调用RET返回由于子程序与调用程序可以在一个段中,也可以在不同一段中,因此着这两条指令的格式有:(1)CALL调用段内直接调用CALLDST操作:PUSHIPIP=(IP)+D16或EIP=((EIP)+D16)AND0000FFFFHPUSHEIP(32位)存储器XXXX…OPXXOPXXXXOPCS:IPSUBP-AD16+寄存器IP例:CALLSUBP-A舔卓蔑伤晋誊益措绰乍蹈昨森汇泅灼聂横腆浇助麓菜三舒幕亏锰舀寺坯胰第3章-5-条件转移第3章-5-条件转移485.子程序-段内直接调用指令:CALL调用5子程序-段内间接调用指令:CALL调用RET返回②段内间接调用CALLDST操作:PUSHIPIP←(EA)或EIP←(EA)AND0000FFFFHPUSHIP或PUSHEIP(32位)

段寄存器+寄存器EACS段寄存器+IP寄存器存储器XXXXXXXXXXXXOPXXXXOP例:CALL[BX+D16]只贷率扯佰幢详也啪别夸柏理熊俘危长归捷牡始洪薪狮感卸英案阂七伤保第3章-5-条件转移第3章-5-条件转移495子程序-段内间接调用指令:CALL调用②段内5子程序-段间直接远调用

CS1:IP1存储器XXCALLIP2CS2XX…OPXXXXOP例:CALLFARPTRPROGACS2:IP2PROGA栈

IP1CS1////////SS:SP③段间直接远调用CALLDST操作:PUSHCSPUSHIP

IP←DST指定的偏移地址CS←DST指定的段地址

*PUSHCS或PUSHEIP(32位)埂讯建痈芳案穿憨感齿解鄂矩铣盯袍迪秧持宿坪替节葛无涧织纫样益尖潮第3章-5-条件转移第3章-5-条件转移505子程序-段间直接远调用CS1:IP1存储器XXCALL5子程序-段间间接远调用指令:CALL调用RET返回

CS1:IP1存储器CALLXXXXOPXXXXIP2CS2…OPXXXXOP例:CALLFARPTR[BX+D16]CS2:IP2PROGA栈

IP1CS1////////SS:SP

DS段+EA

④段间间接远调用CALLDST操作:PUSHCS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论