控制转移类指令(17条)_第1页
控制转移类指令(17条)_第2页
控制转移类指令(17条)_第3页
控制转移类指令(17条)_第4页
控制转移类指令(17条)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七课,复习,3.4.4控制转移类指令(17条),3.4.5位操作指令(17条),3.4MCS-51指令系统的分类介绍,一个计算机“智商”的高低,取决于它的转移类指令的多少,特别是条件转移指令的多少。计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要改变程序的运行方向,即将程序跳转到某个指定的地址再顺序执行下去。某些指令具有修改程序计数器PC内容的功能,因为PC内容是将要执行的下一条指令的地址,所以计算机执行这类指令就能够控制程序转移到新的地址上去执行。,开头的话,ORG0100HLOOP:MOVP1,#55HLCALLTIME;调延时子程序TIMEMOVP1,#0AAHLCALLTIME;调延时子程序TIMESJMPLOOP;转移到LOOPEND,源程序与机器码:,转移的实质就是PC得到一个新的值:目标地址,执行完本指令,希望PC=0100H,学习方法及要求:在这个场景中,将会有三个角色出现:编程者、汇编程序及CPU。编程者写出如SJMPLOOP这样的指令,表达想要转移的意愿以及转向何处;汇编程序将指令汇编成机器码;CPU则依据对机器码的译码最终将目标地址赋给PC。,要求:会写不同的转移指令,掌握各转移指令的含义及使用条件。了解转移指令的汇编过程。了解CPU对转移指令的执行过程。,3.4.4控制转移类指令(17条),无条件转移指令(4条),空操作指令(1条),条件转移指令(8条),调用和返回指令,3.4.4控制转移类指令(17条),3.4.4控制转移类指令(17条),无条件转移指令是当程序执行到该指令时,程序无条件的转移到指令所提供的地址处执行。无条件转移指令有长转移、短转移、相对转移和间接转移4条指令。,AJMPaddr11LJMPaddr16SJMPrelJMPA+DPTR,1.无条件转移(4条),3.4.4控制转移类指令(17条),(1)长转移指令,LJMPaddr16,对于编程者:它是一条可以转向64K空间任一地址的转移。助记符后通常直接写目标行号。对与汇编程序:汇编后它有三个字节,操作码是02H,而其后的两个字节分别是目标地址的高、低字节。对与CPU:当它取得操作码02H后,紧跟其后获取的两个字节被送往PC,所以,本指令执行完,PC=目标地址。,例如:ORG0000HLJMPMAIN;02H00H30HORG0030HMAIN:MOVR0,#8,3.4.4控制转移类指令(17条),(2)近转移指令,AJMPaddr11,对于编程者:它是一条可以转向2K空间某地址的转移。助记符后通常直接写目标行号。对与汇编程序:汇编后它有两个字节,操作码的是后五位是00001,而其余的11位来自目标地址的后11位,格式为(a10a9a800001)(a7a0)。对与CPU:当它取得操作码,发现后五位是00001后,接着获取下一个字节的机器码,执行(PC)+2(PC),addr11(PC10-0)。程序计数器赋予新值-(PC15-11)不改变,低11位地址来自指令的标号地址。,3.4.4控制转移类指令(17条),(3)短转移指令,SJMPrel,对于编程者:目标地址可以在这条指令的前128B到后127B之间。助记符后通常仍然直接写目标行号。对与汇编程序:汇编后它有两个字节,操作码是80H,而其余一个字节表明转移的相对偏移量,用rel表示。汇编时rel=目标地址-(源地址+2)对与CPU:当它取得操作码为80H后,紧跟着获取的一个字节rel被用来计算新的PC值。执行时新的PC=(PC)当前+2+rel=源地址+2+目标地址-(源地址+2)=目标地址,3.4.4控制转移类指令(17条),补:指令系统的寻址方式,相对寻址是以程序计数器PC的当前值(指读出该2字节或3字节的跳转指令后,PC指向的下条指令的地址)为基准,加上指令中给出的相对偏移量rel形成目标地址的寻址方式。该类寻址方式主要用于跳转指令。,目的地址=转移指令所在的地址+转移指令的字节数+rel偏移量rel是一带符号的8位二进制数补码数范围是:128B+127B,相对寻址,设指令SJMP54H的机器码80H54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。,相对寻址,补:指令系统的寻址方式,偏移量rel是一带符号的8位二进制数补码数的说明:范围是:128B+127B目标地址与源地址的大小关系不定当目标地址大于源地址,则向下转移,rel为正数当目标地址小于源地址,则向上转移,rel为负数,例如:在ROM区0100H地址单元80H55H(SJMPrel)当PC=0100H,取得机器码后,会根据公式进行计算:PC=(PC)当前+2+rel=0100H+2+55H=0157H,向下转移,又如:若ROM区0100H地址单元80HF6H(rel是负数,为-0AH)当PC=0100H,取得机器码后,会根据公式进行计算:PC=(PC)当前+2+rel=0100H+2-0AH=00F8H,向上转移,再如:若ROM区0100H地址单元80HFEH(rel是负数,为-2H)当PC=0100H,取得机器码后,会根据公式进行计算:PC=(PC)当前+2+rel=0100H+2-2H=0100H,原地踏步、等待指令经常写成:SJMP$,3.4.4控制转移类指令(17条),在用汇编语言程序是,rel是由汇编程序在汇编过程中自动计算偏移地址,并且填入指令代码中;在手工汇编时,我们可用转移目的地址减转移指令所在源地址,再减转移指令字节数2得到偏移字节数rel。,3.4.4控制转移类指令(17条),rel=0100H-(010CH+2)=-0EH=F2H,(4)间接转移指令,JMPA+DPTR,这是一个转移指令。它的目标地址由操作数字段来描述。可以在ROM空间的64K内范围任意转移。当对DPTR赋值后,转移的目标地址还可以由A的内容决定。这条指令可代替众多的判别跳转指令,具有散转功能。,执行完(PC)=(A)+(DPTR),执行JMPA+DPTR后,会依A内容的不同转向不同的目标地址。,3.4.4控制转移类指令(17条),例如:根据累加器A中命令键键值,设计命令键操作程序入口跳转表:CLRC;清进位RLCA;键值乘2MOVDPTR,#JPTAB;指向命令键跳转表首址JMPA+DPTR;散转入命令键入口JPTAB:AJMPCCS0;双字节指令AJMPCCS1AJMPCCS2。CCS0:CCS1:,3.4.4控制转移类指令(17条),有条件转移指令共三类,8种,它们有如下共性:,指令字面上会用助记符给出一个判决规则,如(A)=0等。CPU执行时会依据当前的条件作出真/假判断,是真-则转移;是假-则继续顺序执行。指令中最后一个操作数表明转移的目标地址,通常是标号地址。所有的有条件转移均为短转移。本指令前要有意识地构建判决条件。,不同的指令其实就是以不同的助记符,给出不同的判决规则,2.有条件转移指令(8条),3.4.4控制转移类指令(17条),执行到此句,若(A)0,顺序执行;若(A)0,则转向ABC,JZrel;判决规则(A)=0JNZrel;判决规则(A)0,条件转移指令(2条),3.4.4控制转移类指令(17条),CJNEOPR1,OPR2,rel;判决规则(OPR1)(OPR2),CJNEA,data,rel;A(data),(PC)+3+rel(PC)CJNEA,#data,rel;A#data,(PC)+3+rel(PC)CJNERn,#data,rel;(Rn)#data,(PC)+3+relPC)CJNERi,#data,rel;(Rn)#data,(PC)+3+rel(PC),说明:()字节与字节比较()比较不等转,否则顺序执行()影响Cy与减法相同,但不改变操作数()三字节指令,rel是偏移量,比较不相等转移(4条),3.4.4控制转移类指令(17条),减1不为0转移(2条),DJNZRn,rel;(Rn)-1(Rn),(Rn)0,(PC)+2+rel(PC)DJNZdata,rel;(data)-1(data),(data)0,(PC)+2+rel(PC),例:延时子程序delay:MOVR7,#03HDJNZR7,$RET,DJNZOPR,rel;判决规则:(OPR)-10,3.4.4控制转移类指令(17条),3.调用和返回指令(4条),在程序设计中,有时因操作要求,需反复执行某段程序,于是引进了主程序和子程序的概念。子程序能被反复调用。这样可减少程序编写和调试的工作量。指令系统中一般都有主程序调用子程序的指令和从子程序返回主程序的指令。通常把具有一定功能的公用程序段作为子程序。子程序的入口标号可以成为子程序名(或子程序的入口地址),最后一条指令为返回主程序指令(RET)。,3.4.4控制转移类指令(17条),长调用指令LCALLaddr16(子程序的入口地址)短调用指令ACALLaddrll(子程序的入口地址)子程序返回指令RET中断返回指令RETI,上述指令的执行,最终都会令PC得到一个新值。,3.4.4控制转移类指令(17条),4.空操作指令(1条),NOP这条指令除了使PC加1,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时。,3.4.4控制转移类指令(17条),3.4.5位操作指令(17条),位数据传送指令(2条),位修正指令(6条),逻辑运算指令(4条),位条件转移类指令(5条),位寻址空间,在进行位操作时,进位标志位CY布尔累加器(位累加器),简写成C。位寻址区:片内RAM字节地址20H2FH单元中连续的128位(位地址00H7FH)部分特殊功能寄存器SFR(通常用位名来访问,如RS0、OV),3.4.5位操作指令(17条),点操作符号:如PSW.4(D0H).4位名称方式:如RS1直接写位地址:如D4H用户定义名方式:如用伪指令bitflagbit10HSETBflag;(10H)=1,位地址的表达方式:,3.4.5位操作指令(17条),位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。,MOVC,bit;bitCY,某位数据送CY。MOVbit,C;CYbit,CY数据送某位,例:将位地址20H的一位数传送到位地址30H中:MOVC,20HMOV30H,C,1、位传送指令(2条),若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、P1口及P3口内容的变化情况。MOVP1.3,CMOVP1.4,CMOVC,P1.6MOVP3.6,CMOVC,P1.0MOVP3.4,C,CY=1,P1=10101111B,P3=00111100B,3.4.5位操作指令(17条),这些指令对CY及可寻址位进行置位或复位操作,共有四条指令。,CLRC;0CY,清CY。CLRbit;0bit,清某一位。SETBC;1CY,置位CY。SETBbit;1bit,置位某一位。例如:CLRP3.0指令,就是将P3.0清零。,2、位置位复位指令(4条),3.4.5位操作指令(17条),3、位运算指令(6条),ANLC,bit;(CY)(bit)CY。ANLC,/bit;(CY)(/bit)CY。ORLC,bit;(CY)(bit)CY。ORLC,/bit;(CY)(/bit)CY。CPLC;(/CY)CY。CPLbit;(/bit)bir。,位运算包括与、或、非三种逻辑运算,与字节逻辑运算比较,没有异或。与、或运算,位累加器C一定参与。,3.4.5位操作指令(17条),JCrel;判决规则C=1JNCrel;判决规则C=0,4、位控制转移指令(5条),JBbit,rel;判决规则位状态为1转移。JNBbit,rel;判决规则位状态为0转移。JBCb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论