关于单片机里的SJMP $,知道的请进

关于单片机里的SJMP $,知道的请进,第1张

SJMP $是在原地循环,一般都用在等待中断到来,然后进入中断处理程序。

处理完了,再继续在原地循环。

比如你的手机现在不用了,估计也在这里循环,你按下键,它就当是有中断

来了,就去处理,处理完了,它又开始循环等待你的操作了。

END是每个程序必须写的指令,如果你的程序走到了这条指令就停下来了。

一般的程序是不会让它走到这条指令的,因为走到了就结束了,不能去处理

你的实时中断了。

MOV A,40H 目的数:寄存器寻址;源操作数:直接寻址

功能:把40H里面的内容送到A

MOV A,@R1 目的数:寄存器寻址;源操作数:寄存器间接寻址

功能:将R1所指出的内部RAM单元中的内容送到A

MOV A,R3 目的数、源操作数:寄存器寻址

功能:把R3寄存器里面的内容给A

MOVC A,@A+PC 目的数:寄存器寻址;源操作数:变址寻址

功能:将当前pc+1的地址 与A的地址相加所得到的地址单元中的内容给A

SJMP LOOP 目的数:相对寻址

功能:短跳转到LOOP的位置

从功能和使用的角度来讲,差不多——都是跳转,不用管“addr16”或“rel”,只要用标号就可以了,如:“loop”,“start”等等。不同的地方就是跳转的长度,LJMP 是16位的,最大可以到64K,SJMP是8位的(确切说是7位的,因为还有1位是符号位),最大百来个字节。但是SJMP是双字节指令,执行速度会比LJMP快一些。所以一般小的循环或分支程序用SJMP,在不清楚跳转距离时可用LJMP。学习心得供参考。

以SJMP为原点,可以往前跳,正向跳转,往后跳,反向跳转。假设SJMP指令所在地址为0110H,因为要取出SJMP指令,是两个字节,那当前地址要加2,为0112H,反向跳转的目的地址是0110H,则跳转偏移量rel=0110H-0112H=-12H。rel为负数,但要用补码表示,为EFH。

以上就是关于关于单片机里的SJMP $,知道的请进全部的内容,包括:关于单片机里的SJMP $,知道的请进、指出下列每条指令的寻址方式和功能 MOV A,40H MOV A,@R1 MOV A,R3 MOVC A,@A+PC SJMP LOOP、汇编语言长转移LJMP和SJMP短转移什么意思,分别什么时候怎么用呢 LJMP addr16 SJMP rel等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3757331.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存