[求助] 关于JMP指令的用法问题,请教一下

一沙一世   2023-10-9 11:39 楼主

51单片机的教材中 ,讲  JMP指令的用法时,都是说JMP指令的用法是  JMP   @A+DAPT 这种用法,但我看到有同事直接JMP  标签这样来用,代码如下,象JMP  B1这样用  请问 也是正确的吗?

 

A1:

    JMP  B1

B1:

    JNB  B_DISABLE , XSCL3E

    JMP  ZCCX

回复评论 (10)

【讲  JMP指令的用法时,都是说JMP指令的用法是  JMP   @A+DAPT 这种用法】

那不是 DAPT,而是DPTR,是 data pointer 的缩写。

JMP  @A+DPTR  当然是合法的指令。而跳转指令只有SJMP、AJMP、LJMP。

点赞  2023-10-9 12:02

但是,某些汇编程序允许 JMP addr16 这种用法。遇到 JMP addr16 这样的指令时,汇编程序会根据 addr16 地址的远近,自动选择,使用AJMP或者LJMP指令。不过,不是所有的汇编程序都有这个功能。

点赞  2023-10-9 12:05
引用: maychang 发表于 2023-10-9 12:05 但是,某些汇编程序允许 JMP addr16 这种用法。遇到 JMP addr16 这样的指令时,汇编程序会根据 addr16 地址 ...

非常感谢。这个JMP  B1 指令是用在 伟福6000 中的,这个伟福6000 是您所说的可以将JMP  自动 切换成  AJMP 或 LJMP指令的编译器吗?

点赞  2023-10-9 13:16

汇编一般现在都在什么产品上用?

点赞  2023-10-9 14:29
引用: 一沙一世 发表于 2023-10-9 13:16 非常感谢。这个JMP  B1 指令是用在 伟福6000 中的,这个伟福6000 是您所说的可以将JMP  ...

【这个伟福6000 是您所说的可以将JMP  自动 切换成  AJMP 或 LJMP指令的编译器吗?】

这个,我就不知道了。

点赞  2023-10-9 14:32

有些汇编器支持

5$[0E~~]A[X@64ZWSM%CS}G.png  

 

KI7VM9TASZO{H`SV1S4_BIV.png  

keil 用的好像是a51编译器。

 

这样你自己不用区分是段内段外了。

 

但用散转指令JMP   @A+DPTR时后面的表格就还是要用SJMP、AJMP、LJMP之一统一,这样表格地址才能对齐。

9}IH(_N49Z2QKN6Y[KQS23C.png  

本帖最后由 damiaa 于 2023-10-9 16:19 编辑
点赞  2023-10-9 16:02
引用: damiaa 发表于 2023-10-9 16:02 有些汇编器支持       keil 用的好像是a51编译器。   这样你自己 ...

感谢。您的截图是从哪个资料上截的,可否提供下资料的链接地址。谢谢。

点赞  2023-10-9 16:48

JMP @A+DPTR。这种方式通常在需要动态计算跳转地址时使用。

点赞  2023-10-9 23:09
一沙一世 发表于 2023-10-9 16:48 感谢。您的截图是从哪个资料上截的,可否提供下资料的链接地址。谢谢。
VW.pdf (4.26 MB)
(下载次数: 0, 2023-10-10 08:48 上传)
 
~ULD%{[[)VM7NT]JXXAO_DX.png  
keil A51 你可以自行验证,也可以去看A51手册的指令说明。应该在keil c51的安装包里面有。我现在很久没搞汇编了。以前用过。所以还有些印象。
本帖最后由 damiaa 于 2023-10-10 09:11 编辑
点赞  2023-10-10 08:48
一沙一世 发表于 2023-10-9 16:48 感谢。您的截图是从哪个资料上截的,可否提供下资料的链接地址。谢谢。

 

11.png
a51.chm (291.04 KB)
(下载次数: 0, 2023-10-10 09:41 上传)
本帖最后由 damiaa 于 2023-10-10 09:42 编辑
点赞  2023-10-10 09:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复