單片機(jī)編程 AJMP與LJMP區(qū)別
單片機(jī)編程 AJMP與LJMP區(qū)別
剛學(xué)單片機(jī)的朋友對(duì)于什么時(shí)候用SJMP什么時(shí)候該用LJMP搞不清楚。看看下面的內(nèi)容應(yīng)該會(huì)有點(diǎn)幫助哦。
SJMP 如果跳轉(zhuǎn)到的標(biāo)號(hào)地址距離當(dāng)前PC所指的地址小于256字節(jié),用SJMP
AJMP 如果跳轉(zhuǎn)到的標(biāo)號(hào)地址距離當(dāng)前PC所指的地址小于2K字節(jié),用AJMP
LJMP 如果跳轉(zhuǎn)到的標(biāo)號(hào)地址距離當(dāng)前PC所指的地址小于64K字節(jié),用LJMP
ACALL是你調(diào)用的子程序入口地址距離當(dāng)前PC所指地址需介于0~2K,LCALL是0~64K。
跳轉(zhuǎn)的范圍不一樣,可以說(shuō)是到達(dá)的遠(yuǎn)近距離不一樣。存儲(chǔ)空間占用不一樣。
AJMP 的范圍是11位地址,也就是2K的空間內(nèi),占用存儲(chǔ)空間2個(gè)字節(jié),執(zhí)行周期24個(gè)時(shí)鐘周期。
LJMP 的范圍是16位地址,也就是64K的空間內(nèi),占用存儲(chǔ)空間3個(gè)字節(jié),執(zhí)行周期24個(gè)時(shí)鐘周期。
SJMP 的范圍是8位地址,也就是256BIT的空間內(nèi),占用存儲(chǔ)空間2個(gè)字節(jié),執(zhí)行周期24個(gè)時(shí)鐘周期。
JMP一般配合DPTR使用,存儲(chǔ)空間1個(gè)字節(jié),執(zhí)行周期24個(gè)時(shí)鐘周期。一般用于多分枝選擇的時(shí)候使用,比如按鍵處理。
ACALL,LCALL和以上說(shuō)明類似,是調(diào)用指令,ACALL占用存儲(chǔ)空間2個(gè)字節(jié),執(zhí)行周期24個(gè)時(shí)鐘周期。LCALL占用存儲(chǔ)空
間3個(gè)字節(jié),執(zhí)行周期24個(gè)時(shí)鐘周期。
通常情況下LJMP LCALL比較好用。