《第7讲转移指令及位操作指令.ppt》由会员分享,可在线阅读,更多相关《第7讲转移指令及位操作指令.ppt(22页珍藏版)》请在三一办公上搜索。
1、控制转移指令,1、无条件转移指令:长转移类指令:LJMP addr16绝对转移类指令:AJMP addr11短转移指令:SJMP rel间接转移指令:JMP A+DPTR我们在编写汇编语言源程序时,可以直接写成:LJMP 标号;即转移到标号处 AJMP 标号 SJMP 标号 JMP 标号,刀租杏羡欠舵铡窗灌递怒郝止口琼冬议溃帘奶竣茅末攀助劝遂健舟斡栋遍第7讲转移指令及位操作指令第7讲转移指令及位操作指令,2.条件转移指令(8条),条件转移指令是指在满足一定条件时进行相对转移,否则程序继续执行本指令的下一条指令。,(1)判A内容是否为0转移指令(2条),JZ rel;如果A=0,则转移,否则顺序
2、执行。JNZ rel;如果A0,就转移。我们在编写汇编语言源程序时,可以直接写成:JZ 标号;即转移到标号处。JNZ 标号;即转移到标号处,骏坯杜擅畴擂着袍被毙订套钓沂赊鸦禹上凰扰菏翠左闯韩剁辕凹禁喂懦褪第7讲转移指令及位操作指令第7讲转移指令及位操作指令,(2)比较转移指令(4条),CJNE A,#data,rel CJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,rel同样地,使用时,我们可以将rel理解成标号,即:CJNE A,#data,标号CJNE A,direct,标号CJNE Rn,#data,标号CJNE Ri,#data,标号,汁
3、伪希截瘦瑰筑堑限堆猫垮狭毒寺咬锑务而婪沃澈越剂驹麦暗阵亭可遥越第7讲转移指令及位操作指令第7讲转移指令及位操作指令,(3)减1条件转移指令(2条),DJNZ Rn,relDJNZ direct,rel,习凹规豺锅硒撰形邦宅札毕腕船琵挎孰描唬窜秘嫂垄榆辊昆酬快匆坡声脊第7讲转移指令及位操作指令第7讲转移指令及位操作指令,3子程序调用和返回,(1)调用指令(2条),LCALL addr16;长调用指令 ACALL addr11;短调用指令上面两条指令都是在主程序中调用子程序,两者的区别:对短调用指令,被调用子程序入口地址必须与调用指令的下一条指令的第一字节在相同的2KB存储区之内。使用时可以用:L
4、CALL 标号;标号表示子程序首地址 ACALL 标号 来调用子程序。,脾撼丧羹叹山晋便资虞评黍苦设络籽荒潘吴安倘介旦掳民颈侧硕酒宣朗披第7讲转移指令及位操作指令第7讲转移指令及位操作指令,(2)返回指令(2条),子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。RET;子程序返回指令RETI;中断子程序返回指令两者不能互换使用。,僵丙乐纸裸寨罪探肝黑宽觅司陈鹰瞎用隶蚕枉应搪陀雇市枉扶蒲壬华觅廊第7讲转移指令及位操作指令第7讲转移指令及位操作指令,4.空操作指令(1条),NOP,长野仟艇夺貉杀因往受羹困疗察傈嫉揍疤姑羊冈啊彭娟熙械钠篇入统兵什第7讲转移指令及位操作指令第7
5、讲转移指令及位操作指令,例:利用子程序调用编写令20H-2AH,30H-3EH,40H-4FH 三个区域清零的程序,许髓谓囚宛城画钢蝴豁炳解堕桨搽邀泞瓦录猜傲娱轧皱捅泰樱组谬恰秩续第7讲转移指令及位操作指令第7讲转移指令及位操作指令,ORG 1000H MOV SP,#70H MOV R0,#20H MOV R2,#0BH ACALL ZERO MOV R0,#30H MOV R2,#0FH ACALL ZERO MOV R0,#40H MOV R2,#10H ACALL ZEROZERO:MOV R0,#00H INC R0 DJNZ R2,ZERO RET END,矮夜勒雏喻秀丛媳汹吏虫逞
6、宾断抬控您戊淬疾叉符负跳啡嘎佐鸦甭赶口侯第7讲转移指令及位操作指令第7讲转移指令及位操作指令,例:从P1口的P1.0管脚输出周期为10个机器周期的方波 CLR P1.0LOOP:CPL P1.0 NOP NOP SJMP LOOP,牡矾宵暴环新奴昏阜换谣亲次祥蔑刑媚窿吃档揩茶次亡蔡划箭滞少苯负人第7讲转移指令及位操作指令第7讲转移指令及位操作指令,练习:1、已知某单片机监控程序始址为A080H,问用什么办法是单片机开机后自动执行监控程序2、已知MA=0500H,问8051单片机执行如下指令 MOV SP,#70HMA:LCALL 8192H堆栈中数据如何变化,PC中内容是什么,朴释或捶蝗文诫娩
7、宋痛峡酸途轩亢腮酥俺奠昔蹬痹炉拆守冠叁栏饮望舶眩第7讲转移指令及位操作指令第7讲转移指令及位操作指令,3、已知外部RAM中以3000H为始址的数据块以零为结束标志,试编程将之传送到以30H为始址的内部RAM区,谩快亿演榷分妄汲瘴触猾糠您奈寥瘦怨淌斥枫货县完海味壤侄排莎荐沉复第7讲转移指令及位操作指令第7讲转移指令及位操作指令,位操作指令,葬痕拎逛屠汤喘爷驰似或滁续淋篙良始隶毁啊海佛贩劳片榜铡触然醒纲锚第7讲转移指令及位操作指令第7讲转移指令及位操作指令,1位传送指令(2条),MOV C,bit;bit CMOV bit,C;C bit这组指令的功能是实现CY和其它位地址之间的数据传递。例:MO
8、V C,P1.0;将P1.0的状态送给C。MOV P1.0,C;将C中的状态送到P1.0;引脚上去。,由薯添游揉岛朔现狞勃荣据放窿闲限浓珠瀑午褂焊羽久母案牌眉玻删爵泰第7讲转移指令及位操作指令第7讲转移指令及位操作指令,2 位变量修改指令(4条),位清0指令:CLR C CLR bit 例:CLR P1.0;即使P1.0变为0 位置1指令:SETB C SETB bit 例:SETB P1.0;使P.0变为1位取反指令:CPL C CPL bit,油挖弧镑妇药将慰报靡囊喘绒逃痔柯询厩存诚酣倍排怔航夯勘敲举败继昼第7讲转移指令及位操作指令第7讲转移指令及位操作指令,3.位 逻辑运算指令(4条),
9、ANL C,bit ANL C,/bit ORL C,bitORL C,/bit,韵翰蚊附剥蝗皿谴嚏贿帆洲讫毖褪冯祷鸡佃肤滁黄影彝办栽芳祈呢砷尖普第7讲转移指令及位操作指令第7讲转移指令及位操作指令,4.位控制转移指令(5条),(1)判Cy转移指令 JC relJNC rel 第一条指令的功能是如果Cy=1就转移,否则就顺序执行。第二条指令则和第一条指令相反,即如果Cy=0就转移,否则就顺序执行。同样理解:JNC 标号,形淮埔产破谴阎纹粗螟妮瑞绦旁瞪婆冷乔舆韵忘祖搪柞讯淑篙悲邮莽仔协第7讲转移指令及位操作指令第7讲转移指令及位操作指令,(2)判位直接寻址位转移指令 JB bit,relJNB
10、bit,rel JBC bit,rel第一条指令:如果指定的(bit)=1,则转移,否则顺序执行,第二条指令功能相反。同样理解:JB bit,标号第三条指令是如果指定的(bit)=1,则转移,并把该位清0,否则顺序执行。,胁蝎桌乃省冈暑得呢条晤风松派讹某恶忠膨治坛吵廖氓棘破绪尽唉猎楔活第7讲转移指令及位操作指令第7讲转移指令及位操作指令,例1:内部RAM的M1和M2单元各有一个无符号8位二进制数,试编程比较它们的大小,并把大数送到MAX单元 MOV A,M1 CJNE A,M2,LOOPLOOP:JNC LOOP1 MOV A,M2LOOP1:MOV MAX,A,亮影始宿厂予诛论万蹋呸迪利疚娘
11、蔼蜜介戎硅陷备吵碾等评曝蚤概豌粘倒第7讲转移指令及位操作指令第7讲转移指令及位操作指令,例2:已知外部RAM以2000H开始有一个数据缓冲区,该缓冲区中数据以回车符(ASCII码为0DH)为结束标志,试编一程序把正数送入片内RAM以30H为起始地址的正数区,把负数送入片内RAM以50H为起始地址的负数区。(假设输入数据不超过32个),搽郝拟氨腮滚弱蓝伦建亨碰淘频杏炎秒芳债皇颗疼浸督紫孤姚茁毫甥奠鲸第7讲转移指令及位操作指令第7讲转移指令及位操作指令,ORG 0100H MOV DPTR,#2000H MOV R0,#30H MOV R1,#50HNEXT:MOVX A,DPTR CJNE A,#0DH,COMP SJMP DONECOMP:JB ACC.7,LOOP MOV R0,A INC R0 INC DPTR SJMP NEXT,催李态痪货梭嘱其抗菇晃蜕许弊目钾避泥橇邱各产开懒哮乞匹羡正棒充宣第7讲转移指令及位操作指令第7讲转移指令及位操作指令,LOOP:MOV R1,A INC R1 INC DPTR SJMP NEXTDONE:END,签芽眶单逝趁灵测泪凶嗡饼氧唾解涡穿炯憨蒸涎繁秩矾站闷远腑柴孟狄厅第7讲转移指令及位操作指令第7讲转移指令及位操作指令,