8051:JMP指令以意想不到的方式工作

时间:2015-03-26 23:37:31

标签: assembly embedded microcontroller 8051

我在Keil uVision工作89C51。

我以某种方式习惯了使用

JMP label   ; goto label

根据数据表,JMP应写为JMP @A+DPTR,对于我正在使用的内容,SJMPLJMPAJMP应该使用。

尽管如此,我使用它的方式可以正常工作

问题是,为什么?这是uVision对语言的补充吗?

1 个答案:

答案 0 :(得分:3)

这是一个优化,插入适当的跳转指令,因此您不必确定哪个是必需的。

来自Ax51 User's Guide

  

通用跳转和调用是两个没有的指令助记符   表示特定的操作码。 JMP可以组装成SJMP,AJMP,LJMP或   EJMP。 CALL可以组装成ACALL,LCALL或ECALL。这些通用   助记符总是评估指令,不一定是   最短的,将到达指定的程序地址操作数。

如果您需要特定类型的跳转,则可以始终使用相应的助记符。