51單片機(jī)無(wú)條件轉(zhuǎn)移指令(4條)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
控制轉(zhuǎn)移指令用于控制程序的流向,所控制的范圍即為程序存儲(chǔ)器區(qū)間,MCS-51系列單片機(jī)的控制轉(zhuǎn)移指令相對(duì)豐富,有可對(duì)64kB程序空間地址單元進(jìn)行訪問(wèn)的長(zhǎng)調(diào)用、長(zhǎng)轉(zhuǎn)移指令,也有可對(duì)2kB字節(jié)進(jìn)行訪問(wèn)的絕對(duì)調(diào)用和絕對(duì)轉(zhuǎn)移指令,還有在一頁(yè)范圍內(nèi)短相對(duì)轉(zhuǎn)移及其它無(wú)條件轉(zhuǎn)移指令,這些指令的執(zhí)行一般都不會(huì)對(duì)標(biāo)志位有影響。
[1]. 無(wú)條件轉(zhuǎn)移指令(4條)
這組指令執(zhí)行完后,程序就會(huì)無(wú)條件轉(zhuǎn)移到指令所指向的地址上去。長(zhǎng)轉(zhuǎn)移指令訪問(wèn)的程序存儲(chǔ)器空間為16地址64kB,絕對(duì)轉(zhuǎn)移指令訪問(wèn)的程序存儲(chǔ)器空間為11位地址2kB空間。
LJMP addr16 ;addr16→(PC),給程序計(jì)數(shù)器賦予新值(16位地址)
AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序計(jì)數(shù)器賦予新值(11位地址),(PC15-11)不改變
SJMP rel ;(PC)+ 2 + rel→(PC)當(dāng)前程序計(jì)數(shù)器先加上2再加上偏移量給程序計(jì)數(shù)器賦予新值
JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址單元的值加上數(shù)據(jù)指針的值給程序計(jì)數(shù)器賦予新值
這幾條指令,如果要他細(xì)分析的話,區(qū)別較大,但初學(xué)者時(shí),可以不理會(huì)那么多,統(tǒng)統(tǒng)理解成LJMP標(biāo)號(hào),也就是跳轉(zhuǎn)到一個(gè)標(biāo)號(hào)處,但事實(shí)上,JMP標(biāo)號(hào),在前面的例程中我們已接觸過(guò),并且也知道如何來(lái)使用了,AJMP和SJMP也是一樣,那么這幾條指令它們的區(qū)別何在呢?在于跳轉(zhuǎn)的范圍不一樣。好比跳遠(yuǎn),LJMP一下就能跳64K那么遠(yuǎn)(當(dāng)然近了就更沒(méi)關(guān)系了)。而AJMP最多只能跳2K距離,而SJMP則最多只能跳256這么遠(yuǎn),原則上,所有用AJMP或SJMP的地方都可以用LJMP來(lái)替代。因此在初學(xué)者時(shí),需要跳轉(zhuǎn)時(shí)可以全用LJMP。
但是在查表時(shí)要注意會(huì)出錯(cuò),因?yàn)樗麄兊臋C(jī)器周期不一樣,取得的數(shù)也不一樣。