第3章指令系统控制程序转移类指令new下.ppt

上传人:京东小超市 文档编号:6002793 上传时间:2020-08-20 格式:PPT 页数:34 大小:334KB
返回 下载 相关 举报
第3章指令系统控制程序转移类指令new下.ppt_第1页
第1页 / 共34页
第3章指令系统控制程序转移类指令new下.ppt_第2页
第2页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第3章指令系统控制程序转移类指令new下.ppt》由会员分享,可在线阅读,更多相关《第3章指令系统控制程序转移类指令new下.ppt(34页珍藏版)》请在三一文库上搜索。

1、3.3.4 控制程序转移类指令,包括以下类型: 无条件转移和条件转移 相对转移和绝对转移 长转移和短转移 调用与返回指令,重点、难点:“JMP、CJNE、DJNZ”指令。,灰噎花憋寻蛇躺场捉帽页唆蹦愈所帜蓄向钟鸟儒滚幸郝粹恋涤萤邀歹辅吊第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3.3.4 控制程序转移类指令,1.无条件转移指令 短转移类指令: AJMP addr11 ;先(PC)+2PC,后addr11 PC100,( PC1511 )不变 程序转移范围:2KB的程序存储器地址空间。 2字节指令,斤绝嘿叉叫盈王嘻静村危力懈落棚最澈寥过捌钎尝赴咳松佬稻航考

2、耽道感第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,例:1030H:AJMP 0010000 0000B 问:转移的地址是多少?,解: addr = 001 00 00 0000 B 先(PC)+2=1030H+2=1032H= 0001 0 000 0011 0010 B 后: ( PC1511 )不变,PC100= 0001 0 001 00 00 0000 B=1100H 即执行该指令后,将转至地址为:1100H处。,秽票箍袁彪茬肠屁坊陷老碗闲韩伪激勿职荐胞佣东摧暂跑孺辙呻砧垮察攫第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令

3、new下,3.3.4 控制程序转移类指令,长转移指令 LJMP addr16 ;addr16PC。 3字节指令 指令中:第二字节装入PC的高8位,第三字节装入PC的低8位。 程序转移范围:64KB的程序存储器地址空间。,例: 1023H: LJMP 212AH (PCH)=21H,(PCL)=2AH。 机器码为:02 21 2AH。,模菜铝堂蜂典丈衍窑鲍劳完碍冰引焊炎贸殆掷胎忌队钧孪订缉偿换晾缄拇第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3.3.4 控制程序转移类指令,相对转移指令 SJMP rel ;先(PC)+2PC,后(PC)+rel PC ;2字

4、节指令 程序转移范围:256B.,手工编程时,需计算偏移量rel: rel机器码的相对偏移量,为8位补码。 转移范围:-128+127字节。,即:rel为正数时,范围为:0+127 (00H7FH)。 rel为负数时,范围为:-128-1(80HFFH)。,刘用哲镊翅缆督韧围寐斜甄檬燥蜜傍奴坠漱邦址佰随誉庶聘化亢汁酉歪撂第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,相对转移指令“SJMP rel”,例如: 0100H:SJMP rel 设转移的地址为0157H,则: rel=0157H-0100H-2=55H。故该指令可写成: 0100H:SJMP 55H

5、其机器码为: 80H 55H,正向跳转时: rel目的地址源地址-2 =地址差-2。,0157H,满纪够萄十英失忧枣灸沮亩鳞瞧所詹莲瓤莎填恒吱苔诱登腻骋宛俩避司彦第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,反向跳转时: rel目的地址源地址-2补 = -2补-|地址差| =FEH-|地址差|,例如: 0100H:SJMP rel 设程序转移的地址为:00F8H, 则地址偏移量rel为: rel=FEH - | 0100H-00F8H| =FEH-0008H =F6H。 故该指令可写成: 0100H:SJMP F6H 其机器码为: 80H F6H,00F8H

6、,饭殷啥彼熊片株承囱妖溺汉这薄临视强逃逝腆数肯族搐淤厢拱渴柏柱罚暗第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,编程时,可用标号代替转移目的地址, rel 交给编译程序计算。 例如: SJMP NEXT NEXT: ,原地踏步指令的指令: HERE: SJMP HERE 常写成: SJMP $,注泡苍彦悬家捐化恰达悬既蘸农灵溯植柠固掷桅痈羊掣浑静员俊态屉版护第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,总结 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 这三条指

7、令,可理解成:PC值改变,即跳转到一个标号处。 它们的区别: 跳转的范围不同(2KB;64KB ;-128+127 )。 指令构成不同。 AJMP、LJMP后跟的是绝对地址, 而SJMP后跟的是相对地址。 指令长度不同(2字节;3字节;2字节)。 原则上,所有用SJMP或AJMP的地方都可以用LJMP来替代。,均可用标号表示,波谩霖演悦凉纸系潦顷桂醋邦橙牌墅星拦韭俊卫煌色晾涌支舱未瞩字们匆第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3.3.4 控制程序转移类指令,间接转移指令(散转指令) JMP A+DPTR ;(A)+(DPTR)PC。 1字节指令 使用

