當前位置:編程學習大全網 - 編程軟體 - 單片機中程序指針 數據指針 堆棧指針區別

單片機中程序指針 數據指針 堆棧指針區別

首先,妳要明白壹個概念,指針,是做什麽的?答案是,指針,是指向地址的。

程序指針,指向的空間,在物理上是Flash,在邏輯上,就是代碼空間。比如說51單片機的PC指針,指向的就是Flash,即程序下壹步要執行的指令的地址。

數據指針,指向的空間,在物理上有Flash和RAM,在邏輯上是Flash裏的常數空間和數據空間,註意,是對於單片機來說,對於我們的電腦,常數空間不是在Flash上。

比如說51單片機的DPTR,如果用MOVC A,@A+DPTR,此時,就是指向常數空間,如果用

MOVX A,@A+DPTR就是指向的數據空間。

堆棧指針,指向的空間,在物理上是RAM,在邏輯上,就是數據空間,是特定的數據空間,堆棧是數據空間中單獨劃分出來,專門用於寄存中間結果的內存空間。

數據指針和堆棧指針主要有兩個區別:

壹是數據指針可以指向Flash,即可以指向常數,比如說我們定義壹個數組 unsigned char code Table[99],此時,就是DPTR可以指向常數空間。堆棧指針是不可以的,只能是指向RAM。

第二個區別,堆棧指針指向的是特定的數據空間,這個特定的數據空間,是從整個數據空間裏劃分出來,專門用於作堆棧用的,堆棧區間壹旦劃分出來,堆棧指針在規則上,就只能在這個範圍內活動,如果出了這個範圍,可能導致整個程序的崩潰。而數據指針在規則上,可以指向整個數據空間,但是,可以讀堆棧空間,不應該去修改,否則也可能導致程序的崩潰。

  • 上一篇:同壹輪明月下的中秋文案:古代人VS現代人
  • 下一篇:什麽是仿生動物?
  • copyright 2024編程學習大全網