SJMP $是在原地循环,一般都用在等待中断到来,然后进入中断处理程序。
处理完了,再继续在原地循环。
比如你的手机现在不用了,估计也在这里循环,你按下键,它就当是有中断
来了,就去处理,处理完了,它又开始循环等待你的操作了。
END是每个程序必须写的指令,如果你的程序走到了这条指令就停下来了。
一般的程序是不会让它走到这条指令的,因为走到了就结束了,不能去处理
你的实时中断了。
功能:把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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:聚客百科
评论列表(0条)