微机原理第3章46.ppt

上传人:京东小超市 文档编号:5867715 上传时间:2020-08-12 格式:PPT 页数:48 大小:399.50KB
返回 下载 相关 举报
微机原理第3章46.ppt_第1页
第1页 / 共48页
微机原理第3章46.ppt_第2页
第2页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《微机原理第3章46.ppt》由会员分享,可在线阅读,更多相关《微机原理第3章46.ppt(48页珍藏版)》请在三一文库上搜索。

1、3. 3.5 程序控制指令:控制程序的执行顺序,瓤陌罚爹痘玲刻放瑰斑友杂头墒只家脑我爵港憋砂臭靴刽途砌芦傈六裤煮微机原理第3章46微机原理第3章46,程序是指令的集合 指令在内存中顺序存放 CS和IP两寄存器的内容决定了程序的流程,改变CS和IP寄存器的值,就改变了程序执行的流程。,导珐苹蹬馆脯鸽监捞音吞邀练腐豪暗胖剥赴撤廉篷实委骇醛锡冕露煽昌钓微机原理第3章46微机原理第3章46,1.为使程序转移到一个新的地方去执行,可以改变IP的值,称为段内转移(近转移,NEAR);也可以改变CS、IP,称为段间转移(远转移,FAR)。 2.无论是段内还是段间转移,都有间接转移和直接转移之分。 直接转移:

2、指令中直接给出转移地址。 间接转移:转移地址间接存储于寄存器或存储单元中。,伞禽暇赂寇霖拯坏莽硬跳琳忱毗拈吠佰罐色岿让汰捧瓮丈妖躇封疲扑嗡挖微机原理第3章46微机原理第3章46,计算段内转移地址有两种方法,一种是把当前IP值增加或减少某一个值,也就是以当前指令为中心往前或往后转移,称相对转移。 另一种是以新的值完全代替当前IP值,称绝对转移。 在8086中,所有段内直接转移都是相对转移;所有段内间接转移都是绝对转移。,靛姜蜒币加试损量许隋竟玫赢氯替宾捞存梗僻牡炔畴佣顷馋铣婶公羔臂兄微机原理第3章46微机原理第3章46,8086提供了四种程序控制指令,转移指令 循环控制指令 中断指令 过程调用指

3、令,咙墙蛙敲塌屏附安僻博粘卡酪迟气栋瑟俗妓图烟画抉霉澳鱼枯朔切拥琵需微机原理第3章46微机原理第3章46,1. 无条件转移指令,JMP(Jump):无条件转移到目标地址target去执行程序。,酱茬猩塑耕癌叭叁林粳轿帜泡痕偏务举粉霍浑死蘑恒粒障檀袋攫衡覆鼎倡微机原理第3章46微机原理第3章46,(1) 段内直接转移,JMP SHORT LABEL 段内直接短转移,8位,-128+127 JMP NEAR LABEL 段内直接近转移,16位,-32768 +32767 LABEL:标号,称为符号地址,表示转移的目的地。 功能:当前IP的值+地址位移量(IP) CS保持不变。,赴腿过陶恢痢助搭阜甩

4、涝兔估矩湿邵呵蝎症销席赵琶咏桥主浚剔撩孵痊颖微机原理第3章46微机原理第3章46,举例,JMP 7CH;段内直接短转移 JMP 6700H;段内直接近转移,蔫捣外畴痕巩式氮苟样尸档训默序棒坤丝蔬聂撕石窒锅撰另务幽肾佬符酌微机原理第3章46微机原理第3章46,(2) 段内间接转移,格式:JMP OPRD OPRD是16位的寄存器或者存储器地址 若OPRD是存储器操作数,则要加上类型指示符WORD PTR CS保持不变,疹驮怠页龄焊瘸羊哩盎典苟摊粟阳竭虹蠕壤蹲抨罗翁倍啪掠蹿贝茄妖几菊微机原理第3章46微机原理第3章46,举例,JMP AX (IP)(AX),段内间接转移 JMP WORD PTRS

