《汇编第3章2.ppt》由会员分享,可在线阅读,更多相关《汇编第3章2.ppt(93页珍藏版)》请在三一办公上搜索。
1、1,8086指令系统(2),钨惑剔慑咎僵烁杭斧甜词琅沁刹误尘揭嫁羞子放肃尾艘鹅挚撩铱铬亥彼治汇编第3章2汇编第3章2,2,三、逻辑运算和移位类,逻辑运算移位操作,非循环移位循环移位,渗随枯碰克妮撰刑洗璃驹圭芋仓忿愉咋河峨另琼然涟狈焊针英茅所倚屈体汇编第3章2汇编第3章2,3,逻辑运算和移位指令,稽筛忆贞钩渊戴枚淡姨割郝辐佳牺颠篇血痪敷燃洲螺藏惹讥冬就毯谗郎备汇编第3章2汇编第3章2,4,指令类型,逻辑运算与,或,非,异或移位操作非循环移位,循环移位,哺蘑材诊拯仰屹釉义粤霜盟湍竣汉貌轰嵌郸亩峦吵凰全垦侧泥汽围衡昨青汇编第3章2汇编第3章2,5,一、逻辑运算,逻辑运算指令对操作数的要求大多与MOV
2、指令相同。“非”运算指令要求操作数不能是立即数;除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,旗所鸦件污迷怔间秧贱泰养票训狰观丑誊芦奎争肮霹舵莎碎疏巴骤具俩拆汇编第3章2汇编第3章2,6,1.“与”指令:,格式:AND OPRD1,OPRD2操作:两操作数相“与”,结果送目标地址。,挟贼题跌勤一侈栖鸦健炒咀区夏砸酌总嫩窖枢倾王量逊耪点符秦峡缄澡抱汇编第3章2汇编第3章2,7,“与”指令的应用,实现两操作数按位相与的运算AND BL,SI使目标操作数的某些位不变,某些位清零AND AL,0FH在操作数不变的情况下使CF和OF清零AND AX,AX,狂力惯逛懒伴沧寇豹情顾掷腋抒湾篷
3、也裔茅狞喳揪畏琅惧衫募蛆荧俘紫轴汇编第3章2汇编第3章2,8,“与”指令应用例,从地址为3F8H的端口中读入一个字节数,如果该数的bit1位为1,则可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。编写相应的程序段。,屋央鹿烃致线凌凑换存绝错社硷云蚀哪或缘票淑枯难捌适菱漾葛牛跺拄痴汇编第3章2汇编第3章2,9,“与”指令应用例,开 始,取待输出数的偏移地址,读入状态字,测试bit1位状态,Bit1=1?,取输入口地址,取输出口地址,输出一个字,N,Y,素顶梅扫跳驰潘滑亡端铸驹妒俭诧歌曙著菌郧新嘱邑绩停抓誊倾港鹰澡棒汇编第3章2汇编第3章2,10,“与”指令应用例,LEA
4、SI,DATA MOV DX,3F8HWATT:IN AL,DX AND AL,02H JZ WATT;ZF=1转移 MOV DX,38FH MOV AX,SI OUT DX,AX,炭肘妹坞卒授疤素捣钉寻并垢替豺盲建冈融敲翰产坐绥占葬赛庇胡路剩铜汇编第3章2汇编第3章2,11,2.“或”运算指令,格式:OR OPRD1,OPRD2操作:两操作数相“或”,结果送目标地址,初氛孕衫约傻睹把她服贝嗅溯贷独摆赣盐仗她糠很知一遗傲词音诚液窟坟汇编第3章2汇编第3章2,12,“或”指令的应用,实现两操作数相“或”的运算OR AX,DI使某些位不变,某些位置“1”OR CL,0FH在不改变操作数的情况下使O
5、F=CF=0OR AX,AX,海败挠嵌汲入詹特橡宠歼拈塌朗乔卿侧菌车卫须滨薛蒸匣糜侨毁母种诞甚汇编第3章2汇编第3章2,13,“或”指令的应用例,OR AL,AL JPE GOON OR AL,80H GOON:.,PF=1转移,腮灰瘤质奈赏浦合奎视邑黄摄凄佰挎虎疏姚甭虞六揩柏芒遣在剑甚凿郊留汇编第3章2汇编第3章2,14,“或”指令的应用,将一个二进制数9变为字符9,如何实现?,裔丽宏减良室盖待迸垫拆庸酞葫哟闷坛制港碾宗虑构币锄峪蹈唬席腐呐胺汇编第3章2汇编第3章2,15,3.“非”运算指令,格式:NOT OPRD操作:操作数按位取反再送回原地址注:指令中的操作数不能是立即数指令的执行对标志
6、位无影响例:NOT BYTE PTRBX,囚秃谚谜崇盅少折把示驭递跨琉撼皋懂贱监玻哮骂妈昨祭欺镁籽桐莹捷霍汇编第3章2汇编第3章2,16,4.“异或”运算指令,格式:XOR OPRD1,OPRD2操作:两操作数相“异或”,结果送目标地址例:XOR BL,80H XOR AX,AX,两操作数自身相异或,结果,沤就箭豢萝琵蔷粉我砒韶娥惰阜悬水芍话佬壤倍恶晓丈愿检绰蝴笛加惜耐汇编第3章2汇编第3章2,17,5.“测试”指令,格式:TEST OPRD1,OPRD2操作:执行“与”运算,但运算的结果不送回目标地址。应用:常用于测试某些位的状态,张剑保负猿悠辆脖虚秸属被季滨阀泣提郧肾矿保喻吗蓬颅獭望啸晶体
7、捉筹汇编第3章2汇编第3章2,18,例:,从地址为3F8H的端口中读入一个字节数,当该数的bit1,bit3,bit5位同时为1时,可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。编写相应的程序段。,辗苯弟叭订贩炙如竭姻绎潘室鸭馒哉临轧锈界突萤霓姓猴援用毛俗哨襄斩汇编第3章2汇编第3章2,19,源程序代码:,LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX MOV DX,38FH MOV AX,SI OUT DX,AX,AND AL,2AHCMP AL,2AHJNZ WATT,TEST AL,02HJZ WATT;ZF=1转移TEST AL,08
8、HJZ WATTTEST AL,20HJZ WATT,AND AL,2AHXOR AL,2AHJNZ WATT,盾忻炮蛰将蹲痔闸袒避瓣师措挤插症睫泽阉稗院嘘拂抖邵匝司钙昼虹坚琴汇编第3章2汇编第3章2,20,二、移位指令,非循环移位指令 循环移位指令,注:移动一位时由指令直接给出;移动两位及以上,则移位次数由CL指定。,唯蔑脱张劈过圆彝尉丁胀涸棋片停蓬赂秩肥邮穆壮付膨钦邻碱一轩虎枕市汇编第3章2汇编第3章2,21,1.非循环移位指令,逻辑左移算术左移逻辑右移算术右移,疗泥干豢厘米忙娇枫疟区妮酷雀扼勉涛戊腆僧猾坟交翔躯逊何孕芋挥校对汇编第3章2汇编第3章2,22,算术左移和逻辑左移,算术左移指令
9、:SAL OPRD,1 SAL OPRD,CL逻辑左移指令:SHL OPRD,1 SHL OPRD,CL,有符号数,无符号数,移动一位后,若CF与最高不相等,则OF=1;否则OF=0,晌簧碟豢冗琅滤倒痴蚜抗罚出选隔晤诉胡鼻迟喉骋懦蠢伐寺蔗嗣还蕉椿村汇编第3章2汇编第3章2,23,逻辑右移,格式:SHR OPRD,I SHR OPRD,CL,0,CF,无符号数的右移,移动一位后,若次高位与最高位不相等,则OF=1;否则OF=0,迂天烦羔路持哆皿舷寻非誉遵书豺谬棠生镁谍孝逾全港咸邻满盼虽谢潘蓉汇编第3章2汇编第3章2,24,逻辑右移例:,MOV AL,68HMOV CL,2SHR AL,CL,0,
10、CF,0 1 1 0 1 0,AL,0,0,0,0 0 1 1 0 1 0 0,AL,CF,0,0,0 0 0 1 1 0 1 0,AL,CF,0,0,移动1次,移动2次,动菇脓陡好嚏拄也扫壬惺饥裂冤饭径舜丧笋酥逻嚎翘哩莹炊朝箱讯遥定病汇编第3章2汇编第3章2,25,算术右移,格式:SAR OPRD,I SAR OPRD,CL,有符号数的右移,CF,惟译币客抉讲某框踏渍硫盆循洪民撩烤昭骨歉阐嘿攘淄晋窍拢遏偏睁痕滋汇编第3章2汇编第3章2,26,非循环移位指令的应用,左移可实现乘法运算右移可实现除法运算,傈铣候杉骆耐萨断惰猎机月顶窄锣兹族奋崎固技变尼卉炙脱飞柑采贝韵央汇编第3章2汇编第3章2,2
11、7,2.循环移位指令,不带进位位的循环移位带进位位的循环移位,左移 ROL右移 ROR,左移 RCL右移 RCR,指令格式、对操作数的要求与非循环移位指令相同,龟印挥冉睬油亡极羽蚀备恋乒责谦几蛰菊离忙疽否撬牺瓢牲葵凝睫粒设铁汇编第3章2汇编第3章2,28,不带进位位的循环移位,CF,CF,齿末歧酞矩倚藏色明簧铝隐得圭剿霖卸矽蔗另略汝逮枣袄陪没面嫌植柠西汇编第3章2汇编第3章2,29,带进位位的循环移位,CF,CF,豆损嗅缝锰嘱桐赢孪獭藻从亭镀透恍厢绅姬岳舵涪钾邹熟停圭叭懂搓烹卜汇编第3章2汇编第3章2,30,循环移位指令的应用,用于对某些位状态的测试;高位部分和低位部分的交换;与非循环移位指令
12、一起组成32位或更长字长数的移位。,短处陇涯桥冶末府蓖枉暮亥舜税汁忻数疡鸣观桌琉语驭正庭碑王阀抗竭潦汇编第3章2汇编第3章2,31,程序例,MOV SI,1000H MOV DI,3000H MOV CX,4BBB:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI MOV AL,BL,PUSH CXMOV CL,4SHR AL,CLOR AL,30HMOV DI,ALINC DIINC SIPOP CXDEC CXJNZ BBBHLT,程序功能?,演疙剁聂堰疏掌竭殷茫柏姨质孤敌姚秤吃竟劝暴议谢娱寿令涡焊舞忆寞卫汇编第3章2汇编第
13、3章2,32,程序功能,将1000H开始存放的四个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。,12H,34H,56H,78H,1000H,3000H,胸势奸假嚎昨酮梳铺桃玻钾猴腺丽鼠揭执任麦火剖穆倪嘲钉炼魂户滴走妨汇编第3章2汇编第3章2,33,例:,计算2658+3619=?结果存放在SUM单元说明:被加数和加数的每一位都以ASCII码形式存放在内存中,低位在前,高位在后。,36H,32H,39H,31H,STRING1,STRING2,38H,35H,36H,33H,数据段,SUM,.,.,黑瑚涵盅呻芜椽备汽嘘猪撩边秽读潭馒嗣剃渺狡鳖改腊源酸国匪扶淤壹窘汇编第3章2汇编
14、第3章2,34,代码1,LEA SI,STRING1;取偏移地址 LEA DI,STRING2 LEA BX,SUM MOV CH,4;设循环次数 CLC;使CF清零A:AND BYTE PTRSI,0FH;将ASCII转换为二进制数 AND BYTE PTRDI,0FH MOV AL,SI;两字节数求和 ADC AL,DI,吃覆肋抨漫略馅哆宫矽剩孜味讽吁眨卞瓦贩透琐付蜜手偷炬徘丧裴敛落幼汇编第3章2汇编第3章2,35,代码1(续),MOV DL,AL AND AL,0FHOR AL,30HMOV BX,ALINC BXMOV AL,DLMOV CL,4SHR AL,CL,OR AL,30HM
15、OV BX,ALINC SIINC DIINC BXDEC CH JNZ AHLT,踩磨蚁谩拘虹虚艾期册糯密斥次姓消避阀篡谈吐兢遏归式神食别镇职傀讽汇编第3章2汇编第3章2,36,代码2,LEA SI,STRING1 LEA DI,STRING2 LEA BX,SUM MOV CX,4 CLCNEXT:MOV AL,SI ADC AL,DI AAA MOV BX,AL,INC SIINC DIINC BXDEC CXJNZ NEXTHLT,探瘫蛆傍皂植阉贸铝邢征伙抢蹈试义对拣顶峰尖逐柜姿胯摔枫与绑歉戌郝汇编第3章2汇编第3章2,37,串操作指令,霓森稗漓膏哟谆都魏社胳守遁搂享乖尤僳型村垂吗新炙
16、育珍活骡抓琢妨捌汇编第3章2汇编第3章2,38,串操作指令说明,针对数据块或字符串的操作;可实现存储器到存储器的数据传送;待操作的数据串称为源串,目标地址称为目标串。,俏难姑湿宫债腥讹惠裹跨家葫是泣唤铡呵狡兄架绪纷酬杂肘撂鳖洱航谈藕汇编第3章2汇编第3章2,39,串操作指令的特点,源串一般存放在数据段,偏移地址由SI指定。允许段重设;目标串必须在附加段,偏移地址由DI指定;指令自动修改地址指针,修改方向由DF决定。DF=0 DF=1数据块长度值由CX指定可增加自动重复前缀以实现自动修改CX内容。,增地址方向;,减地址方向;,尸浅邓波邦勾买橱极母哇联翰杂军迂实吓慰泡畅臂爪忌壮扼辐趣讼整乓踏汇编第
17、3章2汇编第3章2,40,重复前缀,无条件重复REP条件重复REPE 相等重复REPZ 为零重复REPNE 不相等重复REPNZ 不为零重复,CX0 ZF=1,CX0 ZF=0,CX0 重复,蛰欧斥二球掇琼床蚁飘小厘孺毯恐凑峻事末郊脖豢销馏跨长自郭鬼攘罪娶汇编第3章2汇编第3章2,41,串操作指令流程,取源串地址,取目标串地址,设串长度,传送一个字节或字,修改地址指针,修改串长度值,传送完否?,N,Y,设操作方向,拔茶侯年郡桩服傈愁斧惮兑流杆综烂确极苦薛橇绚粉硼恤湛银阴接嚼去湘汇编第3章2汇编第3章2,42,串操作指令,串传送 MOVS串比较 CMPS串扫描 SCAS串装入 LODS串送存 S
18、TOS,拓悔电书蹈耻台诌碱榆篓顷五粹漫急苹潜曙洼晨愉秘拱饮卑作胚把亚牲籍汇编第3章2汇编第3章2,43,1.串传送指令,格式:MOVS OPRD1,OPRD2 MOVSB MOVSW串传送指令常与无条件重复前缀连用,主采瞄姿撤漂夫槐铭研之焚亡动捉矮版巫彭施种茬琅卯惯葬奠讽吞俗瑞瞄汇编第3章2汇编第3章2,44,串传送指令,对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。,们狱苍壤习枉擅史栽兴忙详湛副蓖窄箩挣诱氧扒蹭瑚蓝正测摧派全辨绞冀汇编第3章2汇编第3章2,45,串传送指令例,用串传送指令实现200个字节数据的传送:LEA SI,MEM1 LEA
19、DI,MEM2 MOV CX,200 CLD REP MOVSB HLT,顾邓炽舍绘牌踩防粒钥揽执汽薛穿毛辰柠海惭胺榔弘途宦底寨决螟迎迂瞥汇编第3章2汇编第3章2,46,2.串比较指令,格式:CMPS OPRD1,OPRD2 CMPSB CMPSW串比较指令常与条件重复前缀连用,指令的执 行不改变操作数,仅影响标志位。前缀的操作对标志位不影响,股艰远橙智及罩骤秆翔睁拂遮每调缮蚀额慢昆哄妊页昨汁月享估蛊屑丸互汇编第3章2汇编第3章2,47,串比较指令例,测试200个字节数据是否传送正确:,LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB TEST CX
20、,00FFH,JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT,误匿拉坏存玫歼叉芍君缀神猪迁冬佳琳忘斯灭意功迹弊建时澜参馆唾拼昌汇编第3章2汇编第3章2,48,3.串扫描指令,格式:SCAS OPRD SCASB SCASW执行与CMPS指令相似的操作,只是这里的源 操作数是AX或AL,目 标操作数,咙乡元泵残导敝霹稀惟颅喘墓庭孽惠晒闪够识奔歹惰锣挫性蔓慕肄惯峻冶汇编第3章2汇编第3章2,49,串扫描指令的应用,常用于在指定存储区域中寻找某个关键字。,赶砷粘萄揭脖贝宙膝浙虫丰屠伦饼遥流肃瘁亡臣给恿恨搜揖伯惩贱壁态妹汇编第3章2汇编第3章2,50,串装入指令,
21、格式:LODS OPRD LODSB LODSW操作:对字节:AL对 字:AX,源操作数,DS:SI,DS:SI,胜瞳偶全激入殴信岔友丛谆汛景虱伏酗吼券灯予阿沤栅盾捧果公彩豢运敛汇编第3章2汇编第3章2,51,4.串装入指令,用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。LODS指令一般不加重复前缀。,演走柞硝诵嚷披我焕埃羌宛钳习屿盟柬遏级背逸稿紧篇淑弊寥日迎答囤绑汇编第3章2汇编第3章2,52,5.串存储指令,格式:STOS OPRD STOSB STOSW操作:对字节:AL对 字:AX,目 标操作数,ES:DI,ES:DI,卑卞萧甫豁儿常拟轻铆熙棒港妆闯狈壤吮佯茧琵悔恨抿
22、扇何歹喘蛋陌婴摘汇编第3章2汇编第3章2,53,串存储指令例 内存某个区域清零,设计思想:,区域首地址送ES:DI,串长度送CX,置方向标志DF,0送累加器AL,执行串送存指令,p132,哮界伎益俱顷惹烧惮赔赵翠钢贬籍有背芽藉沤埔慈焕逆披伴酶斗汹盆槐赖汇编第3章2汇编第3章2,54,程序控制指令,转移指令循环控制过程调用中断控制,晾甲仍眉鄂声筋响耍鹅右骇政设面喷恭捞迸蚜妮婆芬景翰税反镊卜哨凿仙汇编第3章2汇编第3章2,55,一、转移指令,无条件转移指令 无条件转移到目标地址,执行新的指令有条件转移指令 在具备一定条件的情况下转移到目标地址,通过修改指令的偏移地址或段地址及偏移地址实现程序的转移
23、,些腿墙盖欠灯菱吏被堵船瓣必匿鸽芭呆却谦抖挖贩撮犀份挞哎翅阐傀行戈汇编第3章2汇编第3章2,56,1.无条件转移指令,格式:JMP OPRD,目标地址,与JMP在同一代码段,与JMP不在同一代码段,原则上可实现在整个内存空间的转移,怪彬救办曰摊措榜铅我潘幼胰球仲搅哮逸厘槽维角侈找毁损学蛾颂谤旬丫汇编第3章2汇编第3章2,57,无条件段内转移,转移的目标地址在当前代码段内,段地址不改变。即:目标地址是16位偏移地址。,指令中直接给出目标地址,由指令中的寄存器或存储器操作数指出目标地址,段内直接转移,段内间接转移,圭辉车践跌妊躁使夏耪楚晶削帝贪婪狼澳梅丙介营霖渭辑啡洲谭看伟翅耕汇编第3章2汇编第3
24、章2,58,段内直接转移,段内直接转移转移的目标地址由指令直接给出格式:JMP Label,近地址标号,呐葱位卧街妇垂纱碉甲帧虹涕缀皿舆砒扦霉泞据撑僚惮普案据淄戳晓晃蔡汇编第3章2汇编第3章2,59,段内直接转移示图,JMP,Label,代码段,位移量,下一条要执行指令的偏移地址=当前IP+位移量,荣霹私侨爱烹猾届柯嫂泰绵厩像轿烈弄雷池缎佳藉卡鹊费止棱耙打坪配逞汇编第3章2汇编第3章2,60,段内间接转移,段内间接转移转移的目标地址存放在某个16位寄存器或存储器 的某两个单元中例:JMP BX若:BX=1200H则:转移的目标地址=1200H,JMP,代码段,1200H,MOV,嗽伪寿挑技缚贼
25、伎沈跳臆货摘窄掠腆芹挑鳃蔓循炸吝贫蓖缴萎铅后怪素黎汇编第3章2汇编第3章2,61,段内间接转移例,JMP WORD PTRBX 设:BX=1200H,JMP,代码段,数据段,BX=1200,XXH,XXH,IP,指令码,挞共碎天翻洗伍患姓暑挪瘩初碌棒渍另蹦讶派袭埠造瘟呛蔓哺孜悠措恍暇汇编第3章2汇编第3章2,62,无条件段间转移,转移的目标地址不在当前代码段内。目标地址为32位,包括段地址和偏移地址。,指令中直接给出目标地址,由指令中的32位存储器操作数指出目标地址,段间直接转移,段间间接转移,彰静章琉艾稳赐么莽锹韵匿熄助太雄孩洛荤趋恶雁兼蚀阻妈葡朗演莉牢呆汇编第3章2汇编第3章2,63,段间
26、直接转移,段内直接转移转移的目标地址由指令直接给出格式:JMP FAR Label,远地址标号,抢徒飞提犁冲舜潞拟楚坊瓷陛孺挑桓滩末蘸辟芜阿柴睛奎饼萌萍附河悬忠汇编第3章2汇编第3章2,64,段间直接转移示图,JMP,Label,代码段1,Label与JMP之间的位移量,代码段2,XXH,XXH,XXH,XXH,IP,CS,恫晰王屡倍迸叼栈惮社愧挪蜒蒙兼导剧村表轻楔诊关喀骂时窑迎首刀坤布汇编第3章2汇编第3章2,65,段间间接转移,段内间接寻址转移的目标地址由指令中的32位操作数给出 例:JMP DWORD PTRBX,XXH,XXH,XXH,XXH,BX,IP,CS,JMP,指令码,代码段1
27、,代码段2,数据段,吗靶棠礁上褂憨勘恢芥呀渭鹊役把想讼拼疡劲呻浸筏杯摘悍啥睡充酉匿弓汇编第3章2汇编第3章2,66,2.条件转移指令,在满足一定条件下,程序转移到目标地址继续执行条件转移指令均为段内短转移,即转移 范围为:-128-+127,p136,耸谚疟饺缚触骤醋锋琐赫端衅船竹啮懦肩泛晴物苯摧房染奸绷迎号汁贝侣汇编第3章2汇编第3章2,67,条件转移指令的应用,几种条件转移指令的应用,滓孰读觅丫衬洱旁夺内龟舱朵妒昂鲍枉淀扰驴水虱橱皮钦泊遗统末商罚钦汇编第3章2汇编第3章2,68,转移指令例,统计内存数据段中以TABLE为首地址的100个8位符号数中正数、负数和零元数的个数。,嘲伪鹰爪仕物耐
28、驻唤赃幌仓祭脂灾凰靡炭刺扩微旦绩我茎戈锌棺床艺绸胆汇编第3章2汇编第3章2,69,转移指令例(流程图),将存放各元素个数的单元清零,取首地址设串长度,取一个字节数,正数个数加1,零元素加1,为负?,为零?,负数个数加1,N,Y,N,Y,p144,毒近无诊宇庸钧憾鞘误狙砂滑各丘蚌鹰正完毋茨育咙府暂踪彻蛙吮溯痢亥汇编第3章2汇编第3章2,70,二、循环控制指令,循环范围:以当前IP为中心的-128+127范围内循环。循环次数由CX寄存器指定。循环指令:,LOOP*LOOPZ*LOOPNZ,无条件循环指令,条件循环指令,谐瞄旅亏爹等篷桨鸽妮沛哟急蚂继讨窟明肚臃掌醛柑侨标愿遂效蓟潞幼柔汇编第3章2汇编
29、第3章2,71,无条件循环指令,格式:LOOP LABEL循环条件:CX 0操作:DEC CX JNZ 符号地址,江氮扮藻眠伐薯昆犁昨圣碴龋愚藉尼旺坎钦付渔呼幻希孤赁拇够裁谬夜胯汇编第3章2汇编第3章2,72,条件循环指令,格式:LOOPZ LABEL LOOPE LABEL循环条件:CX 0 ZF=1,格式:LOOPNZ LABEL LOOPNE LABEL循环条件:CX 0 ZF=0,笛笺恋埋喷镑伪梅跪例或芬酞炊驳拒狙完报洽载寸房聂庸汀雅眉诫傲扯锌汇编第3章2汇编第3章2,73,三、过程调用和返回,用于调用一个子过程;子过程由程序员预先设计 并装入内存 子过程执行结束后要返回 原调用处,调
30、用程序,断点,入口地址,入口地址,断点地址,子程序,冲澳坛箍批绽斥侄瞪窒雏量隐程嗣洪拜拖啤焦抢肾持阐弱楚沧腑烩佩搓莎汇编第3章2汇编第3章2,74,调用指令的执行过程,保护断点;将调用指令的下一条指令的地址(断点)压入堆栈获取子过程的入口地址;子过程第1条指令的偏移地址执行子过程,含相应参数的保存及恢复;恢复断点,返回原程序。将断点偏移地址由堆栈弹出,吮际仗虱炽早佳辜宅央汉躺邻阁泌奠讼各冠隘果粤侍嘘露稀振尤卖袄宏侍汇编第3章2汇编第3章2,75,过程调用,段内调用段间调用,段内直接调用段内间接调用,段间直接调用段间间接调用,颗乒菱钒磺翅紊侥欠届寐消彼鹿卜脏详倦胃虏仓躺茧碰鳞务印绚秦更锅长汇编第
31、3章2汇编第3章2,76,1.段内调用,被调用程序与调用程序在同一代码段调用前只需保护断点的偏移地址格式:CALL NEAR PROC执行过程:,近过程名,代码段1,调用程序,被调用程序,代码段1,将断点的偏移地址压入堆栈 根据过程名找子程序入口,纲六犁矫迢哩拽蘑札工婪邦笛魂末浦撮绵绿谐梳壮竿劣洽崖负育芹絮略掩汇编第3章2汇编第3章2,77,段内调用例,(1)CALL TIMRE(2)CALL WORD PTRSI,直接调用,间接调用,44H,33H,CALL,代码段,数据段,设:SI=1200H CS=6000H,1200H,执行第(2)条指令后:,6000H,CS=,3344H,IP=,掘
32、值丘潘筏挎喉冗茬沸捍撅友仇述酮涯牙亩骤旅栋赢丸碍唁纠疆沫涧外虾汇编第3章2汇编第3章2,78,2.段间调用,子过程与原调用程序不在同一代码段先将断点的CS压栈,再压入IP。,调用前需保护断点的段基地址和偏移地址,蓟芋趾娥仙滨背宙侠蜒并脱便衙郁伴契邑吼绣铸狰凰唇敦蝗一芳拍压领挣汇编第3章2汇编第3章2,79,段间调用例,格式:CALL FAR PROC格式例:CALL FAR TIMRECALL DWORD PTRSI,XXH,XXH,CALL,代码段,数据段,SI,XXH,XXH,CS,IP,篮辑矫螟奴譬稠缸怯肪蓉约酥豺坝话保模袋朱戳渔太蜂豆术溶伙剑灵价正汇编第3章2汇编第3章2,80,3.返
33、回指令,功能:从堆栈中弹出断点地址,返回原程序格式:RETRET指令一般位于子程序的最后。,信宝汲论婆腹滩谱究替遗迫瓦拴懦梦栗绽抄利肖酱粒蛋埋魁猿慈雄驾拿衬汇编第3章2汇编第3章2,81,四、中断指令,中断中断源中断的类型中断指令引起CPU产生一次中断的指令,幌营奔诺惹驾燎中单训仕桃况浦话慕王诣抗亮臭靠厨皱恃揉勾酿下汰望运汇编第3章2汇编第3章2,82,中断与过程调用:,中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好;响应中断请求不仅要保护断点地址,还要保护 FLAGS内容;调用指令在指令中直接给出子程序入口地址,中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中。,
34、偏差痪笨瘁凭久吸仙婪旬绎褥侣揉铀际险俐卯匪痈恢勃搐棚救缮沟赶裔蜕汇编第3章2汇编第3章2,83,1.中断指令,格式:INT n说明:n4,中断类型码n=0 255,n 4,XXH,XXH,XXH,XXH,入口的偏移地址,入口的段地址,存放中断服务子程序入口地址的单元的偏移地址,代码段,数据段,该单元在数据段,段地址=DS,凿鸯憾姆早诊猜奏叛舌闲堑闲乃需辽怔尖房远警舶夯就少逮腿瞧帝扮胎腊汇编第3章2汇编第3章2,84,中断指令的执行过程,将FLAGS压入堆栈;将INT指令的下一条指令的CS、IP压栈;由n4得到存放中断向量的地址;将中断向量(中断服务程序入口地址)送CS和IP寄存器;转入中断服务
35、程序。,裕杂挪呆任甸材了疹雨祁惨浚芝呕全著璃叭肺楞叉茬稳院扶伯缨帜兑甫纠汇编第3章2汇编第3章2,85,中断指令的执行过程,n4,22H,11H,00H,67H,IP,CS,68122H,MOV,代码段,数据段,堆栈段,SP,FLAGSH,FLAGSL,IPH,CSL,CSH,IPL,SP,SP,SP,溪镑谴齐展材观扭吐拐郸臭辛疾淆恍退脸骗镊苗营竟粉时涡掳兼矮捶用胞汇编第3章2汇编第3章2,86,中断指令例,执行程序段:CS IP 6200H:0110H INT 21H6200H:0112H MOV AX,BX,12H,01H,00H,62H,SP=1200,FLAGSL,FLAGSH,SP=
36、11FA,执行INT指令后,堆栈段,英挟彰烈扇攫卫螺涸倒斥差甭摧恨毫惧谣折略堰晦韦价匝亨摘共铸池龟狐汇编第3章2汇编第3章2,87,中断指令例,执行INT 21H指令后 IP=21H4 CS=(21H4)+2,0084H,23H,11H,00H,20H,IP,CS,数据段,代码段,XX,21123H,中断服务子程序,盯氓虑疼沧郎榔薄残嚏孔拦冕锄朋鸡澜苗殴缎休嚷遂沃诈沛惭亲确脐界巢汇编第3章2汇编第3章2,88,2.溢出中断指令,格式:INTO 若OF=1,则启动一个类型为4的中断过程,给出一个出错标志,如果OF=0,不做任何操作。INTO指令通常安排在有符号数加减运算指令之后。,相当于,INT
37、 4,涌宙节痘安银禁熬殃朽佐漳专赌饼羔澎糜混掖壳爬垦矩烩退撩幅恐喂码梗汇编第3章2汇编第3章2,89,3.中断返回指令,格式:IRET中断服务程序的最后一条指令,负责,恢复断点恢复标志寄存器内容,毫鲍约蚂降真爪漆孕吧秸尊迢到棠鼎魄忱陷瘦涉筐岂窃黍绎瓦毅经俐动滁汇编第3章2汇编第3章2,90,六、处理器控制指令,对标志位的操作与外部设备的同步,说明见p143表,斌分侄院衙腺懂拣假娠睦紧颇踪惯猛缮镶胜鞘重琢腋糯兄嗽殴落沤柏购辈汇编第3章2汇编第3章2,91,本章课外自学内容:,BCD码调整指令远地址指针指令LDS,LES条件循环指令LOOPZ,LOOPNZPentium新增指令,爵撕揽渭奉挤烛尤商媒蹦钎莆快畏陵熏奔穴往疗桌踊沾镜炙赶奎嫁跳整霹汇编第3章2汇编第3章2,92,结束语:,掌握:指令的格式及意义;指令对操作数的要求及对标志位的影响;指令的应用。,荆桶召糜疮输湾汕蜘柄蚤尹庶瘤岿配来煎烈窃忌芳摊峭候躇愧秦堕柠吨挡汇编第3章2汇编第3章2,93,第3章作业,作业请从服务器上下载本章书后全部题目均可作为思考题,谢谢大家!,妆坑挛挨遮蛔磊咨讨沉规共日跺必拓断酱殿挫虽棚驰砰墙捧条戏粘睁蓟拙汇编第3章2汇编第3章2,
链接地址:https://www.31ppt.com/p-5141185.html