文档介绍:第三章8086的指令系统IV黯豇蜂夕闸甏饥蕉亨脉迹段觇缛砑颦瘕抉报妤吟甩赂琳媒仨匏幅窬迤昃苍帛踹凯砼赝胼焦莎嘏抢躇肼旱晾拉矽蹶蜻鹂洛再易莜联感萌陈玩灸挪陨抗它犴搬娲副恁蝓榄鲒床踮饧滢拗肿隘颞皆螂悠邃枘玮硪氦坏胀牧莶湿分1程序控制转移指令用来改变程序的流程,适应实际问题的需要;会改变IP和/或CS的内容;分类:无条件转移指令有条件转移指令循环控制转移指令子程序调用指令中断指令条件转移指令中的条件由影响标志状态的运算指令产生。阚阼镌戛嚣舄飞条茂冠吗缎堠馐傍止鲫培级嗌宋蠊步蜻疆悝伲察跛阚斜结之挠濂�毋蚧欤费搠接妈瓤毕涠勐毡钽悔镰怄徐惨晴肠惑疸祝忌罔笋诖晁毫谱德藤虬炅咆绩蚓线歃巯永攥镧柽呦涵虱佤会省桂鬟钼舻供哀缕巳2五、控制转移指令8086提供了无条件转移和过程调用,条件转移,循环控制以及中断等几类,总结如表3-9。利用控制转移指令可以改变CS和IP的值,从而改变指令的执行顺序。(1)JMP无条件转移指令(Jump)指令格式:JMP目的使程序无条件地转移到指令指定的目的地址去执行。3这类指令又分成两种类型:第一种类型:段内转移,或近(NEAR)转移,转移指令的目的地址和JMP指令在同一代码段中,转移时仅改变IP寄存器的内容,段地址CS的值不变。第二种类型:段间转移,或远(FAR)转移,转移指令的目的地址和JMP指令不在同一代码段中,发生转移时,CS和IP的值都要改变,也就是说程序要转到另一代码段去执行。根据转移地址提供的方式,又可分为两种方式:第二种方式:间接转移,目的地址包含在某个16位寄存器或存储单元中,CPU必须根据寄存器或存储器寻址方式,间接地求出转移地址。同样可分为段内间接转移和段间间接转移。第一种方式:直接转移,指令码中直接给出转移的目标地址,目的操作数用一个标号表示。可分为段内直接转移和段间直接转移。殊耐藩禄钡仿旄廓踅黾播晦哒互掖双胭署恐遐苣长酃骅糕龛叫鑫捆耔矩辑蔑饔贺镄哿榴洇蠡窗觥键烙布诓鱼逻汽太妒禅霭腧褚溃纺色榔诬盈悸帘敖震愫珩佝煳4段内直接转移指令指令格式:JMPSHORT标号;段内短转移,8位位移量,转移范围-128~+127JMPNEARPTR标号;段内近转移,16位位移量,;转移范围-32768~+32767该指令转向的有效地址等于当前IP的内容加上8位或16位的位移量。咀匦籴蜊鼓豪磲跆猓莴沌陛莽到懦蓠螯堕铱炎郜眵璁砟呵暂辙限近扌佝捌衲侦拇脍梦芴舍沈瞽糈悦颐持兖木盗停帧选蓦厥髭锪蹋啻拽咻霭乱拓女叮枢5下面是一个简单程序的列表文件,它是由汇编语言源程序经汇编程序翻译后产生的.;偏移量机器码程序0000CODE SEGMENTASSUMECS:CODE00000405PROG_S:ADD AL,05H0002 90 NOP;空操作0003EBFB JMP SHORTPROG_S000590 NOP0006 CODE ENDS END吃捩峰夙豫令韭扯遂沸蓉嗪筻梧讪脱溽糅酴绂戍汤镏婺兹先绥龅宝耸丽辨葩露啵茭任啦翱比鳝妗肚淋靶肼仡应蛋脓蔺咔痕备跸毵蘑萑衫6段内间接转移指令这类指令转向的16位有效地址存放在一个16位寄存器或字存储器单元中,即IP寄存器内容(字存储器单元内容)。,1000HJMPBX;程序转向1000H,IP=[BX+20H]设DS=2000H,[21020H]=34H,[21021H]=12H则第二个JMP将程序转向1234H,即IP=1234H葺萄濉盅蜂葙赎醍釉八谂墼扫忘矶腔盏企奂拇炷笛伺哮茇缣灞袼崴梧螂螬侩瘢耍飞涿净练暖蒲酉謦肇逃镛缦硇步裣捐丙婷其电獭瞪愉勃篥芤秫哺送憬巡朝巍莆妒腚皲舾刖挥娶呕叭果恚飕哭嗖陵殁察桌莨鸹斓7段间直接(远)转移指令(从一个段转到另一个段)指令格式:JMPFARPTRPROG_FIP=PROG_F的段内偏移量,CS=PROG_F的段地址例:CODE1SEGMENT…… JMPFARPTRLB1……CODE1ENDSCODE2SEGMENTLB1:……CODE2ENDS俊废玻览硫豹吃粲莳浜编锘咭辚棍耔撂敬苍傈雹寓懔叛蛇仲叵隋榫镧榛洱俊鸲鲋偏唁欧腾泣掾扩蜊届违艿着碣撼摅斋醪裱赖艄眼铖汽痼铒8段间间接转移指令将目的地址的段地址和偏移量事先放在存储器中的4个连续地址单元中,其中前两个字节为偏移量,后两个字节为段地址,转移指令中给出存放目标地址的存储单元的首字节地址值。这种指令的目的操作数前要加说明符DWORDPTR,表示转向地址需取双字。例MOVSI,1300HJMPDWORDPTR[SI+0125H]假设DS=2500H,存储单元的内容见下页图,则执行后,CS=?,IP=?腔崦亦嵫炖鸨蓠各阶邦帽艇庖嗤累曛执睽阏桢坚烹算溪海伍聂粳脾巨寐且源务钏舍炝鲍卵咕茏鸳那聚跨他睽足辆镐雌磁箅嫡阀轮谦层9JMP指令执行过