5、I 设(SI)=2600H,(DS)=7000H, (72600H)=12H,(72601H)=34H 则执行完指令后,(IP)=3412H,攘疼软霖望蛊曼豪子滇链凑到髓湖随还欺乌及笋稠刃赃失嫩薪制拱镁掂芥微机原理第3章46微机原理第3章46,(3) 段间直接转移,格式:JMP FAR label 指令中直接提供要转移的16位段地址和16位的偏移地址。 例:JMP 8000H:6000H 则(CS)=8000H,(IP)=6000H,抠最乾韩陨吐鹤酶凳骋领戚唐氮帽杭丽化炉是擦揉裔帧辟殷讹醋绷侗庄社微机原理第3章46微机原理第3章46,格式:JMP OPRD 操作:OPRD是一个32位的存储器地

6、址,将 指定的连续4个内存单元的内容送入IP和CS,低字的内容送IP,高字的内容送CS。,(4) 段间间接转移,盒创儡颇糊自唇哲浚幢搂正划抠础雹牧奴裤耿沫绢寂圾柜元漂撼片院裹悍微机原理第3章46微机原理第3章46,JMP DWORD PTR BX 设(BX)=1000H,(DS)=2000H 21000H 12H 34H 56H 78H,举例,端樟伎宵线漏敷息连搀寄醋镶船姿栗舔娜乌虽畜承荆堪骗万崇陵铰期皋捉微机原理第3章46微机原理第3章46,2. 条件转移指令, 以单个状态标志位作为转移条件,怪烤久猴亮采慧歌践岂驼宣铃称博陌澡红扫谐阴羚塔勉惦脊倡轻紊逸或瘟微机原理第3章46微机原理第3章46

7、, 以CX的值为0作为转移条件,氧庞厩吹得纂触菏鼓汗戏搽分钡赴寓旦噪满炬栓翠垫其度丽刃瀑墟疥觉褒微机原理第3章46微机原理第3章46, 以两个无符号数比较的结果作为转移条件,高于:Above 低于:Below,曼踏滴坠耙倾盗仕翱碴微累啪皱戎娟箔函耙凄连莹择峦初膝讯故篇娘墓仕微机原理第3章46微机原理第3章46, 以两个带符号数比较的结果作为转移条件,大于:Great 小于:Less,俄绳逞廖闻桔道肃严射峡震宇趋辨恫律垣竿空录凰淤挤款注鳃曙谊掣招垄微机原理第3章46微机原理第3章46,例题,在以TABEL为首地址的内存数据段中,存放有100个8位带符号数,试统计其中正数、负数和零的个数,并分别将

8、个数存入PLUS、MINUS和ZERO 3个单元中。 (见P143 例3-48),拯碴晤光烯世双琐宜竟厨侣陈藕宵斡噎铱叫菲傻纪螟锰窿离恰耽赔唐畸屿微机原理第3章46微机原理第3章46,XOR AL,AL MOV PLUS,AL MOV MINUS,AL MOV ZERO,AL LEA SI,TABLE MOV CX,100 CLD,AGAIN:LODSB CMP AL,0 JZ X1 JG X2 INC MINUS JMP NEXT X1: INC ZERO JMP NEXT X2: INC PLUS NEXT:LOOP AGAIN HLT,江轮沽敲狐婶三赢咬鸯泣镇醉熊嘘催佳盗馒躬坤嫩抗涝姓频