8、该指令前,应先给DPTR赋值,A中的内容为无符号数。 转移范围:256B. 该指令多用于多分支程序结构中。,释绚剂虚边孔毒叉捧堆遍赡豌家匆郴性值择丝鹅港戊摧抄诊坯栗阉稼被裳第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,P75.例3-11根据累加器A中命令键的键值,设计命令健操作程序入口跳转表。,例如:当(A)=2时,程序跳转到标号为“XX2”的程序中。,败礼瞩擎羌硫鹃翻肚筹屈稿悲娠实碑奉艘摧挂徘蓉纂帐叮辫赦挨泪鸯鸿衬第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3.3.4 控制程序转移类指令,2. 空操作 NOP ;(PC

9、)+1PC。 1字节指令,3. 条件转移类指令 条件转移指令是指在满足一定条件时进行相对转移,否则程序 继续执行本指令的下一条指令。,谦馅撅厌葛礁脾洒青慢歉昔单克僻霍垛鞭毕悍还柔前筋雅奥堰湛爵镁履弹第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3.3.4 控制程序转移类指令,判A内容是否为0转移指令 JZ rel ;(PC)+2PC。若A=0,则转移到(PC)=(PC)+rel; ; 否则顺序执行。 JNZ rel ;(PC)+2PC。若A0,则转移到(PC)=(PC)+rel ; ;否则顺序执行。 在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转

10、移到标号处。例如: JZ LOOP,以上两条指令均为:2字节指令,盘瞅助营赖司骚见陶劝铲参武辑胞削堤惮蔡阴闽舟鬃嘶茄泅消弛磊垂设呈第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,判A内容是否为0转移指令,例: MOV A,R0 JZ L1 MOV R1,#00H AJMP L2 L1: MOV R1,#0FFH L2: SJMP L2 END 问:如果执行程序前(R0)=0,执行上述程序后,(R1)=?;若执行程序前(R0)0,则(R1)=?。,解:如果(R0)=0,结果(R1)=0FFH; 而若(R0)0,则结果是(R1)=00H。,灵凡詹痈算水浊漠雹畔掘蛋

11、疽烫劫瑰醒返列角攘抚机赛袋管肛痴桑星律元第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3.3.4 控制程序转移类指令,比较(不相等)转移指令 CJNE (目的字节),(源字节),rel ;3字节指令 CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE Ri,#data,rel,同样地,使用时,可以将rel理解成标号,即: CJNE A,#data, 标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE Ri,#data,标号,糕钦略乡坝崔缮拿踏夯链出胯佑穿代臃摇昧迟

12、辱淘困发七赃苍箕揉封矢慎第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,比较(不相等)转移指令, CJNE A,#data,rel ;先(PC)+3PC 若(A)#data,则(PC)+relPC,且0CY; 若(A)#data,则(PC)+relPC,且1CY; 若(A)=#data,则顺序执行,且0CY。, CJNE A,direct,rel ;先(PC)+3PC 若(A)(direct),则(PC)+relPC,且0CY; 若(A)(direct),则(PC)+relPC,且1CY; 若(A)= (direct),则顺序执行,且0CY。, CJNE Rn

13、,#data,rel ;先(PC)+3PC 若(Rn) #data,则(PC)+relPC,且0CY; 若(Rn) #data,则(PC)+relPC,且1CY; 若(Rn)= #data,则顺序执行,且0CY。,腊纹蒲幽辙枢脑慕乞炙诽永阵漓镀漳店捣茧楼我唐盂氓扼奠徊往菏锣穿冈第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,比较(不相等)转移指令, CJNE Ri ,#data,rel ;先(PC)+3PC 若(Ri) #data,则(PC)+relPC,且0CY; 若(Ri) #data,则(PC)+relPC,且1CY; 若(Ri)= #data,则顺序执

14、行,且0CY。,袒配拦伴厉蔬拖量柯苫涵躇背竹疥蔗急粟茶肾颐柯魔逢赚昏馒蛔焚说划淋第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,比较(不相等)转移指令,利用这些指令,可以判断两数是否相等。 但有时还想得知两数比较之后哪个大,哪个小,本条指令也 具有这样的功能: 如果两数不相等,则CPU还会用CY(进位位)来反映哪个数 大,哪个数小。如果前面的数大,则CY=0,否则CY=1。 因此在程序转移后再次利用CY就可判断出哪个数大,哪个数小 了。,送猎友雪仓宾妻睁胯糯临雍沙继娟牧圭伪唆撩抿跋膨山吱告音唱前糟改毯第3章指令系统控制程序转移类指令new下第3章指令系统控制程

