控制转移类指令(17条)

上传人:j****9 文档编号:54945334 上传时间:2018-09-22 格式:PPT 页数:35 大小:364KB
返回 下载 相关 举报
控制转移类指令(17条)_第1页
第1页 / 共35页
控制转移类指令(17条)_第2页
第2页 / 共35页
控制转移类指令(17条)_第3页
第3页 / 共35页
控制转移类指令(17条)_第4页
第4页 / 共35页
控制转移类指令(17条)_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《控制转移类指令(17条)》由会员分享,可在线阅读,更多相关《控制转移类指令(17条)(35页珍藏版)》请在金锄头文库上搜索。

1、第七课,复习,3.4.4 控制转移类指令(17条),3.4.5 位操作指令(17条),3.4 MCS-51指令系统的分类介绍,一个计算机“智商”的高低,取决于它的转移类指令的多少,特别是条件转移指令的多少。计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要改变程序的运行方向,即将程序跳转到某个指定的地址再顺序执行下去。某些指令具有修改程序计数器PC内容的功能,因为PC内容是将要执行的下一条指令的地址,所以计算机执行这类指令就能够控制程序转移到新的地址上去执行。,开头的话,ORG 0100H LOOP:MOV P1,#55HLCALL TIME ;调延时子程序TIMEMOV

2、P1,#0AAHLCALL TIME ;调延时子程序TIMESJMP LOOP ;转移到LOOPEND,源程序与机器码:,转移的实质就是PC得到一个新的值:目标地址,执行完本指令,希望PC=0100H,学习方法及要求:在这个场景中,将会有三个角色出现:编程者、汇编程序及CPU。编程者写出如SJMP LOOP这样的指令,表达想要转移的意愿以及转向何处;汇编程序将指令汇编成机器码;CPU则依据对机器码的译码最终将目标地址赋给PC。,要求:会写不同的转移指令,掌握各转移指令的含义及使用条件。了解转移指令的汇编过程。了解CPU对转移指令的执行过程。,3.4.4 控制转移类指令(17条),无条件转移指令

3、(4条),空操作指令(1条),条件转移指令(8条),调用和返回指令,3.4.4 控制转移类指令(17条),3.4.4 控制转移类指令(17条),无条件转移指令是当程序执行到该指令时,程序无条件的转移到指令所提供的地址处执行。无条件转移指令有长转移、短转移、相对转移和间接转移4条指令。,AJMP addr11 LJMP addr16 SJMP rel JMP A+DPTR,1. 无条件转移 (4条),3.4.4 控制转移类指令(17条),(1) 长转移指令,LJMP addr16,对于编程者:它是一条可以转向64K空间任一地址的转移。助记符后通常直接写目标行号。 对与汇编程序:汇编后它有三个字节

4、,操作码是02H,而其后的两个字节分别是目标地址的高、低字节。 对与CPU:当它取得操作码02H后,紧跟其后获取的两个字节被送往PC,所以,本指令执行完,PC=目标地址。,例如: ORG 0000HLJMP MAIN ;02H 00H 30H ORG 0030H MAIN: MOV R0,#8,3.4.4 控制转移类指令(17条),(2) 近转移指令,AJMP addr11,对于编程者:它是一条可以转向2K空间某地址的转移。助记符后通常直接写目标行号。 对与汇编程序:汇编后它有两个字节,操作码的是后五位是00001,而其余的11位来自目标地址的后11位,格式为(a10a9a8 00001)(a

5、7a0)。 对与CPU:当它取得操作码,发现后五位是00001后,接着获取下一个字节的机器码,执行(PC)+2(PC),addr11(PC10-0)。程序计数器赋予新值-(PC15-11)不改变,低11位地址来自指令的标号地址 。,3.4.4 控制转移类指令(17条),(3) 短转移指令,SJMP rel,对于编程者:目标地址可以在这条指令的前128B到后127B之间。助记符后通常仍然直接写目标行号。 对与汇编程序:汇编后它有两个字节,操作码是80H,而其余一个字节表明转移的相对偏移量,用rel表示。汇编时rel=目标地址-(源地址+2) 对与CPU:当它取得操作码为80H后,紧跟着获取的一个

6、字节rel被用来计算新的PC值。执行时新的PC=(PC)当前+2+rel =源地址+2+目标地址-(源地址+2)=目标地址,3.4.4 控制转移类指令(17条),补:指令系统的寻址方式,相对寻址是以程序计数器PC的当前值(指读出该2字节或3字节的跳转指令后,PC指向的下条指令的地址)为基准,加上指令中给出的相对偏移量 rel 形成目标地址的寻址方式 。该类寻址方式主要用于跳转指令。,目的地址=转移指令所在的地址 + 转移指令的字节数+ rel 偏移量rel是一带符号的8位二进制数补码数 范围是:128 B +127B,相对寻址,设指令SJMP 54H的机器码80H 54H存放在2000H处,当

7、执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。,相对寻址,补:指令系统的寻址方式,偏移量rel是一带符号的8位二进制数补码数的说明: 范围是: 128 B +127B 目标地址与源地址的大小关系不定当目标地址大于源地址,则向下转移,rel为正数当目标地址小于源地址,则向上转移,rel为负数,例如:在ROM区0100H地址单元 80H 55H( SJMP rel)当PC=0100H,取得机器码后,会根据公式进行计算:PC=(PC)当前+2+rel =010

