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

單片機的程序指針

發布時間: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

閱讀全文

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

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163