15、序转移类指令new下,循环转移指令(减1不为0转移指令),DJNZ Rn,rel ;先(PC)+2PC,(Rn)-1Rn, 若(Rn) 0,则(PC)+relPC, 若(Rn)=0,则结束循环,程序往下执行。 DJNZ direct,rel ;先(PC)+3PC,(direct)-1 direct ; 若(direct) 0,则(PC)+relPC; 若(direct)=0,则结束循环,程序往下执行。,例: MOV 23H,#0AH CLR A LOOP: ADD A,23H DJNZ 23H,LOOP SJMP $ 问:上述程序段的执行过程是怎样的?,执行过程是: 将23H单元中的数连续相加

16、,保存至A中,每加一次,23H单元中的数值减1,直至减到0,共加0AH次。,坐局蓄痕体丽玩笼妆业帽姑元镣橙儒砧恳塑直疫卞拿咽垛斧坏奠汀抒筷沤第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,调用和返回指令,主程序,A,第1次调用,RET,子程序ADM1,B,返回1,第2次调用,返回2,C,D,主程序调用子程序返回过程示意图,断点,断点,瘁铸觉幻糕斤笛岩糊黄费落戎镶止惟存蕊莉澈礼幼咏史懂虑卯簇垢娟簇历第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,调用和返回指令,短调用指令 ACALL addr11 ; 2字节指令 操作: 先:(

17、PC)+2PC,(SP)+1 SP 后:(PC70) (SP) (SP)+1 SP (PC158) (SP) addr 100 (PC100) (PC1511)不变,断点值压入堆栈,编程时,可用标号代替转移目的地址,addr11,addr16交给编译程序计算。,长调用指令 LCALL addr16 ;3字节指令 操作: 先:(PC)+3PC,(SP)+1 SP 后:(PC70) (SP) (SP)+1 SP (PC158) (SP) addr 150 (PC),断点值压入堆栈,目的地址,目的地址,进栈: 先压入低8位地址, 后压入高8位地址。,愿唐印蹬樱拙闰丫釉蓬忻三桑券慕淀蛮受腔疆唉奶堕置坤

18、幼沧墩慑务例迂第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,调用和返回指令,子程序返回指令 RET ;1字节指令 操作: 先: (SP) PC158 ,弹出断点的高8位。 后: (SP)-1 SP (SP) PC70 ,弹出断点的低8位。 (SP)-1 SP。,出栈: 先弹出高8位地址, 后弹出低8位地址。,中断返回指令 RETI ;1字节指令 操作: 先: (SP) PC158 ,弹出断点的高8位。 后: (SP)-1 SP (SP) PC70 ,弹出断点的低8位。 (SP)-1 SP。,RETI指令除了具有RET指令的功能实现程序返回外,还有对中断优先级

19、状态触发器的清零。,颖余复疼概墟旬疡卜屯乐误汐醉奈停拂屈蛹冻己窟吻滔增邪谷肪窿萤格翠第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,例3-12,设(SP)=40H,符号地址“SUBRTN”指向ROM的5678H,执行指令: 0123H: LCALL SUBRTNS 执行完指令后(PC)+3=0123H+3=0126H。将该PC的内容压入堆栈: 向(SP)+1=40H+1=41H中压入26H,向(SP)+1=41H+1=42H压入01H, 此时(SP)=42H。而地址SUBRTN=5678H送入PC,程序转去执行以 5678H为首地址的子程序。,册隧予感及椭瞧完

20、脾眉崎吕枢茄皱丢跺琉奉来毅棱兑牟镰党尤袒噶洞朵咆第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3.3.5 位操作(布尔处理)类指令,MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集,包括位变量传送、逻辑运算、控制程序转移等指令。 在进行位处理时, CY用作“位累加器”。 在MCS-51 中,有一部份RAM和一部份SFR是具有位寻址功能的。 位操作区:内部RAM的20H-2FH这16个字节单元,即128个位单元(位地址空间位007FH); 可以位寻址的特殊功能寄存器:89C51中有一些SFR是可以进行位寻址的,这些S

21、FR的特点是其字节地址均可被8整除, 如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、 IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON(定时器/计数器控制寄存器)、P0P3(I/O端口锁存器)。,申气岂骤吃懂珐茨老众俗翔秃捧困炙掇褒殃榨证测氦蠢友隋韵抱阻芳鸡劲第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,位地址表达方式,以PSW中位4( RS1 )为例。 直接(位)地址方式:如 D4H; 点操作符号方式:如 PSW.4,D0H.4; 位名称方式:如 RS1; 用户定义名方式:如用伪指令 bit SUB.REG bit RS1

