控制转移类指令和位操作指令.doc_第1页
控制转移类指令和位操作指令.doc_第2页
控制转移类指令和位操作指令.doc_第3页
控制转移类指令和位操作指令.doc_第4页
全文预览已结束

下载本文档

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

文档简介

控制转移类指令和位操作指令(一).控制转移类指令计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要改变程序运行方向,即将程序跳转到某个指定的地址再顺序执行下去。控制转移类指令的功能就是根据要求修改程序计数器PC的内容,以改变程序运行方向,实现转移。控制转移类指令可分为:无条件转移、条件转移、绝对转移、相对转移和调用、返回指令。下面我们将分类介绍。1无条件转移指令(4条)LJMP add16 ;add16PC,无条件跳转到add16地址,可在64KB范围内转移,称为长转移指令AJMP add11 ;add11PC,无条件转向add11地址,在2KB范围内转移SJMP rel ;PC2relPC,相对转移,rel是偏移量,8 位有符号数,范围128127,即可向后跳转128,向前可跳转127JMP A+DPTR ;A+DPTRPC ,属散转指令,无条件转向A与DPTR内容相加后形成的新地址例 执行指令LJMP 9100H不管这条指令存放在哪里,执行时将使程序转移到9100H,和AJMP,SJMP指令是有差别的。例 程序2000H MOV R0 , #10H;10HPC 2002H SJMP 03H;PC+2+rel=2002H+2+03H=2007HPC 2006H 2007H 从说明中可见,执行SJMP 03H 指令后,马上跳转到2007H地址执行程序。2条件转移指令(8条)条件转移指令是根据某种特定条件转移的指令。条件满足时转移,条件不满足时则顺序执行下面的指令。JZ rel ;A=0转向PC+2+relPC,A0顺序执行JNZ rel ;A转向PC+2+relPC ,A0顺序执行CJNE A, direct, rel ;A (direct)转向PC+3+relPC且当A(direct),Cy=0;当Adata,Cy=0;当A data,Cy=0,当Rndata ,Cy=0,当(Ri)data,Cy=1;(Ri)=data, PC+3PC顺序执行DJNZ Rn, rel ;Rn1Rn ,Rn 0转向PC+2+relPC ;Rn=0,PC+2PC顺序执行DJNZ direct, rel ;(direct)1(direct),(direct) 0转向 PC+2+relPC;(direct)=0 ,PC+2PC顺序执行注意:1)CJNE类指令借用进位标志Cy作为比较结果的标志位。从指令中可知,目的操作数内容小于原操作数内容Cy置1,反之Cy清0,该类指令多用于分支程序。2) DJNZ指令执行时Rn或direct先减1,然后再判断Rn或direct内容是否等于0。不为0则转,为0顺序执行。DJNZ用在循环程序中,控制循环次数很方便。3) JZ和JNZ的操作数只有一个,是对A的内容的进行判断的指令。例 以下程序的循环次数是多少,最后(R0)?MOV R0 , #0LL: DJNZ R0 , LL分析:由于DJNZ是减1再判断大小的,因为R0=0,所以第一次执行DJNZ R0 , LL后R0FFH255,则程序要执行的次数为256次,R0最后的值为0。解:程序要循环的次数为256次,最后R0=03.调用、返回、控操作指令在程序设计中,常常要把具有一定功能的公用程序编制成子程序。当主程序转至子程序时用调用指令,而在子程序的最后安排一条返回指令,使执行完子程序后再返回到主程序。(1) LCALL addr16 ;调用入口地址为addr16的子程序这是一条长调指令,可调用64KB范围内的子程序,因此,可放在程序的任何位置。指令的执行过程分两步:第一步把断点(当前执行指令的下一条指令地址)压入堆栈。第二步将调用的子程序的入口地址装入PC。即addr16(16位地址)PC,转向执行子程序。(2) ACALL addr11 ;子程序入口地址为addr11的子程序这是一条短调指令,只能实现2KB范围内的子程序的调用。其指令执行过程与LCALL指令一样。但是需要注意的是:ACALL中addr11只占用PC的PC.0PC.10位。(3) RET ;放在子程序最后,使程序准确返回到主程序断点处执行过程为:(SP)PC.8PC.15断点地址高字节送入PC SP1SP,(SP) PC.0PC.7断点低字节送入PC,这时PC中为主程序断点地址,程序准确返回到调用指令的下一条。例 设SP=62H,(62H)=07H,(61H)=30H,执行指令RET结果:SP=60H,(PC)=0730H,CPU从0730H开始执行程序。(4) RETI;中断返回指令该指令用于中断服务程序,使中断程序结束后准确返回到主程序断点处,执行过程同RET,它还能清除优先级状态。(5) NOP ;空操作执行该指令时,CPU只进行取指令、译码,而不进行任何操作,故称为控操作。常用于产生一个机器周期延时。(二)位操作指令MCS-51单片机的特色之一是具有很强的位处理功能。位操作指令又称为布尔指令,其功能是对内部RAM中可进行位操作的区域进行位操作。 在进行位操作时,位累加器C即进位标志Cy,位地址是片内RAM字节地址20H2FH单元中连续的128个位(位地址00H7FH)和部分功能寄存器。凡SFR中字符等地址能被8整除的特殊功能寄存器都具有可寻址的位地址,其中ACC(位地址E0HE7H),B(位地址F0HF7H)和片内RAM中128个位都可作软件标志或存储位变量。1. 位数据传送类指令(2条)MOV C , bit ;(bit) C,寻址位的状态送入CMOV bit , C ;C(bit),C的状态送入位地址中2. 位修正指令(6条)CLR C ;0C, 清0累加器CLR bit;0(bit);清0寻址位CPL C ;/CC,取反CPL bit ;(/bit) (bit),寻址位取反SETB C ;1C,C置1SETB bit ;1 (bit),寻址位置13. 位逻辑运算指令(4条)ANL C , bit;C(bit) C,寻址位和C“与”,结果放在CANL C , /bit ;C(/bit) C,寻址位的非和C“与”,结果放在CORL C , bit;C(bit) C,寻址位和C“或”,结果放在CORL C , /bit ;C(bit) C,寻址位和C的非“或”,结果放在C4. 位条件转移指令(5条)JC rel;C=1转向PC+2+relPC C=0顺序执行PC+2PCJNC rel ;C=0转向PC+2+relPC C=1顺序执行PC+2PCJB bit , rel ;(bit) =1转向PC+3+relPC (bit) =0顺序执行PC+3PCJNB bit , rel ;(bit) =0转向PC+3+relPC (bit) =1顺序执行PC+3PCJBC bit , rel ;(bit) =1转向PC+3+relPC;同时0(bit) (bit) =0顺序执行PC+3PC注意:JBC与JB指令区别,前者转移后并把寻址位清0,后者只转移不清0寻址位。例 设P1为输入口,P3.0作输出线,执行下列指令:MOV C , P1.0 ;(P1.0) CANL C , P1.1 ;(C)(P1.1) CANL C , /P1.32;(C)(/P1.2) CMOV P3.0 , C ;CP3.0 结果是:P3.0(P1.0) (P1.1) (/P1.2)例 用位操作指令编程计算逻辑方程 P1.5=ACC.0 (B.0P1.2)

温馨提示

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

评论

0/150

提交评论