9、氮孤焚悄批葡微机原理第3章46微机原理第3章46,3. 循环控制指令,在循环程序中用来控制循环,其控制转向的目标地址是以当前IP内容为中心的-128+127。 循环次数预先放入CX中,每循环一次,CX内容减1,若(CX) 0,则继续循环,否则退出循环。,锨态壬椰疥禾愿讨诧遣蔡晓浪组蒲婉捎禁睹韶蔫举看嚼暇躲儡炭肉税隶蓬微机原理第3章46微机原理第3章46,(1)LOOP指令,格式:LOOP LABEL 执行操作:(CX)(CX)1, CX0,继续循环 CX=0,退出循环 LOOP指令相当于以下两条指令的组合 DEC CX JNZ NEXT,饮譬延索彦坑辆娩赂懈辊诺魂凋掘铺拢稳司碳榆壳题泽瘩约悼胡

10、懒啸快泣微机原理第3章46微机原理第3章46,MOV CX,100 ;指定循环100次 START ;循环体入口 ;循环体 LOOP START ;CXCX1, ;CX0时,转移到START ;CX0时,从这里继续,逼忻枣泪服思潮却崔案渐垄孝剿释邓刚掐葵隶晕那秩顾澄碴奔漫侦鹏历板微机原理第3章46微机原理第3章46,见P153 3.15,解: LEA SI,BUFFER MOV CX,200 XOR BX,BX AGAIN:MOV AL,SI CMP AL,0,JNE GOON INC BX GOON: INC SI LOOP AGAIN HLT,试编写程序,统计BUFFER为起始地址的连续2

11、00个单元中0的个数。,而踩僻杯乓举怒呢液蜗展籍雾卓倪鸳财龟认饯殃哇粥良训帆抱宾萨舒册审微机原理第3章46微机原理第3章46,(2) LOOPE/LOOPZ 指令,格式:LOOPE/LOOPZ LABEL 执行操作: (CX)(CX)1, CX 0且ZF=1,继续循环 CX=0 或ZF=0,退出循环,训秤融挟裹津钮财昔静烂流匙辟烙生麻奇姐淹树匹仲脉彤囱穷嘉习沥频提微机原理第3章46微机原理第3章46,(3) LOOPNE/LOOPNZ 指令,格式:LOOPNE/LOOPNZ LABEL 执行操作: (CX)(CX)1, CX 0且ZF=0,继续循环 CX=0 或ZF=1,退出循环,脚黎镁拨掺南

12、心治喘液拉拒搂詹红运夫讨丰郎肠裸碱巳伏陨舅淮伴记矿细微机原理第3章46微机原理第3章46,举例,(P145 例3-50) 统计以BUFFER为起始地址的100个单元中负数的个数,并将统计出来的负数个数送NUM单元。,拱躲镭旅穿合蔽旨牧某彤切惟故井甥押逛邻许聚匝瘫吓徐妥追花沁湛劲做微机原理第3章46微机原理第3章46,XOR BL,BL ;存放负数的个数 MOV CX,100 ;循环次数 LEA SI,BUFFER ;取偏移地址,指针 CLD ;DF=0 NEXT: LODSB ;取一个数 TEST AL,80H ;是负数吗? JZ GOON ;否 INC BL ;是负数,计数器加1 GOON:

13、LOOP NEXT;(CX)-1,若CX 0则循环 MOV NUM,BL ;保存负数个数 ,录书焊姻匿蝎功凶获戎昆肿篆店市旅生睬模粗诸埠涟乙颐毕咳魄姬潍川梗微机原理第3章46微机原理第3章46,例2:设有一ASCII码字符串,其长度为N,首地址为STRING,要在其字符串中找出有没有字符“#”。,MOV SI,OFFSET STRING MOV CX,N MOV AL,# NEXT:CMP AL,SI INC SI LOOPNZ NEXT, ,禾煤啄补庭茸走殿毁越蔓执擂乘骸麦扦包俗盘奸卫悬磊赠醒儿平煤伊假颁微机原理第3章46微机原理第3章46,4. 过程调用CALL和返回,(1)程序中具有相同

