我在Keil uVision工作89C51。
我以某种方式习惯了使用
JMP label ; goto label
根据数据表,JMP
应写为JMP @A+DPTR
,对于我正在使用的内容,SJMP
,LJMP
和AJMP
应该使用。
尽管如此,我使用它的方式可以正常工作。
问题是,为什么?这是uVision对语言的补充吗?
答案 0 :(得分:3)
这是一个优化,插入适当的跳转指令,因此您不必确定哪个是必需的。
通用跳转和调用是两个没有的指令助记符 表示特定的操作码。 JMP可以组装成SJMP,AJMP,LJMP或 EJMP。 CALL可以组装成ACALL,LCALL或ECALL。这些通用 助记符总是评估指令,不一定是 最短的,将到达指定的程序地址操作数。
如果您需要特定类型的跳转,则可以始终使用相应的助记符。