1 / 15
文档名称:

单片机3.5控制转移指令.ppt

格式:ppt   大小:313KB   页数:15页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机3.5控制转移指令.ppt

上传人:ranfand 2016/9/6 文件大小:313 KB

下载得到文件列表

单片机3.5控制转移指令.ppt

相关文档

文档介绍

文档介绍: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位地址, 所调子程序首地址必须在 2K 页内。(2). 长调用指令 LCALL addr16 调用子程序指令。所调子程序首地址可在 64K 地址的任何位置。(3). 从子程序返回指令 RET 3 : P64 (1) 绝对跳转指令 AJMP addr11 可使程序在 2k 页内跳转,即可改变低 11位地址。(2) 长跳转指令 LJMP addr16 可使程序跳转到 64K 程序存储器的任何位置。(3) 相对短跳转指令 SJMP rel 其中 rel 为偏移量,指令表中用(e) 表示。 rel 的数字指出 PC 跳转应从现地址向上或向下跳转多少字节。 rel 为8位有符号二进制数,它的范围是-128 ~ +127 ,用补码表示。 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 使用以上调用与转移指令注意: ★以上指令均为无条件,执行该类指令时程序计数器 PC 一定转向非顺序单元执行。★调用与返回指令常成对使用,返回指令 RET 应出现在每一个子程序的末尾。★调用与返回指令都要有栈操作,使用该类指令前要建立堆栈,以便保护断点。★转移指令与调用子程序指令的异同: 相同之处是它们都是改变 PC 值,使程序转入非顺序单元执行。不同之处是:调用与返回指令在子程序执行结束后一定返回原断点地址,因此一定有栈操作。转移指令转走后不一定回到原断点,因此不必堆栈保存断点地址。 6 ★三种转移指令: AJMP addr11 短跳转地址范围 2K 字节二字节指令 LJMP addr16 长跳转地址范围 64K 字节三字节指令 SJMP rel 相对跳转地址范围 256 字节二字节指令它们就跳转的操作来说没有任何区别,适用于不同的跳转地址范围。 7 二、有条件转移指令: 该类指令是当符合某种条件时,程序转移到另一地址执行,不符合这种条件时,程序按原顺序继续执行。 : 以累加器 A的内容为 0或非 0为条件判断转移。 P68 JZ rel ;A 的内容为 0则相对转移,否则顺序执行。 JNZ rel ;A 的内容非 0则相对转移,否则顺序执行。 rel 偏移量的定义同前。例 MOV A , #56H