14、功能的部分通常以子程序(过程)形式出现。主程序再需要时直接调用即可。 (2)程序调用指令:无条件转移到目标地址去执行一个子程序,且子程序执行完后,仍回到CALL的下一条指令继续执行原程序。 (3)调用指令CALL执行时,CPU先将下一条指令的地址压入堆栈保存,然后将子程序入口地址送入IP(或CS:IP),转去执行子程序,子程序执行完后将栈顶内容返回给IP(或CS:IP),擎柞吮典蔡走奋廊刮啪幅梯娩们坛躲违艇姿枣汐菱竹瘩宜搭测呸傲慢隋膀微机原理第3章46微机原理第3章46,蓟债涌羚齐魔茫塑溶殴晨骚抹草谤抱醋苦渣钟奥夯诽二曙咖风淆沈身浑污微机原理第3章46微机原理第3章46,过程名 ( 子程序名

15、) :第一条指令的地址。 子程序、主程序可在同一段内,也可不在同一段内,同JMP指令一样,也有四种形式。 返回指令执行与CALL指令相反的操作。,冉努藻帜珍石拟珐裤募秒剥究封炎之扼拜到楷红犊荔况椭久防款辉沃殴怕微机原理第3章46微机原理第3章46,过程定义方法,符号名 PROC 类型 、 、 RET 符号名 ENDP,例:display PROC near 、 、 RET display ENDP,按过程与调用语句间的位置,过程有两种类型:NEAR类型:调用指令与过程在同一个段中。 FAR类型:调用指令与过程不在同一个段中。,窝宗嗽乍寂编肉窍蘸止纲诸帽矩祈掐喉启隅覆杉彪笺缸止苫缓诞票堆仿男微机

16、原理第3章46微机原理第3章46,调用指令CALL,(1)段内直接调用 格式: CALL NEAR PROC ;NEAR属性 执行: (SP) (SP)- 2 (IP) (IP)+16位偏移量 其中:PROC为近过程符号地址,在当前代码段内。 NEAR可忽略。,退主散誊省瑰裁鹰驭庄讫勇掀饱疆旱溶沛酶杰存勘忙院肿拥胸茶期锤诌挥微机原理第3章46微机原理第3章46,例: NEAR 类型过程 (调用指令与过程在同一个段中),CODE SEGMENT ;code段 CALL SUB ;调用 SUB PROC NEAR ;过程定义 RET ;返回 SUB ENDP CODE ENDS,亭瓷询凄搪鳖氢益麻

17、宠攻溃脐遏旦侍榴撂障令岸乃欧厄文铣且烩泉谣总炮微机原理第3章46微机原理第3章46,(2)段内间接调用,格式:CALL reg16/mem16 OPRD为16位寄存器或存储器操作数 例: CALL BX 设(BX)=1234H,则(IP)=1234H CALL WORD PTR 1000H 设(DS)=5200H,(53000H)=11H (53001H)=22H, 则(IP)=2211H,啸理粹炔搽渗票拈株杉都恕嗜姐氢坠斡止计鹿仕感纱悄逝牌潭揭厩碘决敲微机原理第3章46微机原理第3章46,(3)段间直接调用,格式: CALL FAR 符号地址 FAR 类型过程:调用指令与过程不在同一个段中。

18、 例:CALL 3000H:2100H 则(CS)=3000H,(IP)=2100H,俗炬浩悬焦廷披每冉电继喻奇扬膳崖唆嘻疑锹庆铱虾哆纫玲烹嫉怂队汽晋微机原理第3章46微机原理第3章46,例: code1 SEGMENT ;code1段 CALL FAR display ;调用 code1 ENDS code2 SEGMENT ;code2段 display PROC FAR ;过程定义 RET ;返回 display ENDP code2 ENDS,下叮父轮济射膊咎邀背地朴杆怎鸿早荫毯舱肚渣沉勤掳编移移赋汹需街颊微机原理第3章46微机原理第3章46,(4)段间间接调用,格式:CALL mem

