单片机 SJMP
51單片機指令。
功能:短轉移(Short Jump)
格式:SJMP rel ;
作用: PC? PC+2 , PC? PC+rel
短轉移指令(-126—+129范圍內的轉移指令)
短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然后把加2后的地址和rel相加作為目標轉移地址。因此,短轉移指令是一條相對轉移指令,是一條雙字節雙周期指令,指令碼格式為:80H rel(操作碼 地址偏移量),這里,80H是SJMP指令的操作碼;rel是地址偏移量,在程序中也常采用符號地址,上機運行前才被代真成二進制形式。
注意:遇到具體問題時,頭腦中一定要清楚一個關系式:目標轉移地址=源地址+2+rel[1] 常見用法: SJMP$ 即跳轉到本指令的起始位置開始執行,這樣就變成了循環執行,即原地跳轉,一般用來等待中斷。[2] 但是本指令也不宜濫用。這是一條死循環指令,如果系統的中斷是開放的,那么SJMP $指令實際上是在等待中斷,當有中斷申請后,CPU 轉至執行中斷服務程序。中斷返回時,仍然返回到這條死循環指令,繼續等待中斷,而不是返回到該指令的下一條指令。這是因為執行SJMP $后,PC 仍指向這條指令,中斷的斷點就是[3]這條指令的首字節地址。
短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然后把加2后的地址和rel相加作為目標轉移地址。因此,短轉移指令是一條相對轉移指令,是一條雙字節雙周期指令,指令碼格式為:80H rel(操作碼 地址偏移量),這里,80H是SJMP指令的操作碼;rel是地址偏移量,在程序中也常采用符號地址,上機運行前才被代真成二進制形式。
注意:遇到具體問題時,頭腦中一定要清楚一個關系式:目標轉移地址=源地址+2+rel[1] 常見用法: SJMP$ 即跳轉到本指令的起始位置開始執行,這樣就變成了循環執行,即原地跳轉,一般用來等待中斷。[2] 但是本指令也不宜濫用。這是一條死循環指令,如果系統的中斷是開放的,那么SJMP $指令實際上是在等待中斷,當有中斷申請后,CPU 轉至執行中斷服務程序。中斷返回時,仍然返回到這條死循環指令,繼續等待中斷,而不是返回到該指令的下一條指令。這是因為執行SJMP $后,PC 仍指向這條指令,中斷的斷點就是[3]這條指令的首字節地址。
總結
- 上一篇: Hello Riak
- 下一篇: crh666