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