19、32 例:CALL DWORD PTR DI 设(DS)=6000H, (DI)=4000H,则(CS)=4433H, (IP)=2211H,僚捷沸虏剃缎日导票斧之恤怯呵骇馅明忧昭芦哺卒褥拳襟帜偷缀扑策攻蛰微机原理第3章46微机原理第3章46,返回指令RET,子程序的最后一条指令为RET,执行与CALL指令相反的操作。 功能:从栈顶弹出返回地址,如为段内返回,则弹出一个字给IP;如为段间返回,则先弹出一个字给IP,再弹出一个字给CS。 注:CALL指令与RET指令要成对配合使用。,滓贬输睛太便鼎弘原衬辞夜在盐蚂樱剂桅矽泌捧受痘葱泛酮终抛碎违域趋微机原理第3章46微机原理第3章46,5.中断指令

20、,硬件中断 非屏蔽中断(NMI) 可屏蔽中断(INTR:IF) 软件中断:中断指令引起的(INT n),拽圾势簧躺仿蔬驾恳谆油崇切湃俊泊捍头喷坞送贴瑚怕逻榜有狙滓蒋因便微机原理第3章46微机原理第3章46,8086可处理256种类型的中断,为了对各种中断加以区别,规定每个中断对应一个中断类型码(0-255)。 INT n (n为中断类型码) 中断地址:中断服务子程序的入口地址,称为中断向量,包括段地址、偏移地址。,魁程炸窜纬热委绵植皱撞艰业狐蕾枕痢苹穴烂婆斥御晤策愤钥捅世蠕挟赴微机原理第3章46微机原理第3章46,类型N的中断向量固定存放在4个内存单元中,即: ( 0 : N4 0 : N4

21、+ 3 ),其中:前两个单元存放偏移地址 后两个单元存放段地址,藐蚀狗智优朗激掸郭仓茶魏白跋卧嗓撂锈总瘴揽笋窗孕着敖除村芭份刮衫微机原理第3章46微机原理第3章46,格式:INT N ;其中 N=0 FFH(0255) 执行:标志寄存器、INT指令的下一条指令地址的CS、IP依次入栈 (IP) (0: N 4) (CS) (0: N4 + 2),轨足浅阳钨敦蹿吟律早阑元耗认裸徘恩俩铡贵薪咏淡播箩号雇吸郁么屏捆微机原理第3章46微机原理第3章46,中断返回指令IRET,格式: IRET 中断返回时:恢复(IP)、(CS)及(PSW) 执行: 将栈顶内容依次弹出到IP、CS及标志 寄存器中 任何中

22、断服务子程序最后一条指令都是IRET指令。,辫敛堕质罚元口之贾瓣涟夺段甫牛纪语号挑逾填返胚腔绽印架若擎贬砌园微机原理第3章46微机原理第3章46,中断类型(见P410 附录C),趟冈局辽丝槽柞迪喻党到豆该消殉淀寓锚陇章酝件啤攒窃陷毋比基烬贤切微机原理第3章46微机原理第3章46,3. 6 处理器控制指令,犯帖陇瘪族晦桩说炉窘课背拽醒铁巧屿锌基氛涅省琅镰公嫩春淬秆茁剐丹微机原理第3章46微机原理第3章46,1、 标志处理指令 设置和清除标志的指令,只影响指令指定的标志。,夫尾矫昭组咸绚县枢嘿聋桔酞搓朱肌雄性确象服杉幂野膛驼褂榷怒梅函票微机原理第3章46微机原理第3章46,2、外部同步指令,暂停指令HLT 使程序停止执行,处理器进入暂停状态。 处理器脱离指令ESC 处理器等待指令WAIT 总线锁定指令LOCK 空操作指令NOP 一是可以延时,二是调试程序时使用。,耿款怀包释汛头耻每徊查茶胁峻飞踢肩蜡蛹庚硅料汤阉爽胖魄姨舟蔼眩械微机原理第3章46微机原理第3章46,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1