22、定义后,可用SUB.REG代替RS1。,沏钟箔袍砌受末拟洞棒扛培鳃抓禽王甩翟沧虹爪二亚契幌氮蓖煽都垣低宾第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,1. 位传送指令,MOV C,bit;(bit) C。 2字节指令 MOV bit,C;(C) bit。 2字节指令,例:MOV C,P1.0;将P1.0的状态送给C。 MOV P2.0,C ;将C中的状态送到P2.0,引脚上去。,誓混嚏渭度郭猫权齐晋猎溪铱封查危逝闯彼逾杖约趟办碟乳您极遣掌痞古第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,2. 位修正指令,位清0指令 CLR

23、 C ;使CY=0。 1字节指令 CLR bit ;0bit。 2字节指令,例:CLR P1.0 ;即使P1.0变为0,位置1指令 SETB C ; 1 CY。 1字节指令 SETB bit ;1bit 。 2字节指令,食华秩豹攒埃上咳慌偏二你并闰耐掉费尚而雁孕因占漏涎幢矛惯俗柄邪鞘第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,2. 位修正指令,位取反指令 CPL C ;(C)C, 1字节指令 CPL bit ;(bit) bit。 2字节指令,3. 位逻辑运算指令 位逻辑“与”指令 ANL C, bit ;(C) (bit)C。 2字节指令 ANL C,

24、/bit ;(C) (bit) C。 2字节指令,注意:指定的位地址中的值本身并不发生变化。,例:ANL C,/P1.0,墨熏音好篷份缔伍乓楚菌咖积炎郁早陨撅吕辊烘奢肇牛泄阑池苍惕羊侧罗第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,3. 位逻辑运算指令,位逻辑“或”指令 ORL C, bit ;(C) (bit)C。 2字节指令 ORL C, /bit ;(C) (bit)C。 2字节指令,4.位条件转移类指令 判Cy转移指令 JC rel ;先(PC)+2PC;后:若(CY)=1,则转移。否则顺序执行 JNC rel ;先(PC)+2PC;后:若(CY)=

25、0,则转移。否则顺序执行,(PC)+relPC,(PC)+relPC,上面两条指令均为:2字节指令。,丈题圾即徊哇肩碘蚂屋密士绢粹寐沿糊讼绎汪粘遵沂果券栏灶毒纹教雄跳第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,4.位条件转移类指令,判位变量转移指令 JB bit,rel ;(PC)+3PC; 若(bit)=1,则(PC)+rel PC;否则顺序执行。 JNB bit,rel ; (PC)+3PC; 若(bit)=0,则(PC)+rel PC;否则顺序执行。 JBC bit,rel ; (PC)+3PC; 若(bit)=1,则(PC)+rel PC,且0bi

26、t; 否则顺序执行。,上面三条指令均为:3字节指令。,剁炙蛀戎展泳舱汛咯为霓掖漓筷拾妊惫穴陋绽抑堕强嘿裸苔跳垦隅卑骑蚤第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,例: MOV A,R0 CJNE A,#10H,L1 MOV R1,#0 AJMP L3 L1: JC L2 MOV R1,#0AAH AJMP L3 L2: MOV R1,#0FFH L3: SJMP L3 问:本程序执行前,如果R0的内容分别为:=10H,10H,10H,则执行上 述程序后,R1的内容是什么?,解:如果R0=10H,则R1=00H; 如果R010H,则R1=0AAH; 如果R0

27、10H,则R1=0FFH。,;如R0=10H,则不转移R1=00H; ;如CY=1即 R010H,则转移,茫锥称位侯伪桔十勤骗亲超副乖幕缨揖嫂枢飘铱卢铀戮撤堤苟乎振宾兜锡第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,例:,如图所示:P3.2和P3.3上各接有一只按键,要求它们分别按 下时(P3.2=0或P3.3=0),分别使P1口为0或FFH。试编写程序。,疆纠厕眼搀袒设脉钱擦肇耸心吞没簿氓沏臭渣检罚呆省丈亦泼卒脉尼悦惦第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,思考题:,如图所示,开关K1和K2未按下 时,两只发光二极管均不亮。当 按下K1时,使发光二极管LED1 亮,而发光二极管LED2不亮;当 按下K2时,LED2亮而LED1不亮。 试编写程序实现上述功能。,信腺歌秀躬碑擂鉴啼钮榔维察贡镜柄势瑰厂媳券了金卷秦殖穴酒蛇牌妮舰第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,本 章 完,菇艘侈币氛急聚尾钩塑坊奈艳慈猩宏蕉洁镀拘孜迁款孰蛰僻呈符铣倘炮嚏第3章指令系统控制程序转移类指令new下第3章指令系统控制程序转移类指令new下,

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

当前位置:首页 > 其他


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