单片机3.5控制转移指令.ppt_第1页
单片机3.5控制转移指令.ppt_第2页
单片机3.5控制转移指令.ppt_第3页
单片机3.5控制转移指令.ppt_第4页
单片机3.5控制转移指令.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第五节 控制转移指令 这类指令可使程序转向非顺序单元执行,使程序发生分支或循环。 一、无条件转移指令: 1.调用与返回指令: P71 调用子程序与从子程序返回操作解释: 8000 MOV A , #05H 8250 BBD: - - - - - 8002 - - - - - 8252 - - - - - 8004 - - - - - - - - - - - 800A ACALL BBD PC 800C 将800C压入堆栈保存 RET PC修改为BBD的地址 返回操作 从堆栈中弹出断点,2,(1).绝对调用指令 ACALL addr11 调用子程序指令。该指令可改变程序计数器PC的低11位地

2、址,所调子程序首地址必须在2K页内。 (2).长调用指令 LCALL addr16 调用子程序指令。所调子程序首地址可在64K地址的任何位置。 (3).从子程序返回指令 RET,3,2.无条件跳转指令: P64 (1)绝对跳转指令 AJMP addr11 可使程序在2k页内跳转,即可改变低11位地址。 (2)长跳转指令 LJMP addr16 可使程序跳转到64K程序存储器的任何位置。 (3)相对短跳转指令 SJMP rel 其中rel为偏移量,指令表中用(e)表示。rel的数字指出PC跳转应从现地址向上或向下跳转多少字节。rel为8位有符号二进制数,它的范围是-128 +127,用补码表示。

3、rel为负值时表示从大地址向小地址跳转,为正值时表示从小地址向大地址跳转。 例,4,8000 MAIN: MOV A , #01H 8002 ADD A , #02H 8006 SJMP MAIN (DIR) PC 8008 MOV A , R0 800F DIR: MOV A , R2 偏移量rel的计算公式为(e) = 目的地址 PC当前值,注意用补码表示。PC当前值为跳转指令下面一条指令的地址,即8008H。 上例中跳转到MAIN时: (e) = 8000H 8008H = F8H (-8) 跳转到DIR时: (e) = 800FH 8008H = 07H,5,使用以上调用与转移指令注意

4、: 以上指令均为无条件,执行该类指令时程序计数器PC一定转向非顺序单元执行。 调用与返回指令常成对使用,返回指令RET应出现在每一个子程序的末尾。 调用与返回指令都要有栈操作,使用该类指令前要建立堆栈,以便保护断点。 转移指令与调用子程序指令的异同: 相同之处是它们都是改变PC值,使程序转入非顺序单元执行。 不同之处是:调用与返回指令在子程序执行结束后一定返回 原断点地址,因此一定有栈操作。 转移指令转走后不一定回到原断点,因此不必 堆栈保存断点地址。,6,三种转移指令: AJMP addr11 短跳转 地址范围2K字节 二字节指令 LJMP addr16 长跳转 地址范围64K字节 三字节指

5、令 SJMP rel 相对跳转 地址范围256字节 二字节指令 它们就跳转的操作来说没有任何区别,适用于不同的跳转地址范围。,7,二、有条件转移指令: 该类指令是当符合某种条件时,程序转移到另一地址执行,不符合这种条件时,程序按原顺序继续执行。 1.判零相对转移指令: 以累加器A的内容为0或非0为条件判断转移。 P68 JZ rel ;A的内容为0则相对转移,否则顺序执行。 JNZ rel ;A的内容非0则相对转移,否则顺序执行。 rel偏移量的定义同前。 例 MOV A , #56H SUBB A , R0 JZ 8016H ;当减法结果为0时跳到8016H地址执行 否则继续往下执行。,8,

6、2.比较相对转移指令: P68 CJNE (目的字节) , (源字节) , rel 操作:将目的字节内容与源字节内容相比较,若不等则相对转移, 若相等则顺序执行。 若(目的字节)(源字节)则C = 1,否则C = 0 该指令执行后操作数内容不变。 例 CJNE A , #04H , MAIN ;(A) 04H则跳转到MAIN标号 (A) = 04H顺序执行 如果(A )04H则C= 1 CJNE R0 , #05H , DIR ;(R0)05H则跳DIR标号 CJNE A , 30H , STOP ;(A)(30H)则跳STOP标号,9,3.控制转移指令: P70 DJNZ 第一操作数 , r

7、el 操作:第一操作数内容减1,结果非0则相对转移,结果为0则 顺序执行。 第一操作数可以是DATA或Rn 。 该指令不影响任何标志位。 例 DJNZ R0 , LOOP ;(R0) 1结果非0转LOOP标号 DJNZ 30H , SQ ;(30H) 1结果非0转SQ标号,10,4.以位地址的内容为判断条件的转移指令: (1) JC rel ;( C ) = 1跳转;( C ) = 0顺序向下执行 (2) JNC rel ;( C ) = 0跳转;( C ) = 1顺序向下执行 (3) JB bit , rel ;(bit) = 1跳转;(bit) = 0顺序问下执行 (4) JNB bit

8、, rel ;(bit) = 0跳转;(bit) = 1顺序问下执行 (5) JBC bit , rel ; (bit) = 1跳转,且将该位内容清0; (bit) = 0顺序向下执行 三、其它指令 1.RETI 从中断返回指令。后述。 2.NOP 空操作指令。执行该指令CPU不作任何操作,只是 延时一个机器周期的时间。,11,四、控制转移指令综合举例: 例1 判断P1口输入的数据若为负则转DIR,否则转MIN。 方法1:8000 E5 90 MIN : MOV A,P1 8002 33 RLC A 8003 40 e1 JC DIR 8005 80 e2 SJMP MIN 8007 800A

9、 DIR: 求偏移量:e = 目的地址 下条指令地址补码 e1 = 800A H - 8005H补码=05H e2 = 8000H 8007H补码=-7补码=F9H,12,方法2: MIN:MOV A,P1 ANL A,#80H ;切取符号位 JNZ DIR LJMP MIN 方法3: MIN: MOV A,P1 JB E7H ,DIR ;A可位寻址,其符号位地址 为E7H AJMP MIN,13,例2判断50H单元內容若为FBH则转DIR,若为FEH则转MIN。 方法1: MOV R0 ,#50H CJNE R0 ,#0FBH ,S1 AJMP DIR S1: CJNE R0 ,#0FE ,S2 MIN: MOV A,50H . S2: . . DIR: ,14,方法2: MOV A, 50H XRL A, #0FBH JZ DIR MOV A,50H XRL A,#0FEH J

温馨提示

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

评论

0/150

提交评论