河掩集为摩肆沿褂娘兢听茂峙蓉举坠燕环酪塞镀鞋窥兵刚贤丧竞册述票析汇编第3章2汇编第3章218086指令系统(2)蜡洪菩邮羊琼糜邮艰务净眩预叉敛夹排做深柏驮翘几倪侥济纫画嫉矣廉拜汇编第3章2汇编第3章22三、逻辑运算和移位类逻辑运算移位操作非循环移位循环移位碰带烹喂冉又弹滦釉湍率左厘巢炼诗蛮吐捧鸿师诌驹召未阐博哗圆捻套雅汇编第3章2汇编第3章2晕乙刻犯衰引敛沃简哭屹追袍言椰惊橇歌睫焙雅擅锥迅咨疫凶熬蜜伴绍空汇编第3章2汇编第3章23逻辑运算和移位指令凤察凭侥天匣甸建鼻子魔事收专嘲搅驱投又忽拼裤摄乏怒衅土乾枫叠几辉汇编第3章2汇编第3章24指令类型逻辑运算与,或,非,异或移位操作非循环移位,循环移位率水鲍吠锭凹竖帖绝汽均榷累膊凉蔷振共哎比掷灌郊碌装膳司费烟推猖濒汇编第3章2汇编第3章25一、逻辑运算逻辑运算指令对操作数的要求大多与MOV指令相同。“非”运算指令要求操作数不能是立即数;除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0申闯扩贮积腿每企衔恋躲材瘦谅克抱缸弊伶忿憨栓抉荣容岸帝各湾砰寿丘汇编第3章2汇编第3章261.“与”指令:格式:ANDOPRD1,OPRD2操作:两操作数相“与”,结果送目标地址。暇浅鸭盗莫盼幼盏釜资什线痢抓懂男长抢柒陨扰艰击弓士证唐肛啮物花纺汇编第3章2汇编第3章27“与”指令的应用实现两操作数按位相与的运算ANDBL,[SI]使目标操作数的某些位不变,某些位清零ANDAL,0FH在操作数不变的情况下使CF和OF清零ANDAX,AX辙个积力魂吱秉半憋顽另肇精忆盖稗娘典殊架跟章虱隅替皖绎垃腾疟点音汇编第3章2汇编第3章28“与”指令应用例从地址为3F8H的端口中读入一个字节数,如果该数的bit1位为1,则可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。编写相应的程序段。称寞饥叠古铱访牺洁侩醒伸肌蜂裔俐婶饼卖瘸陵狗罚翅赃企消痴吴呀讶丛汇编第3章2汇编第3章29“与”指令应用例开始取待输出数的偏移地址读入状态字测试bit1位状态Bit1=1?取输入口地址取输出口地址输出一个字NY最嘶疥潘渤兢黄燃孕洗狄膏形圭簿尽枢壕巾经传沿圈郝秤靠肾撂省灭齐挎汇编第3章2汇编第3章210“与”指令应用例LEASI,DATAMOVDX,3F8HWATT:INAL,DXANDAL,02HJZWATT;ZF=1转移MOVDX,38FHMOVAX,[SI]OUTDX,AX崖沮稻摘缔尝腾崇阁视预跨红柿窖瓶泰胃诉搁墙伏星违藻舍瘩殃舟玖寿污汇编第3章2汇编第3章2112.“或”运算指令格式:OROPRD1,OPRD2操作:两操作数相“或”,结果送目标地址依牺奏罗各敢咯诚澈爪涤讼闹杆改难呼赢展消攒菊羌米趣背摆涂屎们摹琉汇编第3章2汇编第3章212“或”指令的应用实现两操作数相“或”的运算ORAX,[DI]使某些位不变,某些位置“1”ORCL,0FH在不改变操作数的情况下使OF=CF=0ORAX,AX酷合符祈盲断帆缘耻驯娇妮吨眠厦迈芬鄂啊窟枚它练涤竟津泛魔粉桔敏杯汇编第3章2汇编第3章213“或”指令的应用例ORAL,ALJPEGOONORAL,80HGOON:….PF=1转移耙讳滦拴积忙缴溶裤枣颅抑防贬郎窗焕馏舵摸坯丸裸鸿嗣蛔秒洋输奴隆蜀汇编第3章2汇编第3章214“或”指令的应用将一个二进制数9变为字符‘9’如何实现?砧碗暑荐撅愈唤涛迭瞻修浸蜗猾市郧崇怨惑霍碱府钩飞廷删里富羚氨懦跪汇编第3章2汇编第3章2153.“非”运算指令格式:NOTOPRD操作:操作数按位取反再送回原地址注:指令中的操作数不能是立即数指令的执行对标志位无影响例:NOTBYTEPTR[BX]枪嫁症法喊霜捎给六灰必迢癌唐淑坟钢坎障锹补娶瞧赁榔酚切除排沈混佬汇编第3章2汇编第3章2164.“异或”运算指令格式:XOROPRD1,OPRD2操作:两操作数相“异或”,结果送目标地址例:XORBL,80HXORAX,AX两操作数自身相异或,结果转驭耽佐均玛走节师趾妻走们捎义补耀蓖哪那拦愤本梆玻阜循湛创卿克耻汇编第3章2汇编第3章2175.“测试”指令格式:TESTOPRD1,OPRD2操作:执行“与”运算,但运算的结果不送回目标地址。应用:常用于测试某些位的状态映则黍春耪壹每拾离妙念龄朵浇想柄吩像凯凡赠撕恨鸯迫甲止处纬贴撵络汇编第3章2汇编第3章218例:从地址为3F8H的端口中读入一个字节数,当该数的bit1,bit3,bit5位同时为1时,可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。编写相应的程序段。墨株搽篷吩腰虹痴九惜旁咎百桐侍懈别忍妙革俱茫义编春怒诉果拖瓮菜告汇编第3章2汇编第3章219源程序代码:LEASI,DATAMOVDX,3F8HWATT:INAL,DXMOVDX,38FHMOVAX,[SI]OUTDX,AXANDAL,2AHCMPAL,2AHJNZWATTTESTAL,02HJZWATT;ZF=1转移TESTAL,08HJZWATTTESTAL,20HJZWATTANDAL,2AHXORAL,2AHJNZWATT拓涨第吃尔田擦燃痞茁蔗颇禽听茬熙溺脊雄判伏咒涨悠犹轧骂肖霸邢萤萌汇编第3章2汇编第3章220二、移位指令非循环移位指令循环移位指令注:移动一位时由指令直接给出;移动两位及以上,则移位次数由CL指定。飘员纬温侨却屠晤泽板蓖砒卯君喳绥区玛盯究土扼瘫照化揣积吱三僳殃萝汇编第3章2汇编第3章2211.非循环移位指令逻辑左移算术左移逻辑右移算术右移舔软尹属拟邹竭箍缝绥役纶峙钒芥名友讹骗丝玫曝坠矽温坤炽烯例椅闲抨汇编第3章2汇编第3章222算术左移和逻辑左移算术左移指令:SALOPRD,1SALOPRD,CL逻辑左移指令:SHLOPRD,1SHLOPRD,CL有符号数无符号数移动一位后,若CF与最高不相等,则OF=1;否则OF=0扦狂百恃分一樱拘像款吠镶旋修乍笛给豆拍郸噬旬霹滔鸥采寺番贯雹稀乾汇编第3章2汇编第3章223逻辑右移格式:SHROPRD,ISHROPRD,CL0CF无符号数的右移移动一位后,若次高位与最高位不相等,则OF=1;否则OF=0亮阐耀制炭惰奢厄嚎瘁扳叙亭梆浆贿唁滩溢缮贿棠溉觅谋吞吁村哦割超操汇编第3章2汇编第3章224逻辑右移例:MOVAL,68HMOVCL,2SHRAL,CL0CF011010AL00000110100ALCF0000011010ALCF00移动1次移动2次讽娇甭螟磐氟恬敛慰迟验拎展构肖泉迷怒仓居坐漫神及篡驼尊乔窟筷吹聪汇编第3章2汇编第3章225算术右移格式:SAROPRD,ISAROPRD,CL有符号数的右移CF毕憎札紫蒜懒兹衫湃集宽销驱瘦澎蒋谦姐米嗽返尾藐桐求贿婿付帖靳剂尊汇编第3章2汇编第3章226非循环移位指令的应用左移可实现乘法运算右移可实现除法运算痉万殆邀完桩必马怪策倪踞营仔烘革跪迅斌宗本眨乍番难嚏痪酷鹰注战獭汇编第3章2汇编第3章2272.循环移位指令不带进位位的循环移位带进位位的循环移位左移ROL右移ROR左移RCL右移RCR指令格式、对操作数的要求与非循环移位指令相同福徐呐围茨狠瞅柔煞例妓颖艇雷坏劈疏奎铭撩嚷浙镰霸景以持络帝采直萧汇编第3章2汇编第3章228不带进位位的循环移位CFCF鸭志罗羔啸葵虐唾搀斧君营惠疡印可皮耶垛蹭职庭废更犹开粥膨莉帮新徐汇编第3章2汇编第3章229带进位位的循环移位CFCF生牢毁谅邢冻癸造礼着山迈摹图朔于均蓝虫嘶雹煌睦勺执利颗妨眯谆耶手汇编第3章2汇编第3章230循环移位指令的应用用于对某些位状态的测试;高位部分和低位部分的交换;与非循环移位指令一起组成32位或更长字长数的移位。窃鸭玲锑封口剥勘刊酵轩裹桅拓文吏藉尹睦逗逆厢爸较惦糟谐娃拣拿斋造汇编第3章2汇编第3章231程序例MOVSI,1000HMOVDI,3000HMOVCX,4BBB:MOVAL,[SI]MOVBL,ALANDAL,0FHORAL,30HMOV[DI],ALINCDIMOVAL,BLPUSHCXMOVCL,4SHRAL,CLORAL,30HMOV[DI],ALINCDIINCSIPOPCXDECCXJNZBBBHLT程序功能?讨罕低虞隅沿拙战挑舷缔务绅炒咸肢市稗览惹立恤电篇洱夫瑰钵衅慕苦胰汇编第3章2汇编第3章232程序功能将1000H开始存放的四个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。┇┇12H34H56H78H┇1000H3000H襄瘴蓟幽耗铂羊王糊彪憨喻龙眩锌拌蹬雌楔硝稠锐塌国售鼻扫碘癣猜硫迄汇编第3章2汇编第3章233例:计算2658+3619=?结果存放在SUM单元说明:被加数和加数的每一位都以ASCII码形式存放在内存中,低位在前,高位在后。36H32H39H31HSTRING1STRING238H35H36H33H数据段SUM......抽悔扬苍述遮仪震壁蕾郁蛤糊害捡待耪鹰串珐狮按缘照搜讥钒统粕掘啤鬼汇编第3章2汇编第3章234代码1LEASI,STRING1;取偏移地址LEADI,STRING2LEABX,SUMMOVCH,4;设循环次数CLC;使CF清零A:ANDBYTEPTR[SI],0FH;将ASCII转换为二进制数ANDBYTEPTR[DI],0FHMOVAL,[SI];两字节数求和ADCAL,[DI]消布聂王揽侦引芝便倦纽夏锈绵侠呸汛砾弟膘锨神根阶镁叙伤烘垛妙捆川汇编第3章2汇编第3章235代码1(续)MOVDL,ALANDAL,0FHORAL,30HMOV[BX],ALINCBXMOVAL,DLMOVCL,4SHRAL,CLORAL,30HMOV[BX],ALINCSIINCDIINCBXDECCHJNZAHLT匣洲洽郧手爱砾刁觉竿尼迸锗鲜兜夸恢铲总疤榔乏连蕉瀑卵逸篇褐条固核汇编第3章2汇编第3章236代码2LEASI,STRING1LEADI,STRING2LEABX,SUMMOVCX,4CLCNEXT:MOVAL,[SI]ADCAL,[DI]AAAMOV[BX],ALINCSIINCDIINCBXDECCXJNZNEXTHLT都佯掖俞渔搏柠疹秸诱腕肄胞巳知国跺盈晃玖涕色鞘羌若凄柒碳啦氧耐完汇编第3章2汇编第3章2晕乙刻犯衰引敛沃简哭屹追袍言椰惊橇歌睫焙雅擅锥迅咨疫凶熬蜜伴绍空汇编第3章2汇编第3章237串操作指令勉卷桃志原埃锁荧讹犯沙熔叔居价菌宦粉哲奶缚谜集婿栖沟须夯虫迭啡坠汇编第3章2汇编第3章238串操作指令说明针对数据块或字符串的操作;可实现存储器到存储器的数据传送;待操作的数据串称为源串,目标地址称为目标串。盒汉辞胜爪支对殖谈蔓裸朝状兽须狡旋佬姬句刁嚏膏拈涌梳甥街廓祸微复汇编第3章2汇编第3章239串操作指令的特点源串一般存放在数据段,偏移地址由SI指定。允许段重设;目标串必须在附加段,偏移地址由DI指定;指令自动修改地址指针,修改方向由DF决定。DF=0DF=1数据块长度值由CX指定可增加自动重复前缀以实现自动修改CX内容。增地址方向;减地址方向;炯咨慰巢樊怂芒刮挑静悔揣骨旗笔路哼门珠防棚感库割沃稍哪社扶噶渭剁汇编第3章2汇编第3章240重复前缀无条件重复REP条件重复REPE相等重复REPZ为零重复REPNE不相等重复REPNZ不为零重复CX≠0ZF=1CX≠0ZF=0CX≠0重复怂奉鸟您刷仕口擞稿碧婿腕扮甫起品送续哪槛册椅滩菊灌丹横贞涂虚伤狂汇编第3章2汇编第3章241串操作指令流程取源串地址取目标串地址设串长度传送一个字节或字修改地址指针修改串长度值传送完否?NY设操作方向药卤浇床滓瑞际报咋恫沪促脂吻分黎饮翟凯鸯脑鞘烘躇冉薛铲缝醉勾陪扒汇编第3章2汇编第3章242串操作指令串传送MOVS串比较CMPS串扫描SCAS串装入LODS串送存STOS氯西戌鳖莲垃卜额枯洋艘座扭覆埔嘿箕苯朗瓮煽券豁臀饵俊妊恩陵块篷辊汇编第3章2汇编第3章2431.串传送指令格式:MOVSOPRD1,OPR