单片机的一条指令: SJMP $ 是啥意思

 我来答
博学小赵爱生活
高能答主

2019-05-26 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:456 获赞数:111853

向TA提问 私信TA
展开全部

SJMP $ 意思即跳转到本指令的起始位置开始执行,这样就变成了循环执行,即原地跳转,一般用来等待中断。

但是本指令也不宜滥用。这是一条死循环指令,如果系统的中断是开放的,那么SJMP $指令实际上是在等待中断,当有中断申请后,CPU 转至执行中断服务程序。

中断返回时,仍然返回到这条死循环指令,继续等待中断,而不是返回到该指令的下一条指令。这是因为执行SJMP $后,PC 仍指向这条指令,中断的断点就是这条指令的首字节地址。

51单片机指令。

功能:短转移(Short Jump)

格式:SJMP rel ;

作用: PC <-PC+2 , PC <-PC+rel短转移指令(-128—+127范围内的转移指令)。

短转移指令的功能是先使程序计数器PC加1两次(即:取出指令码),然后把加2后的地址和rel相加作为目标转移地址。

因此,短转移指令是一条相对转移指令,是一条双字节双周期指令,指令码格式为:80H rel(操作码 地址偏移量),这里,80H是SJMP指令的操作码;rel是地址偏移量,在程序中也常采用符号地址,上机运行前才被代真成二进制形式。

扩展资料:

单片机指令系统:

MCS-51共111条指令。

指令分类:

1、按指令所占的字节来分:

(1)单字节指令(49条) 如MOV A,R2,(机器码11101010)

(2)双字节指令(46条) 如MOV A,#0BH,(机器码74H,0BH)

(3)三字节指令(16条) 如MOV 0BH, #0BH ,(机器码75H,0BH,0BH)

2、按指令的执行时间来分:(1个机器周期为12个时钟周期)

(1) 1个机器周期(64条) ,如MOV A,R2 MOV A,#0BH,

(2) 2个机器周期(45条) ,如MOV 0BH, #0BH

(3) 4个机器周期(2条) ,乘、除指令。

指令格式:

一、按操作码和操作数分。

1、操作码:用来规定指令进行什么操作。

如MOV A,#0BH,(机器码74H,0BH)

其中74H为操作码,指明“将立即数送入ACC”这种操作;

2、操作数:则是指令操作的对象,有可能是数据,也可能是地址。

如MOV A,#0BH,其中#0BH为操作数。

有单字节指令、双字节指令、三字节不同长度的指令,格式不同: 

(1)单字节指令:操作码、操作数同在一个字节中。

(2)双字节指令:操作码+操作数。

(3)三字节指令:操作码+操作数+操作数。

二、按助记符和操作数分:

操作助记符[目的操作数,源操作数]

如MOV A,#0BH,(机器码74H,0BH),其中:

(1)MOV为操作助记符, 指明“内部数据传送”这种操作;

(2)A为目的操作数,指明“数据传送的目的寄存器”是A;

(3) #0BH为源操作数。

参考资料来源:百度百科-单片机指令

参考资料来源:百度百科-SJMP

休闲娱乐chl
高粉答主

2019-08-19 · 每个回答都超有意思的
知道大有可为答主
回答量:5627
采纳率:100%
帮助的人:144万
展开全部

SJMP $意味着跳转到该指令的开头以开始执行,因此它变为循环执行,就地跳转,通常用于等待中断。

但是本指令也不宜滥用。这是一条死循环指令,如果系统的中断是开放的,那么SJMP $指令实际上是在等待中断,当有中断申请后,CPU 转至执行中断服务程序。

中断返回时,仍然返回到这条死循环指令,继续等待中断,而不是返回到该指令的下一条指令。这是因为执行SJMP $后,PC 仍指向这条指令,中断的断点就是 [3]  这条指令的首字节地址。

扩展资料

1)在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。

在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行,比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。

2)要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是一个8位的寄存器,所以只提供低8位地址。因为有时扩展的外部RAM的数量比较少,少于或等于256个,就只需要提供8位地址就够了。

3)使用时应当首先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。

参考资料来源:百度百科-SJMP

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南霸天mxw
推荐于2017-09-19 · 知道合伙人教育行家
南霸天mxw
知道合伙人教育行家
采纳数:6329 获赞数:169944
本人毕业于河西学院计算机系,本科学位,自2008年毕业以来任九年级数学教师至今。

向TA提问 私信TA
展开全部
  单片机指令:SJMP $ 意思即跳转到本指令的起始位置开始执行,这样就变成了循环执行,即原地跳转,一般用来等待中断。
  但是本指令也不宜滥用。这是一条死循环指令,如果系统的中断是开放的,那么SJMP $指令实际上是在等待中断,当有中断申请后,CPU 转至执行中断服务程序。中断返回时,仍然返回到这条死循环指令,继续等待中断,而不是返回到该指令的下一条指令。这是因为执行SJMP $后,PC 仍指向这条指令,中断的断点就是[3] 这条指令的首字节地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淡_水_河_边
2011-03-09 · TA获得超过2179个赞
知道小有建树答主
回答量:732
采纳率:50%
帮助的人:447万
展开全部
$表示本地址,SJMP $表示循环的执行本条指令.
追问
在几条延时程序中:
DEL0: MOV R6,#100
DEL1:MOV R5,#125
DJNZ R5,$ DJNZ R6,DEL1 DJNZ 40H, DEL0 此处的 DJNZ R5,$ 在这里也是循环吗?

我自己想明白了,谢谢啦!
追答
是的,这是条件跳转,
DJNZ R5,$ 表示R5寄存器减1,如不为零则不断执行本条指令,直到R5为0时才执行下一条指令。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式