《6 控制转移指.ppt》由会员分享,可在线阅读,更多相关《6 控制转移指.ppt(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、控制转移指令控制转移指令PC寄存器寄存器PC程序计数器程序计数器(Program Counter)存放下一条将要执行的指令的地址存放下一条将要执行的指令的地址十六位的寄存器十六位的寄存器用户不能直接访问用户不能直接访问执行某条指令的步骤:执行某条指令的步骤:取指令取指令PC指向下一条指令指向下一条指令执行指令执行指令控制转移指令控制转移指令PC寄存器寄存器执行如下指令执行如下指令执行如下指令执行如下指令ORGORG100H100HMOVMOVA,#2A,#2MOVCMOVCA,A+PCA,A+PCDB DB 01,02,03,0401,02,03,04步骤:步骤:1.1.取指令取指令取指令取指
2、令MOV A,#2MOV A,#22.PC=100H+2=102H2.PC=100H+2=102H3.3.执行执行执行执行MOV A,#2MOV A,#2A=2A=24.4.取指令取指令取指令取指令MOVC A,A+PCMOVC A,A+PC5.PC=102H+1=103H5.PC=102H+1=103H6.6.执行指令执行指令执行指令执行指令A+PC=2+103H=105HA+PC=2+103H=105HA=(105H)A=(105H)控制转移指令控制转移指令无条件转移指令无条件转移指令LJMPLJMP addr PCaddr16 本指令占本指令占3字节字节在在64K的空间内任意跳转的空间内
3、任意跳转ORGORGORGORG100H100H100H100HMOV A,#0MOV A,#0MOV A,#0MOV A,#0LJMP DISPLJMP DISPLJMP DISPLJMP DISP.ORGORGORGORG3000H3000H3000H3000HDISP:MOV R0,DPHDISP:MOV R0,DPHDISP:MOV R0,DPHDISP:MOV R0,DPH.控制转移指令控制转移指令无条件转移指令无条件转移指令AJMPAJMP addr11 PC(PC)(1111,1000,0000,0000)addr 11跳转范围:与当前指令距离跳转范围:与当前指令距离1K的地址空
4、间的地址空间ORGORGORGORG100H100H100H100HMOV MOV MOV MOV A,#0A,#0A,#0A,#0AJMP AJMP AJMP AJMP DISPDISPDISPDISPMOVMOVMOVMOVA,#1A,#1A,#1A,#1.ORGORGORGORG3000H3000H3000H3000HDISP:MOV DISP:MOV DISP:MOV DISP:MOV A,#2A,#2A,#2A,#2.ORGORGORGORG100H100H100H100HMOV MOV MOV MOV A,#0A,#0A,#0A,#0AJMP AJMP AJMP AJMP DISP
5、DISPDISPDISPMOVMOVMOVMOVA,#1A,#1A,#1A,#1.ORGORGORGORG320H320H320H320HDISP:MOV DISP:MOV DISP:MOV DISP:MOV A,#2A,#2A,#2A,#2.控制转移指令控制转移指令无条件转移指令无条件转移指令SJMPSJMP SJMP relrelPCPC+relPCPC+rel跳转范围:与当前指令距离跳转范围:与当前指令距离跳转范围:与当前指令距离跳转范围:与当前指令距离-128B+127B-128B+127B的地址空间的地址空间的地址空间的地址空间ORGORGORGORG0000H0000H0000H0
6、000HSJMPSJMPSJMPSJMPMAINMAINMAINMAINORGORGORGORG0030H0030H0030H0030HMAIN:MAIN:MAIN:MAIN:MOV MOV MOV MOV A,#2A,#2A,#2A,#2.ORG100H0100:SJMP130H;80 2E0102:SJMP0A0H;80 9C0104:LJMP4000H;02 40 000107:AJMP400H;81 000109:AJMP000H;01 00目标地址目标地址目标地址目标地址-当前指令地址当前指令地址当前指令地址当前指令地址-指令长度指令长度指令长度指令长度实际目标地址实际目标地址实际目
7、标地址实际目标地址A10A10A9A9A8A80 00 00 00 01 1A7A7A6A6A5A5A4A4A3A3A2A2A1A1A0A0控制转移指令控制转移指令散转指令(间接转移)散转指令(间接转移)JMP A+DPTR;PC(A)+(DPTR)本指令将累加器本指令将累加器A中的中的8位无符号整位无符号整数和数和16位数据指针相加,其和装入程序位数据指针相加,其和装入程序器器PC。控制程序转向目标地址去执行。控制程序转向目标地址去执行。运算不影响累加器运算不影响累加器A和数据指针和数据指针DPTR原原内容,不影响标志位。内容,不影响标志位。控制转移指令控制转移指令间接转移举例间接转移举例例
8、:例:当内存单元当内存单元当内存单元当内存单元40H40H中内容为中内容为中内容为中内容为1 1、2 2、3 3、4 4时,分别转到时,分别转到时,分别转到时,分别转到MENU1MENU1、MENU2MENU2、MENU3MENU3、MENU4MENU4。ORGORG 0000H0000H.MOVMOV A,40HA,40HDECDECA AMOVMOV B,#3B,#3MULMUL AB AB ;A=A*3;A=A*3MOVMOV DPTR,#MENUTABLEDPTR,#MENUTABLEJMPJMPA+DPTRA+DPTRORGORG 1000H1000HMENUTABLE:MENUTA
9、BLE:LJMP LJMP MENU1MENU1 LJMP LJMP MENU2MENU2 LJMP LJMP MENU3MENU3 LJMP LJMP MENU4MENU4MENU1:MENU1:MOVMOV A,#31HA,#31HMENU2:MENU2:MOVMOV A,#32HA,#32HMENU3:MENU3:MOVMOV A,#33HA,#33HMENU4:MENU4:MOVMOV A,#34HA,#34H控制转移指令控制转移指令条件转移条件转移判零转移判零转移判零转移判零转移 JZ JZ Label1Label1 如如如如A=0A=0,则跳到则跳到则跳到则跳到Label1Labe
10、l1中执行中执行中执行中执行;否则顺序执行否则顺序执行否则顺序执行否则顺序执行 JNZ JNZ Label2Label2如如如如 A0A0,则跳到则跳到则跳到则跳到Label2Label2中执行中执行中执行中执行;否则顺序执行否则顺序执行否则顺序执行否则顺序执行MOVMOVA,30HA,30HMOVMOVB,31HB,31HSUBBSUBBA,BA,BJZJZEQUALEQUALMOVMOVA,#44HA,#44HSJMPSJMPNEXTNEXTEQUAL:EQUAL:MOVMOVA,#55HA,#55HNEXT:NEXT:若若若若 (30H)=12H,(31H)=13H(30H)=12H,(
11、31H)=13H,则,则,则,则A?A?若若若若 (30H)=13H,(31H)=13H(30H)=13H,(31H)=13H,则,则,则,则A?A?控制转移指令控制转移指令条件转移条件转移判判判判C C转移转移转移转移 JC JC Label1Label1 若若若若C=1 C=1,则跳到则跳到则跳到则跳到Label1Label1中执行中执行中执行中执行;否则顺序执行否则顺序执行否则顺序执行否则顺序执行 JNC JNC Label2Label2如如如如 C=0C=0,则跳到则跳到则跳到则跳到Label2Label2中执行中执行中执行中执行;否则顺序执行否则顺序执行否则顺序执行否则顺序执行控制转
12、移指令控制转移指令累加器累加器C转移举例转移举例例例例例:把把把把30H30H和和和和31H31H单单单单元元元元内内内内容容容容相相相相加加加加,结结结结果果果果送送送送入入入入40H40H单单单单元元元元,若若若若相相相相加的结果大于加的结果大于加的结果大于加的结果大于255255,则,则,则,则40H40H位单元置位单元置位单元置位单元置1 1否则置否则置否则置否则置0 0。MOVMOV A,30HA,30HMOVMOV R0,31HR0,31HADDADDA,R0A,R0MOVMOV 40H,A40H,AJCJCSETBITSETBITCLRCLR40H40HSJMPSJMP CODE
13、ENDCODEENDSETBIT:SETBIT:SETB 40HSETB 40HCODEEND:CODEEND:控制转移指令控制转移指令条件转移条件转移判位变量转移判位变量转移 JB JB bit,Label1bit,Label1若位单元若位单元若位单元若位单元=1=1,则跳到则跳到则跳到则跳到Label1Label1中执行中执行中执行中执行;否则顺序执行否则顺序执行否则顺序执行否则顺序执行 JNB JNB bit,Label2bit,Label2若位单元若位单元若位单元若位单元=0=0,则跳到,则跳到,则跳到,则跳到Label2Label2中执行中执行中执行中执行;否则顺序执行否则顺序执行否
14、则顺序执行否则顺序执行 JBC JBC bit,Label3 bit,Label31 1)若位单元若位单元若位单元若位单元=1=1,则跳到,则跳到,则跳到,则跳到Label3Label3中执行中执行中执行中执行,否则顺序执行否则顺序执行否则顺序执行否则顺序执行2 2)不管位单元内容是)不管位单元内容是)不管位单元内容是)不管位单元内容是0 0还是还是还是还是1 1,执行本指令均要把位单元置,执行本指令均要把位单元置,执行本指令均要把位单元置,执行本指令均要把位单元置0 0控制转移指令控制转移指令循环转移指令循环转移指令循环转移指令循环转移指令DJNZ Rn,Label1;1)RnRn-1;2)
15、若若Rn0,则则跳跳至至Label1处处,否否则则顺顺序序执行执行DJNZDirect,Label2;1)directdirect)-12)若)若direct0则跳至则跳至Label2处,处,否则顺序否则顺序执行执行 控制转移指令控制转移指令循环转移指令举例循环转移指令举例例例例例:把把把把外外外外部部部部RAMRAM中中中中的的的的2000H2050H2000H2050H单单单单元元元元内内内内容容容容送送送送至至至至内内内内部部部部RAMRAM的的的的30H80H30H80H单元中单元中单元中单元中MOVMOVDPTR,#2000HDPTR,#2000HMOVMOVR0,#30HR0,#3
16、0HMOVMOVR3,#51HR3,#51HMOVRAM:MOVRAM:MOVXMOVXA,DPTRA,DPTRMOVMOVR0,AR0,AINCINCR0R0INCINCDPTRDPTRDJNZ DJNZ R3,MOVRAMR3,MOVRAM控制转移指令控制转移指令循环转移指令举例循环转移指令举例2例例例例:把把把把内内内内部部部部RAMRAM中中中中的的的的30H30H开开开开始始始始的的的的5050个个个个单单单单元元元元内内内内容容容容相相相相加加加加,结结结结果果果果送送送送到到到到20H20H(高高高高字字字字节节节节)、21H21H(低字节)单元中低字节)单元中低字节)单元中低字
17、节)单元中MOVMOV R2,#50R2,#50MOVMOV R0,#30HR0,#30HMOVMOV A,#0A,#0MOVMOV B,#0B,#0SUM:SUM:ADDADDA,R0A,R0JNCJNCNEXTNEXTINCINCB BNEXT:INCNEXT:INCR0R0DJNZDJNZ R2,SUMR2,SUMSTORE:STORE:MOVMOV 20H,B20H,BMOV MOV 21H,A21H,A控制转移指令控制转移指令循环转移指令举例循环转移指令举例编编编编程程程程:把把把把外外外外部部部部RAMRAM中中中中的的的的2000H2050H2000H2050H单单单单元元元元内内内内容容容容送送送送至至至至外外外外部部部部RAMRAM的的的的30H80H30H80H单元单元单元单元MOVMOV DPTR,#2000HDPTR,#2000HMOVMOV R0,#30HR0,#30HMOVMOV R3,#51HR3,#51HMOVRAM:MOVRAM:MOVX A,DPTRMOVX A,DPTRMOVMOV P2,#00HP2,#00HMOVX R0,AMOVX R0,AINC INC R0R0INC INC DPTRDPTRDJNZDJNZ R3,MOVRAMR3,MOVRAM
限制150内