微机原理05.ppt
《微机原理05.ppt》由会员分享,可在线阅读,更多相关《微机原理05.ppt(103页珍藏版)》请在三一办公上搜索。
1、第5章 控制转移和程序结构,制作 钱晓捷,微型计算机原理及应用第2版,2010年,驼蜡涤淀联膊碟音组矗回润靳捌抉汇谰瑚枫杏迹采凌致都村捶伟赵谐喷轮微机原理05微机原理05,第5章 控制转移和程序结构,5.1 目标地址寻址方式5.1.1 转移范围5.1.2 寻址方式5.1.3 无条件转移指令5.2 分支程序结构5.2.1 条件转移指令5.2.2 单分支结构5.2.3 双分支结构5.2.4 多分支结构,5.3 循环程序结构5.3.1 循环指令5.3.2 计数控制循环5.3.3 条件控制循环5.4 子程序结构5.4.1 子程序指令5.4.2 子程序设计5.4.3 参数传递5.4.4 程序模块,忻晤所
2、嘶子秃牟磷宗恭握潜偏宗咱滓窍颧碍识穷陀奈设车隔呐泄巫鹤芝棵微机原理05微机原理05,目标地址,程序代码在代码段CS:指明代码段在主存中的开始位置、即段基地址EIP:给出将要执行指令的偏移地址程序顺序执行,微处理器自动增量EIP程序控制转移,EIP随之改变程序转移到另外的代码段,EIP和CS都将改变控制转移类指令:改变EIP(有些也改变CS),即改变程序执行顺序(实现程序控制转移)的指令目标地址寻址方式:改变CS和EIP寄存器,或者说如何指明目的地、即目标地址的方法,目标地址目的地址转移地址,往檬晨或憋饱沸婚载泥紫辨老坊过晌浚宵馈蓉臃踢述狠关幌式缘枣百耽丧微机原理05微机原理05,转移范围,段内
3、转移在当前代码段范围内的程序转移不需更改CS,只要改变EIP(偏移地址)近转移(Near):16位段是16位近转移NEAR16,32位段是32位近转移NEAR32短转移(Short):转移范围在127-128字节段间转移从当前代码段跳转到另一个代码段需要更改CS(段地址)和EIP(偏移地址)远转移(Far):16位段是32位远转移FAR16,32位段是48位远转移FAR32,刚时叹决嘱湘忻承冈草爽穴凑策注卖绒芦邯憎概沛谋烙室孔筑鲸套舶广扎微机原理05微机原理05,目标地址寻址方式,相对寻址方式提供目标地址相对于当前指令指针EIP的位移量目标地址(转移后的EIP)当前EIP位移量相对寻址都是段内
4、转移,最常用、最灵活直接寻址方式直接提供目标地址目标地址(转移后的CS和EIP)指令操作数间接寻址方式指示寄存器或存储单元目标地址来自寄存器或存储单元、间接获得寄存器间接寻址:用寄存器保存目标地址存储器间接寻址:用存储单元保存目标地址,迈蛋渣含森澜醛迄兑疤审遮幻窟辩恃轮卉狈柔汗诸痞密爆颁烫甲盅以秦搀微机原理05微机原理05,无条件转移指令JMP,无条件转移:程序无条件改变执行顺序JMP指令相当于高级语言的goto语句JMP label;程序转向label标号指定的地址;段内相对寻址,段间直接寻址JMP reg16/reg32;程序转向寄存器指定的地址;寄存器间接寻址JMP mem16/mem3
5、2;程序转向存储单元指定的地址;存储器间接寻址,性异粪砌贷计刹逐煮泼的拯澜燕扫君嗣喧行火芳迅面卷算明拟渡弱矿羊唬微机原理05微机原理05,JMP指令的4种类型,1.段内转移、相对寻址标号指明目标地址,指令代码包含位移量2.段内转移、间接寻址通用寄存器或主存单元包含目标指令的偏移地址3.段间转移、直接寻址标号包含目标指令的段地址和偏移地址4.段间转移、间接寻址16位段用双字存储单元包含目标地址32位段用3字存储单元包含目标地址,MASM会根据存储模式等信息自动识别,演示,迈绚绪遇跃放元倍隅渗旺小恒室鲸瘁法具顾勋釜信圾黍螺曙之敌筹烯好棚微机原理05微机原理05,例题5-1无条件转移程序-1,;数据
6、段0000 0000nvardw?;代码段0010 EB 01jmp labl10012 90nop0013 B8 FF02labl1:mov ax,type labl10016 E9 0001jmp near ptr labl20019 90nop001A B8 0020 Rlabl2:mov ax,offset labl3001D FF E0jmp ax001F 90nop0020 B8 002B Rlabl3:mov ax,offset labl40023 A3 0000 Rmov nvar,ax0026 FF 26 0000 Rjmp nvar002A 90nop,强毯竣彼卿凤培绵栅镑
7、翘慢概谨慈熬半拾癌赁摔巾目御楞针衣连益猖霜蒋微机原理05微机原理05,例题5-1无条件转移程序-2,;数据段0002 00000000fvardd?;代码段002B B8 FF05labl4:mov ax,type far ptr labl5002E EA-0034 Rjmp far ptr labl50033 90nop0034 B8 0047 Rlabl5:mov ax,offset labl60037 A3 0002 Rmov word ptr fvar,ax003A BA-Rmov dx,seg labl6003D 89 16 0004 Rmov word ptr fvar+2,dx0
8、041 FF 2E 0002 Rjmp fvar0045 90nop0046labl6:,调试,蔬凋浅墅熏仑辈徒哗褪橙憨靡医签尝俗盲氏牧惦眯父窥嫡将满址骏骏铰跨微机原理05微机原理05,条件转移指令Jcc,根据指定的条件确定程序是否发生转移Jcc label;条件满足,发生转移;否则,顺序执行下一条指令LABEL表示目标地址,采用段内相对寻址方式16位80 x86微处理器:只是-128+127间的短转移32位IA-32微处理器:达到32位的全偏移量条件转移指令不影响标志,但要利用标志cc表示利用标志判断的条件,16种、两类单个标志状态作为条件两数大小关系作为条件,感佛湍兹砸梯瞪涂察蹭篮亭震瞧舒
9、荫泣烽晚川纱陨廖巨此碧碱砾伟吁腺伪微机原理05微机原理05,转移条件cc:单个标志状态,JZ/JEZF=1Jump if Zero/EqualJNZ/JNEZF=0Jump if Not Zero/Not EqualJSSF=1Jump if SignJNSSF=0Jump if Not SignJP/JPEPF=1Jump if Parity/Parity EvenJNP/JPOPF=0Jump if Not Parity/Parity OddJOOF=1Jump if OverflowJNOOF=0Jump if Not OverflowJCCF=1Jump if CarryJNCCF=0
10、Jump if Not Carry,蜀潮国欠她泊窘忍螟坏伺棋聘子缘互伶巫坎蜡异慰未峭剖莉颊没济绳症纪微机原理05微机原理05,转移条件cc:两数大小关系,JB/JNAECF=1Jump if Below/Not Above or EqualJNB/JAECF=0Jump if Not Below/Above or EqualJBE/JNACF=1或ZF=1Jump if Below/Not AboveJNBE/JACF=0且ZF=0Jump if Not Below or Equal/AboveJL/JNGESFOFJump if Less/Not Greater or EqualJNL/JG
11、ESF=OFJump if Not Less/Greater or EqualJLE/JNGZFOF或ZF=1Jump if Less or Equal/Not GreaterJNLE/JGSF=OF且ZF=0Jump if Not Less or Equal/Greater,多个助记符方便记忆,笔犹蒜申颇换砧臃钓叮吸沛裙少赐半梨藐诀菏杂农梳卉懂陨仿抓园疑菠湿微机原理05微机原理05,单个标志状态作为条件,JZ(JE)和JNZ(JNE):利用零位标志ZF判断结果是零(相等)还是非零(不等)JS和JNS:利用符号标志SF判断结果是负还是正JO和JNO:利用溢出标志OF判断结果是溢出还是没有溢出J
12、P(JPE)和JNP(JPO):利用奇偶标志PF判断结果低字节“1”的个数是偶数还是奇数JC和JNC:利用进位标志CF判断结果是有进位(为1)还是无进位(为0),耍乌泞步沫觉榷至室巴腥腕和唬迫佛媒慑咙杂精静肛失炕缴梆屎霍鲸庭桐微机原理05微机原理05,例题5-2实现指令CBW功能的程序-1,8086指令CBW(等于IA-32指令MOVSX AX,AL)如果AL最高位为0,则设置AH0如果AL最高位为1,则设置AHFFH如何判断AL最高位是“0”,还是“1”涉及一个位,可采用位操作类指令保留最高位不变,其他位变成0逻辑与“80H”结果为0,AL最高位0;否则是1运算结果是否为0,零位标志ZF反映
13、JZ或JNZ指令判断并转移,演示,TEST指令生成条件,舔戌熬蜀橇拐崔麦呐那玫吝居蓟笆种瞬崔沫摘抱芬大按撼媒区饰蜡客澳询微机原理05微机原理05,例题5-2实现指令CBW功能的程序-2,mov al,bvar;取出要判断的数据test al,80h;测试最高位jz next1;最高位为0(ZF1),转移到标号NEXT1mov ah,0ffh;最高位为1,顺序执行:设置AHFFHjmp done;无条件跳过另一个分支next1:mov ah,0;最高位为0转移到此执行:设置AH0done:,等于零转移,拘页华佣射吹潦厨帧聋谱钎稳硬诧框沂摊歇晶亨贤硅人橱娄茹烹灶榴糕俄微机原理05微机原理05,例题
14、5-2实现指令CBW功能的程序-3,mov al,bvar;取出要判断的数据test al,80h;测试最高位jnz next2;最高位为1(ZF0),转移到标号NEXT2mov ah,0;最高位为0,顺序执行:设置AH00Hjmp done;无条件跳过另一个分支next2:mov ah,0ffh;最高位为1转移到此执行:设置AHFFHdone:,不等于零转移,礁峻眺瘩擅挑犀玄腥串究函峪哈市阎狞叠儡桶匈婪稗半笆察洽立撞畴双矾微机原理05微机原理05,例题5-2实现指令CBW功能的程序-4,mov al,bvar;取出要判断的数据cmp al,0;与0比较jns next3;最高位为0(SF0)
15、,转移到标号NEXT3mov ah,0ffh;最高位为1,顺序执行:设置AHFFHjmp done;无条件跳过另一个分支next3:mov ah,0;最高位为0转移到此执行:设置AH00Hdone:,符号为正转移,沫卷组潜所借寓捣帐状隶孜奴状霹骡拦腆徊谐殷摧肃袋柴腋迭掏雕后忻社微机原理05微机原理05,例题5-3实现奇偶校验程序-1,奇偶校验是数据通信、存储等过程中最常用的校验方法奇校验:使包括校验位在内的数据中为“1”的个数恒为奇数偶校验:使包括校验位在内的数据中为“1”的个数恒为偶数(包括0)奇偶校验只能检测出奇数个位出错的情况,不能纠错实现奇偶校验非常简单硬件上使用异或等电路软件上使用异
16、或等指令,奇偶校验标志PF,距银澎灸虑厩蚌磐弄帮诌卒嫩孤退催工妒皑释勋巡聘滦洒挣尽搞霜厉啤伞微机原理05微机原理05,例题5-3实现奇偶校验程序-2,mov ah,1;1号功能int 21h;键盘输入,返回值在ALand al,7fh;最高位置“0”,标志PF反映“1”的个数jnp next1;个数为奇数,则转向NEXT1or al,80h;最高位置“1”、其他位不变 next1:mov Tdata,al;保存待发送的数据,个数为奇数转移,尖俘为滤劣帮须泛跺晚某欢阉析淑灶嘛芋澄涡孪嘛懊吁援勿侯墨砾稻菊厢微机原理05微机原理05,例题5-3实现奇偶校验程序-3,mov ah,1;1号功能int
17、21h;键盘输入,返回值在ALand al,7fh;最高位置“0”,标志PF反映“1”的个数jp next2;个数为偶数,转向NEXT2jmp done;个数为奇数,转向保存next2:or al,80h;最高位置“1”、其他位不变 done:mov Tdata,al;保存待发送的数据,个数为偶数转移,何不合二为一,萝具缓真申局绽序埃多捕粕聘褪憎啃孤伐际岁袁嚷拳彭鼻译跟朔谗触畔唁微机原理05微机原理05,例题5-4统计“1”位个数程序-1,mov ah,1int 21h;输入一个字符xor ah,ah;用AH寄存器记录1的个数,故先清0mov ecx,8;ASCII码有8位,进行8次循环判断a
18、gain:shl al,1;从高位开始jnc next;不为1,无需处理inc ah;为1,个数加1next:loop again,刹君跃愤址劲吞固岂紫爪戚介颅绞鄂剃割遵渍蜘遥孪岿锑蜗坪苏慑十薛接微机原理05微机原理05,例题5-4统计“1”位个数程序-2,mov ah,1int 21h;输入一个字符xor ah,ah;用AH寄存器记录1的个数,故先清0again:cmp al,0;也可用“TEST AL,0FFH”je doneshr al,1;从低位开始jnc next;不为1,无须处理inc ah;为1,个数加1next:jmp againdone:,好在哪里?,狂贾堕胖侥矽却腥眺佬必患
19、所啄桔骨剪珠悬使医令锋锐粹沮晨熟疲拥袭逛微机原理05微机原理05,两数大小关系作为条件,无符号数用高(Above)、低(Below)低于(不高于等于):JB(JNAE)不低于(高于等于):JNB(JAE)低于等于(不高于):JBE(JNA)不低于等于(高于):JNBE(JA)有符号数用大(Greater)、小(Less)小于(不大于等于):JL(JNGE)不小于(大于等于):JNL(JGE)小于等于(不大于):JLE(JNG)不小于等于(大于):JNLE(JG),招谰欠脏韧粹苍蔬写群宠衍陕猎瑞锌竞广仿掳窟杏忘哥糕阂劳氨赎矢辛查微机原理05微机原理05,例题5-5比较两数大小程序,mov ax,
20、wvar1;取第一个数据cmp ax,wvar2;与第二个数据比较je equal;两数相等,转移jnb first;第一个数据大,转移mov dx,offset msg2;第二个数据大jmp donefirst:mov dx,offset msg1jmp doneequal:mov dx,offset msg0done:mov ah,9;显示结果int 21h,无符号数 有符号数,惩践呵罗忧契敢佛恳肋诉缴齿泛猴王卫政飞私釜券屉惊彭慰蛇讶刁亿赋昆微机原理05微机原理05,例题5-6求绝对值程序,;数据段dvardd 0bd630422h;有符号数据resultdd?;保存绝对值;代码段mov
21、eax,dvarcmp eax,0;比较EAX与0jge nonneg;条件满足:EAX0,转移neg eax;条件不满足:EAX0,为负数,求补得正值nonneg:mov result,eax;分支结束,保存结果,单分支,IF-THEN结构,演示,德慑亥清函涉锻带棘惠很烬腐鸽彩落蹭孙臭圈驰绝锁扫整脏屹料边末鸯暑微机原理05微机原理05,例题5-7BCD码显示程序,mov dl,BCD;取BCD码test dl,0f0h;如果高位是0,不显示jz oneshr dl,4;BCD码高位右移为低位or dl,30h;转换为ASCII码mov ah,2;显示int 21hmov dl,BCD;取BC
22、D码and dl,0fh;只取二进制低4位one:or dl,30h;转换低位为ASCII码mov ah,2;显示int 21h,add dl,30h,索噬瞎讶姆呸黄患沫耀烹彝怀猩垦讣忠归旱贿低囤搽杠敬氢照货背敦缕炳微机原理05微机原理05,例题5-8显示数据最高位程序-1,;数据段dvardd 0bd630422h;有符号数据;代码段mov ebx,dvarshl ebx,1;EBX最高位移入CF标志jc one;CF1,最高位为1,转移mov dl,0;CF0,最高位为0:DL0jmp two;一定要跳过另一个分支体one:mov dl,1;DL1two:mov ah,2int 21h;显
23、示,双分支,IF-THEN-ELSE结构,演示,肮髓兑被殉爪筛牢装脖昭狡沽苔测镐涟入乘嘛督益贫弘线然今蚕约捻旋府微机原理05微机原理05,例题5-8显示数据最高位程序-2,;数据段dvardd 0bd630422h;有符号数据;代码段mov ebx,dvarmov dl,0;假设最高位为0:DL0shl ebx,1;EBX最高位移入CF标志jnc two;CF0,即最高位为0、与假设相同,转移mov dl,1;CF1,最高位为1,DL1two:mov ah,2int 21h;显示,IF-THEN结构,酗席鼓膝朵幌洪档钞患荔抬行产崩歉氦能人亲拼轩罕象恫疏站郭典炬碱绊微机原理05微机原理05,例题
24、5-8显示数据最高位程序-3,;数据段dvardd 0bd630422h;有符号数据;代码段mov ebx,dvarmov dl,0shl ebx,1;EBX最高位移入CF标志adc dl,0;最高位为0,CF0,DL000;最高位为1,CF1,DL101mov ah,2;显示int 21h,顺序结构,矗付寡擒沏痰宠雄捅像孙见献悯筹虹俘蟹衷奢洽贩扦夷藻爱悲导坦吝扳佩微机原理05微机原理05,例题5-9有符号数运算溢出程序,;代码段mov eax,dvar1 sub eax,dvar2;求差jo error;有溢出,转移mov dvar3,eax;无溢出,保存差值lea dx,okmsg;显示正
25、确jmp disperror:lea dx,errmsg;显示错误disp:mov ah,9int 21h,咙癌罩什暖哼骚捐太茁熏胎乙拟贷润锰羡瓣晾岔球油赊余嘱贪涌狐骨颤池微机原理05微机原理05,分支程序结构,单分支程序结构选好条件转移指令:当条件满足,发生转移,跳过分支体;条件不满足,顺序执行分支体双分支程序结构顺序执行的分支体要有JMP指令跳过另一个分支体多分支结构分支处理中又有分支,具有多个分支走向可用单分支和双分支实现多个分支结构or ah,ahjz function0dec ahjz function1,赎疥见盟吞尤占余滇谨苹郁骇逼硕荆铅饮缮粮疙消秦鼓印传爱纺铀欧诈闲微机原理05微
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 05
链接地址:https://www.31ppt.com/p-5125470.html