8、0H+2+55H=0157H,向下转移,又如:若ROM区0100H地址单元 80H F6H( rel是负数,为-0AH)当PC=0100H,取得机器码后,会根据公式进行计算:PC=(PC)当前+2+rel =0100H+2-0AH=00F8H,向上转移,再如:若ROM区0100H地址单元 80H FEH( rel是负数,为-2H)当PC=0100H,取得机器码后,会根据公式进行计算:PC=(PC)当前+2+rel =0100H+2-2H=0100H,原地踏步、等待指令经常写成:SJMP $,3.4.4 控制转移类指令(17条),在用汇编语言程序是,rel是由汇编程序在汇编过程中自动计算偏移地址

9、,并且填入指令代码中;在手工汇编时,我们可用转移目的地址减转移指令所在源地址,再减转移指令字节数2得到偏移字节数rel。,3.4.4 控制转移类指令(17条),rel=0100H-(010CH+2)=-0EH =F2H,(4) 间接转移指令,JMP A+DPTR,这是一个转移指令。它的目标地址由操作数字段来描述。可以在ROM空间的64K内范围任意转移。当对DPTR赋值后,转移的目标地址还可以由A的内容决定。这条指令可代替众多的判别跳转指令,具有散转功能。,执行完(PC)=(A)+(DPTR),执行JMP A+DPTR后,会依A内容的不同转向不同的目标地址。,3.4.4 控制转移类指令(17条)

10、,例如:根据累加器A中命令键键值,设计命令键操作 程序入口跳转表:CLR C ;清进位RLC A ;键值乘2MOV DPTR,#JPTAB;指向命令键跳转表首址JMP A+DPTR ;散转入命令键入口 JPTAB: AJMP CCS0 ;双字节指令AJMP CCS1AJMP CCS2。 CCS0: CCS1:,3.4.4 控制转移类指令(17条),有条件转移指令共三类,8种,它们有如下共性:,指令字面上会用助记符给出一个判决规则,如(A)=0等。 CPU执行时会依据当前的条件作出真/假判断,是真-则转移;是假-则继续顺序执行。 指令中最后一个操作数表明转移的目标地址,通常是标号地址。 所有的有

11、条件转移均为短转移。 本指令前要有意识地构建判决条件。,不同的指令其实就是以不同的助记符,给出不同的判决规则,2. 有条件转移指令(8条),3.4.4 控制转移类指令(17条),执行到此句,若(A)0,顺序执行;若 (A) 0,则转向ABC,JZ rel; 判决规则(A)= 0 JNZ rel; 判决规则(A)0,条件转移指令(2条),3.4.4 控制转移类指令(17条),CJNE OPR1,OPR2,rel;判决规则(OPR1) (OPR2),CJNE A, data, rel ; A(data),(PC)+ 3 + rel(PC) CJNE A, #data, rel ; A#data,(

12、PC)+ 3 + rel(PC) CJNE Rn, #data, rel ;(Rn)#data,(PC)+ 3 + relPC) CJNE Ri, #data, rel;(Rn)#data,(PC)+ 3 + rel(PC),说明: ()字节与字节比较()比较不等转,否则顺序执行()影响Cy与减法相同,但不改变操作数()三字节指令,rel是偏移量,比较不相等转移(4条),3.4.4 控制转移类指令(17条),减1不为0转移(2条),DJNZ Rn, rel ; (Rn)-1(Rn),(Rn)0,(PC)+ 2 + rel(PC) DJNZ data, rel ; (data)-1(data),

13、(data)0, (PC)+ 2 + rel(PC),例:延时子程序delay: MOV R7, #03H DJNZ R7, $RET,DJNZ OPR, rel; 判决规则:(OPR)-1 0,3.4.4 控制转移类指令(17条),3. 调用和返回指令(4条),在程序设计中,有时因操作要求,需反复执行某段程序,于是引进了主程序和子程序的概念。子程序能被反复调用。这样可减少程序编写和调试的工作量。指令系统中一般都有主程序调用子程序的指令和从子程序返回主程序的指令。通常把具有一定功能的公用程序段作为子程序。子程序的入口标号可以成为子程序名(或子程序的入口地址),最后一条指令为返回主程序指令(RE

14、T)。,3.4.4 控制转移类指令(17条),长调用指令LCALL addr16(子程序的入口地址) 短调用指令ACALL addrll (子程序的入口地址) 子程序返回指令 RET 中断返回指令 RETI,上述指令的执行,最终都会令PC得到一个新值。,3.4.4 控制转移类指令(17条),4 . 空操作指令(1条),NOP 这条指令除了使PC加1,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时。,3.4.4 控制转移类指令(17条),3.4.5 位操作指令(17条),位数据传送指令(2条),位修正指令(6条),逻辑运算指令(4条),位条件转移类指令(5条),位寻址空间,在进行位操作

15、时,进位标志位CY布尔累加器(位累加器),简写成C。 位寻址区: 片内RAM字节地址20H2FH单元中连续的128位(位地址00H7FH) 部分特殊功能寄存器SFR(通常用位名来访问,如RS0、OV),3.4.5 位操作指令(17条),点操作符号: 如PSW.4(D0H).4 位名称方式: 如RS1 直接写位地址: 如D4H 用户定义名方式:如用伪指令bitflag bit 10HSETB flag ;(10H)=1,位地址的表达方式:,3.4.5 位操作指令(17条),位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。,MOV C,bit ;bitCY,某位数据送CY。MOV bit,C ;CYbit,CY数据送某位,例:将位地址20H的一位数传送到位地址30H中:MOV C,20H MOV 30H,C,1、位传送指令(2条),若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、P1口及P3口内容的变化情况。MOV P1.3,CMOV P1.4,CMOV C,P1.6MOV P3.6,CMOV C,P1.0MOV P3.4,C,CY=1 , P1=10101111B, P3=00111100B,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号