導航:首頁 > 操作系統 > 單片機的程序指針

單片機的程序指針

發布時間:2022-11-30 11:01:33

A. 51單片機中程序指針PC和數據指針DPTR各自有什麼用途電路復位後,二者的值各是多 少

程序計數器PC(program Counter)
程序計數器在物理上是獨立的,它不屬於特殊內部數據存儲器塊中。PC是一個16位的計數器,

用於存放一條要執行的指令地址,定址范圍為64kB,PC有自動加1功能,即完成了一條指令的執行後,其內容自動加1。PC本身並沒有地址,因而不可定址,用戶無法對它進行讀寫,但是可以通過轉移、調用、返回等指令改變其內容,以控製程序按我們的要求去執行。

復位後為0000H(16位)

數據指針(DPTR)
數據指針為16位寄存器,編程時,既可以按16位寄存器來使用,也可以按兩個8位寄存器來使用,即高位位元組寄存器DPH和低位位元組DPL。
DPTR主要是用來保存16位地址,當對64kB外部數據存儲器定址時,可作為間址寄存器使用,此時,使用如下兩條指令:

MOVX A, @DPTR
MOVX @DPTR, A

在訪問程序存儲器時,DPTR可用來作基址寄存器,採用基址+變址定址方式訪問程序存儲器,這條指令常用於讀取程序存儲器內的表格數據。

MOVC A, @A+@DPTR

復位後為0000H(16位)

B. 51單片機 如何利用程序指針實現跳轉

方法1:
MOV
DPTR
,#LOCA
;取得JMP
@A+DPTR的地址(PC)
MOV
A,#4
;跳轉步長
LOCA:
JMP
@A+DPTR
(註:JMP
@A+DPTR是一條1位元組的指令,執行該條指令後PC=LOCA+1,如果想取該指令之後的PC,可以用方法2)
方法2:
MOV
DPTR
,#LOCA
;取執行JMP
@A+DPTR後的地址(PC)
MOV
A,#4
;跳轉步長
JMP
@A+DPTR
LOCA:
程序行1
程序行2
……
……
……
程序行N
方法3(程序跳轉表):
MOV
DPTR
,#LIST
;取程序跳轉表首地址
MOV
A,R0
;取跳轉偏移(跳轉偏移存在R0中)
JMP
@A+DPTR
程序行1
程序行2
……
……
……
程序行N
LIST:
SJMP
FUN1
SJMP
FUN2
SJMP
FUN3
……
FUN1:
……
FUN2:
……
FUN3:
……

C. 51單片機編程大循環後邊括弧里可以帶指針嗎

可以帶。
在51單片機的嵌入式C語言中,指針同樣是被支持的。所以在單片機上一樣可以使用指針操作,具體使用方法,與標准C語言並沒有不同。
不過需要注意的是,使用指針代表著間接定址,相對變數的直接定址,速度要稍慢一些。而單片機運算速度較慢,大量使用指針有可能會降低執行效率,影響效果。所以除非必要,還是少用指針。

D. 在匯編語言寫單片機的程序的時候,如何知道當前的PC指針是多少

當前PC指針的值,可以通過一定的方法來獲得,比如如果使用LCALL指令,那麼單片機執行過程是:保護現場,將當前PC壓入堆棧,當程序返回時,再彈出該保護的PC,由此,我們就可以獲得當前的PC,具體程序如下:
........
LCALL GETPC ;調用一個子程序以獲得當前PC值
...........

GETPC:
POP ACC ;取得PC高八位
POP B ;取得PC低八位
PUSH B ;恢復SP
PUSH ACC ;恢復SP
......
RET

閱讀全文

與單片機的程序指針相關的資料

熱點內容
ch編譯器 瀏覽:445
java必須自己寫一個編譯器嗎 瀏覽:933
如何製作androidrom 瀏覽:465
單片機萬能板怎麼寫入程序 瀏覽:15
邁銳寶xl壓縮比 瀏覽:335
靠演算法買彩票 瀏覽:492
程序員考核d 瀏覽:237
自助游中國pdf 瀏覽:741
安卓p40是什麼手機 瀏覽:84
24cxx編程器 瀏覽:588
陰陽師如何查看哪個伺服器有ID 瀏覽:313
公務員照片壓縮 瀏覽:455
編譯的時候怎麼找未定義的函數 瀏覽:349
有什麼我的世界伺服器 瀏覽:303
伺服器亮綠燈是什麼意思 瀏覽:634
python畫的圖如何保存高清版 瀏覽:496
10的搭接還用加密嗎 瀏覽:370
bytedance這個文件夾是什麼意思呢 瀏覽:593
演算法站的客體 瀏覽:81
src文件夾c語言怎麼運行 瀏覽:28