找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2155|回复: 13
收起左侧

单片机汇编语言SJMP问题

[复制链接]
ID:883031 发表于 2022-11-29 21:48 | 显示全部楼层 |阅读模式
在用SJMP指令时,偏移量rel只能用符号表示吗?如下AAA,
ORG 0000H
LJMP MAIN
ORG 0050H
MAIN:
        SJMP AAA
        MOV 50H,#30H
AAA:        MOV R0,#40H
        MOV A,R0
        MOV A,@R0
        SJMP $

rel偏移量为03,对该指令的解释中rel应该为二进制补码,但写成SJMP 03H,就会跳转到0003H地址处。根据运行的结果看,rel好像是个地址。
这里的rel除了用AAA表示外还有其他表示方法吗?
求解答。


回复

使用道具 举报

ID:883031 发表于 2022-11-29 22:49 | 显示全部楼层
Hephaestus 发表于 2022-11-29 22:37
你完全可以这么写:

我的意思是,SJMP的偏移量只能用符号来表示吗?
SJMP AAA
能不能在SJMP后面直接给出偏移量的值。
回复

使用道具 举报

ID:883031 发表于 2022-11-29 23:17 | 显示全部楼层

$的值为FEH(补码),那么$+3等于01h,用$+5可以跳到AAA处,+3还是不能正确跳转。
回复

使用道具 举报

ID:883031 发表于 2022-11-29 23:22 | 显示全部楼层

感谢!用这种表示方法可以,需要+5。
回复

使用道具 举报

ID:883031 发表于 2022-11-30 00:39 | 显示全部楼层
Hephaestus 发表于 2022-11-29 23:56
你的这种做法除了让别人和你自己看不懂以外,还有别的现实意义吗?

你的说法很有道理,我赞同。多谢指教!
这是在给别人讲的时候,需要讲清楚rel的值是多少,当然,用符号表示是最简便的,而且在编程的时候也不会去一条指令一条指令的去计算这个偏移量,只是觉得rel既然是偏移量,能不能用数值直接表示,试了一下,总是不能正确的跳转,就想把这个问题搞清楚。
回复

使用道具 举报

ID:883031 发表于 2022-12-17 18:34 | 显示全部楼层
多谢各位的指教。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表