SJMP $的作用是什么?
作者&投稿:卷翰 (若有异议请与网页底部的电邮联系)
AMJP $和SJMP $都表示跳转到本行,就是一个死循环,使程序停在这里。
两者都是2字节2周期指令,在这里没有什么区别。AJMP的最大转跳范围是当前2K页面,而SJMP则是本指令前127字节后128字节。
$是一个(也是唯一一个)不需要定义的地址标号,代表当前行命令的地址。
END代表汇编程序到此结束,编译程序对END以后的内容不作编译。
原地转移,一般来说,就是死机了。
如果中断开放,满足条件时,也可以转入到中断程序里面去。
sjmp $
是原地跳转的指令。
作用:1,可以防止程序乱跳。
2,等待中断发生。
51单片机指令。
功能:短转移(Short Jump)
格式:SJMP rel ;
作用: PC
PC+2 , PC
PC+rel
短转移指令(-126—+129范围内的转移指令)
短转移指令的功能是先使程序计数器PC加1两次(即:取出指令码),然后把加2后的地址和rel相加作为目标转移地址。因此,短转移指令是一条相对转移指令,是一条双字节双周期指令,指令码格式为:80H rel(操作码 地址偏移量),这里,80H是SJMP指令的操作码;rel是地址偏移量,在程序中也常采用符号地址,上机运行前才被代真成二进制形式。
注意:遇到具体问题时,头脑中一定要清楚一个关系式:目标转移地址=源地址+2+rel
跳到主函数main,主函数的地址:0040H
$就是当前行
一般用在等待中断的主程序中
西坚丽科: 原地踏步 相当于c中的while(1)
灵宝市19765572785: 51单片机汇编语言中 SJMP $ 是什么意思 - ?
西坚丽科: 就是一个无限循环 SJMP是个短跳转 $就是当前指令的起始地址
灵宝市19765572785: 单片机中 为什么要用SJMP $ - ?
西坚丽科: 单片机运行到 SJMP $ 时就原地踏步,不再往下执行,也就是死循环.一般主程序的最后一句就是SJMP $,然后往下就是子程序,包括中断处理程序.
灵宝市19765572785: 单片机程序中SJMP $指令怎样用? - ?
西坚丽科: $ 代表本指令的地址 sjmp $ 就是跳到此处,也就是原地踏步,是个死循环.让程序停在此处.
灵宝市19765572785: 单片机,中断程序中结尾会有《SJMP $>是什么意思有什么用啊 - ?
西坚丽科: 是原地跳转指令 的确是死循环,所以可以不用,一般用来等待中断 如果有中断会转到中断程序运行,否则原地跳转 这条指令应该在主程序里,不会在中断程序里吧
灵宝市19765572785: 程序结束为什么 SJMP$ - ?
西坚丽科: SJMP$表示跳转到本语句,也就是说,在这条语句上死循环.通常在程序结束或进入主循环,等待中断发生时会用到这条命令.
灵宝市19765572785: 关于单片机里的SJMP $,知道的请进 - ?
西坚丽科: SJMP $是在原地循环,一般都用在等待中断到来,然后进入中断处理程序. 处理完了,再继续在原地循环.比如你的手机现在不用了,估计也在这里循环,你按下键,它就当是有中断 来了,就去处理,处理完了,它又开始循环等待你的操作了.END是每个程序必须写的指令,如果你的程序走到了这条指令就停下来了. 一般的程序是不会让它走到这条指令的,因为走到了就结束了,不能去处理 你的实时中断了.
灵宝市19765572785: sjmp $ 是干什么的! - ?
西坚丽科: 等待中断或者无条件跳转嘛 http://www.kerneltravel.net/journal/viii/01.htm
灵宝市19765572785: 汇编语言中ret和SJMP $有什么区别,为什么有些程序结束的时候是用SJMP $ 而有些时候是用RET呢?? - ?
西坚丽科: RET 是子程序返回指令,运行到RET时将从堆栈中弹出调用时的地址值给程序计数器PC. SJMP $是转移到前地址的指令,是原地等待的死循环,只有中断可以跳出,中断结束后仍然会回到这里死循环. 有些程序结束时用到SJMP $是因为该单片机主要依靠中断完成各项功能控制,主程序就处于死循环状态,如果没有的话,那么单片机就会陷入混乱状态了,因为程序不知道飞到哪里去了,尽管有 中断时也可以执行中断,但一旦结束中断,程序又乱执行了,所以程序不可控,这也是这句语句所起的作用.