2020第7讲转移指令及位操作指令.pptVIP

  • 10
  • 0
  • 约2.78千字
  • 约 22页
  • 2020-12-07 发布于天津
  • 举报
控制转移指令 ? 1 、无条件转移指令: ? 长转移类指令: LJMP addr16 ? 绝对转移类指令: AJMP addr11 短转移指令: SJMP rel 间接转移指令: JMP @A+DPTR ? 我们在编写汇编语言源程序时,可以直接写成: LJMP 标号 ;即转移到标号处 AJMP 标号 SJMP 标号 JMP 标号 2. 条件转移指令 ( 8 条) 条件转移指令是指在满足一定条件时进行相对转 移,否则程序继续执行本指令的下一条指令。 (1) 判 A 内容是否为 0 转移指令( 2 条) JZ rel ;如果 A=0 ,则转移,否则顺序执行。 JNZ rel ;如果A≠0,就转移。 我们在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。 JNZ 标号 ;即转移到标号处 (2) 比较转移指令( 4 条) CJNE A , #data , rel CJNE A , direct , rel CJNE Rn , #data , rel CJNE @Ri , #data , rel 同样地,使用时,我们可以将 rel 理解成标号,即: CJNE A , #data ,标号 CJNE A , direct ,标号 CJNE Rn , #data ,标号 CJNE @Ri , #data ,标号 (3) 减 1 条件转移指令( 2 条) DJNZ Rn , rel DJNZ direct , rel 3 .子程序调用和返回 (1) 调用指令( 2 条) LCALL addr16 ;长调用指令 ACALL addr11 ;短调用指令 上面两条指令都是在主程序中调用子程序,两者的区别 : 对短调用指令,被调用子程序入口地址必须与调用指令的 下一条指令的第一字节在相同的 2KB 存储区之内。 使用时可以用: LCALL 标号 ;标号表示子程序首地址 ACALL 标号 来调用子程序。 (2) 返回指令 ( 2 条) 子程序执行完后必须回到主程序,如何 返回呢?只要执行一条返回指令就可以了。 RET ;子程序返回指令 RETI ;中断子程序返回指令 两者不能互换使用。 4. 空操作指令 ( 1 条) NOP ? 例:利用子程序调用编写令 20H-2AH , 30H-3EH , 40H-4FH 三个区域清零的程 序 ORG 1000H MOV SP,#70H MOV R0,#20H MOV R2,#0BH ACALL ZERO MOV R0,#30H MOV R2,#0FH ACALL ZERO MOV R0,#40H MOV R2,#10H ACALL ZERO ZERO: MOV @R0,#00H INC R0 DJNZ R2,ZERO RET END 例:从 P1 口的 P1.0 管脚输出周期为 10 个机器 周期的方波 CLR P1.0 LOOP: CPL P1.0 NOP NOP SJMP LOOP ? 练习: ? 1 、已知某单片机监控程序始址为 A080H , 问用什么办法是单片机开机后自动执行 监控程序 ? 2 、已知 MA=0500H ,问 8051 单片机执行 如下指令 ? MOV SP , #70H ? MA : LCALL 8192H ? 堆栈中数据如何变化, PC 中内容是什么 ? 3 、已知外部 RAM 中以 300

文档评论(0)

1亿VIP精品文档

相关文档