控制转移类指(17条).ppt
《控制转移类指(17条).ppt》由会员分享,可在线阅读,更多相关《控制转移类指(17条).ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七课第七课 复习复习3.4.4控制转移类指令(控制转移类指令(17条)条)3.4.5位操作指令(位操作指令(17条)条)3.4MCS-51指令系统的分类介绍指令系统的分类介绍v 一个计算机一个计算机“智商智商”的高低,取决于它的转移类指的高低,取决于它的转移类指令的多少,特别是令的多少,特别是条件转移条件转移指令的多少。计算机运行过指令的多少。计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要指令,需要改变程序的运行方向改变程序的运行方向,即将程序跳转到某个,即将程序跳转到某个指定的地址再顺序执行下去。某些指令具有指定的地址
2、再顺序执行下去。某些指令具有修改程序计修改程序计数器数器PCPC内容内容的功能,因为的功能,因为PCPC内容是将要执行的下一条指内容是将要执行的下一条指令的地址,所以计算机执行这类指令就能够控制程序转令的地址,所以计算机执行这类指令就能够控制程序转移到新的地址上去执行。移到新的地址上去执行。开头的话开头的话 ORG 0100HORG 0100HORG 0100HORG 0100H LOOPLOOPLOOPLOOP:MOV P1,#55HMOV P1,#55HMOV P1,#55HMOV P1,#55H LCALL TIMELCALL TIMELCALL TIMELCALL TIME ;调延时子
3、程序;调延时子程序;调延时子程序;调延时子程序TIMETIMETIMETIME MOV P1,#0AAH MOV P1,#0AAH MOV P1,#0AAH MOV P1,#0AAH LCALL TIMELCALL TIMELCALL TIMELCALL TIME ;调延时子程序调延时子程序调延时子程序调延时子程序TIMETIMETIMETIME SJMP LOOPSJMP LOOPSJMP LOOPSJMP LOOP ;转移到;转移到;转移到;转移到LOOPLOOPLOOPLOOP END END END END开始开始开始开始55H55H送送送送P P1 1口口口口延时延时延时延时2 2秒
4、秒秒秒AAHAAH送送送送P P1 1口口口口延时延时延时延时2 2秒秒秒秒流水式彩灯程序流程图流水式彩灯程序流程图流水式彩灯程序流程图流水式彩灯程序流程图 源程序与机器码:源程序与机器码:ORG 0100HORG 0100HORG 0100HORG 0100H LOOPLOOPLOOPLOOP:MOV P1,#55HMOV P1,#55HMOV P1,#55HMOV P1,#55H LCALL TIMELCALL TIMELCALL TIMELCALL TIME MOV P1,#0AAH MOV P1,#0AAH MOV P1,#0AAH MOV P1,#0AAH LCALL TIMELCA
5、LL TIMELCALL TIMELCALL TIME SJMP LOOPSJMP LOOPSJMP LOOPSJMP LOOP END END END END ROMROMROMROM中的机器码中的机器码中的机器码中的机器码0100H 75H 90H 55H0100H 75H 90H 55H0100H 75H 90H 55H0100H 75H 90H 55H 12H*H*H12H*H*H12H*H*H12H*H*H 75H 90H AAH 75H 90H AAH 75H 90H AAH 75H 90H AAH 12H*H*H12H*H*H12H*H*H12H*H*H010CH 80010CH
6、 80010CH 80010CH 80H H H H relrelrelrel 转移的实质就是转移的实质就是PC得到一个新的值:目标地址得到一个新的值:目标地址执行完本指令,希望PC=0100H学习方法及要求:学习方法及要求:在这个场景中,将会有三个角色出现:编程者、汇编程在这个场景中,将会有三个角色出现:编程者、汇编程序及序及CPU。编程者写出如编程者写出如SJMPLOOP这样的指令,表达想要转移这样的指令,表达想要转移的意愿以及转向何处;的意愿以及转向何处;汇编程序将指令汇编成机器码;汇编程序将指令汇编成机器码;CPU则依据对机器码的译码最终将目标地址赋给则依据对机器码的译码最终将目标地址
7、赋给PC。要求:要求:会写不同的转移指令,掌握各转移指令的含义及使用会写不同的转移指令,掌握各转移指令的含义及使用条件。条件。了解转移指令的汇编过程。了解转移指令的汇编过程。了解了解CPU对转移指令的执行过程。对转移指令的执行过程。3.4.4控制控制转转移移类类指令(指令(17条)条)无条件转移指令(无条件转移指令(4条条)空操作指令(空操作指令(1条)条)条件转移指令(条件转移指令(8条)条)调用和返回指令调用和返回指令3.4.4 3.4.4 控制控制转转移移类类指令(指令(1717条)条)3.4.4 3.4.4 控制控制转转移移类类指令(指令(1717条)条)v无条件转移指令是当程序执行到
8、该指令时,程序无条无条件转移指令是当程序执行到该指令时,程序无条件的转移到指令所提供的地址处执行。无条件转移指件的转移到指令所提供的地址处执行。无条件转移指令有长转移、短转移、相对转移和间接转移令有长转移、短转移、相对转移和间接转移4 4条指令。条指令。vAJMPaddr11vLJMPaddr16vSJMPrelvJMPA+DPTR1.1.无条件无条件转转移移 (4 4条)条)3.4.4 3.4.4 控制控制转转移移类类指令(指令(1717条)条)(1)(1)长转移指令长转移指令LJMPaddr16v对于编程者:它是一条可以转向对于编程者:它是一条可以转向64K64K空间任一地址的转空间任一地
9、址的转移。助记符后通常直接写目标行号。移。助记符后通常直接写目标行号。v对与汇编程序:汇编后它有三个字节,操作码是对与汇编程序:汇编后它有三个字节,操作码是02H,02H,而而其后的两个字节分别是目标地址的高、低字节。其后的两个字节分别是目标地址的高、低字节。v对与对与CPUCPU:当它取得操作码:当它取得操作码02H02H后,紧跟其后获取的两个后,紧跟其后获取的两个字节被送往字节被送往PCPC,所以,本指令执行完,所以,本指令执行完,PC=PC=目标地址。目标地址。例如:例如:ORGORGORGORG0000H0000H0000H0000HLJMPLJMPLJMPLJMPMAINMAINMA
10、INMAIN ;02H 00H 30H 02H 00H 30H 02H 00H 30H 02H 00H 30H ORGORGORGORG0030H0030H0030H0030HMAINMAINMAINMAIN:MOVMOVMOVMOVR0,#8R0,#8R0,#8R0,#83.4.4 3.4.4 控制控制转转移移类类指令(指令(1717条)条)(2)(2)近转移指令近转移指令AJMPaddr11v对于编程者:它是一条可以转向对于编程者:它是一条可以转向2K2K空间某地址的转移。空间某地址的转移。助记符后通常直接写目标行号。助记符后通常直接写目标行号。v对与汇编程序:汇编后它有两个字节,操作码的
11、是后五对与汇编程序:汇编后它有两个字节,操作码的是后五位是位是00001,00001,而其余的而其余的1111位来自目标地址的后位来自目标地址的后1111位,格式位,格式为(为(a10a9a8 00001a10a9a8 00001)(a7(a7a0)a0)。v对与对与CPUCPU:当它取得操作码,发现后五位是:当它取得操作码,发现后五位是0000100001后,接后,接着获取下一个字节的机器码,执行着获取下一个字节的机器码,执行(PCPC)+2+2(PCPC),),addr11addr11(PC10-0PC10-0)。程序计数器赋予新值)。程序计数器赋予新值-(PC15-PC15-1111)不
12、改变,低)不改变,低1111位地址来自指令的标号地址位地址来自指令的标号地址 。3.4.4 3.4.4 控制控制转转移移类类指令(指令(1717条)条)(3)(3)短转移指令短转移指令SJMPrelv对于编程者:目标地址可以在这条指令的前对于编程者:目标地址可以在这条指令的前128B128B到后到后127B127B之间。助记符后通常仍然直接写目标行号。之间。助记符后通常仍然直接写目标行号。v对与汇编程序:汇编后它有两个字节,操作码是对与汇编程序:汇编后它有两个字节,操作码是80H,80H,而而其余一个字节表明转移的相对偏移量,用其余一个字节表明转移的相对偏移量,用relrel表示。表示。v 汇
13、编时汇编时relrel=目标地址目标地址-(源地址(源地址+2+2)v对与对与CPUCPU:当它取得操作码为:当它取得操作码为80H80H后,紧跟着获取的一个后,紧跟着获取的一个字节字节relrel被用来计算新的被用来计算新的PCPC值。值。v 执行时新的执行时新的PC=PC=(PCPC)当前)当前+2+rel +2+rel v =源地址源地址+2+2+目标地址目标地址-(源地址(源地址+2+2)v =目标地址目标地址3.4.4 3.4.4 控制控制转转移移类类指令(指令(1717条)条)补:指令系统的寻址方式补:指令系统的寻址方式 相对寻址是相对寻址是以程序计数器以程序计数器PCPC的的当前
14、值当前值(指读出该指读出该2 2字节或字节或3 3字节的跳转指令后,字节的跳转指令后,PCPC指向的下条指令的地址指向的下条指令的地址)为基准,加为基准,加上指令中给出的相对偏移量上指令中给出的相对偏移量 rel rel 形成目标地址的寻址方式形成目标地址的寻址方式 。该类寻址方式主要用于跳转指令。该类寻址方式主要用于跳转指令。目的地址目的地址=转移指令所在的地址转移指令所在的地址 +转移指令的字节数转移指令的字节数+relrel 偏移量偏移量relrel是一带符号的是一带符号的8 8位二进制数补码数位二进制数补码数范围是:范围是:128 B128 B+127B +127B 相对寻址相对寻址相
15、对寻址相对寻址54H54H程序存储区程序存储区程序存储区程序存储区54H54HA A2001H2001H20H20HPCPC02H02H 2056H2056HXXXX80H80H2056H2056H2000H2000H设指令设指令SJMP54H的机器码的机器码80H54H存放在存放在2000H处,当处,当执行到该指令时,先从执行到该指令时,先从2000H和和2001H单元取出指令,单元取出指令,PC自动自动变为变为2002H;再把再把PC的内容与操作数的内容与操作数54H相加,形成目标地址相加,形成目标地址2056H,再送回再送回PC,使得程序跳转到使得程序跳转到2056H单元继续执行。单元继
16、续执行。相相相相对寻对寻对寻对寻址址址址补补:指令系:指令系统统的的寻寻址方式址方式偏移量偏移量relrel是一是一带符号带符号的的8 8位二进制数补码数的说明:位二进制数补码数的说明:1.1.范围是:范围是:128 B128 B+127B+127B2.2.目标地址与源地址的大小关系不定目标地址与源地址的大小关系不定 当目标地址大于源地址,则向下转移,当目标地址大于源地址,则向下转移,relrel为正数为正数当目标地址小于源地址,则向上转移,当目标地址小于源地址,则向上转移,relrel为负数为负数例如:例如:在在ROMROM区区0100H0100H地址单元地址单元 80H 55H80H 55
17、H(SJMP SJMP relrel)当当PC=0100HPC=0100H,取得机器码后,会根据公式进行计算:,取得机器码后,会根据公式进行计算:PC=PC=(PCPC)当前当前+2+rel=0100H+2+55H=0157H,2+rel=0100H+2+55H=0157H,向下转移向下转移又如又如:若:若ROMROM区区0100H0100H地址单元地址单元 80H F6H80H F6H(relrel是负数,为是负数,为-0AH0AH)当当PC=0100HPC=0100H,取得机器码后,会根据公式进行计算:,取得机器码后,会根据公式进行计算:PC=PC=(PCPC)当前当前+2+rel=010
18、0H+2-0AH=00F8H,2+rel=0100H+2-0AH=00F8H,向上转移向上转移再如:再如:若若ROMROM区区0100H0100H地址单元地址单元 80H FEH80H FEH(relrel是负数,为是负数,为-2H-2H)当当PC=0100HPC=0100H,取得机器码后,会根据公式进行计算:,取得机器码后,会根据公式进行计算:PC=PC=(PCPC)当前当前+2+rel=0100H+2-2H=0100H,2+rel=0100H+2-2H=0100H,原地踏步、等待原地踏步、等待指令经常写成:指令经常写成:SJMP$SJMP$3.4.4 3.4.4 控制控制转转移移类类指令(
19、指令(1717条)条)在用汇编语言程序是,在用汇编语言程序是,rel是由汇编程序在汇编过程中是由汇编程序在汇编过程中自动计算偏移地址,并且填入指令代码中;在手工汇编时,自动计算偏移地址,并且填入指令代码中;在手工汇编时,我们可用转移目的地址减转移指令所在源地址,再减转移我们可用转移目的地址减转移指令所在源地址,再减转移指令字节数指令字节数2得到偏移字节数得到偏移字节数rel。ORG 0100HORG 0100HORG 0100HORG 0100H LOOPLOOPLOOPLOOP:MOV P1,#55HMOV P1,#55HMOV P1,#55HMOV P1,#55H LCALL TIMELC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 控制 转移 17
限制150内