剛學單片機的朋友對于什么時候用SJMP什么時候該用LJMP搞不清楚。看看下面的內容應該會有點幫助哦。
SJMP 如果跳轉到的標號地址距離當前PC所指的地址小于256字節,用SJMP
AJMP 如果跳轉到的標號地址距離當前PC所指的地址小于2K字節,用AJMP
LJMP 如果跳轉到的標號地址距離當前PC所指的地址小于64K字節,用LJMP
ACALL是你調用的子程序入口地址距離當前PC所指地址需介于0~2K,LCALL是0~64K。
跳轉的范圍不一樣,可以說是到達的遠近距離不一樣。存儲空間占用不一樣。
AJMP 的范圍是11位地址,也就是2K的空間內,占用存儲空間2個字節,執行周期24個時鐘周期。
LJMP 的范圍是16位地址,也就是64K的空間內,占用存儲空間3個字節,執行周期24個時鐘周期。
SJMP 的范圍是8位地址,也就是256BIT的空間內,占用存儲空間2個字節,執行周期24個時鐘周期。
JMP一般配合DPTR使用,存儲空間1個字節,執行周期24個時鐘周期。一般用于多分枝選擇的時候使用,比如按鍵處理。
ACALL,LCALL和以上說明類似,是調用指令,ACALL占用存儲空間2個字節,執行周期24個時鐘周期。LCALL占用存儲空
間3個字節,執行周期24個時鐘周期。
通常情況下LJMP LCALL比較好用。
