記憶體位址和記憶體空間

2022-05-04 22:48:10 字數 642 閱讀 2614

在操作暫存器時,遇到概念上的理解問題。混淆了記憶體位址與記憶體空間

首先,讀懂指令

ldr    r0,=0x11000c40

//0x11000c40是暫存器gpx2con的位址,將這個位址寫入r0暫存器的空間

ldr r1,[r0]

//將r0空間的位址所指向的4位元組資料,讀入r1的記憶體空間,即r1儲存了0x11000c40位址所指向的四位元組空間資料

bic r1,#

0xf0000000

//將那四位元組資料的高四位清零,即[31:28]->0000

orr r1,

0x10000000

//[31:28] :0000 ---> 0001

str r1,[r0]

//將r1裡的資料存入r0存放的位址0x11000c40所指向的空間中

由上,可以知道記憶體位址只是乙個編號,代表乙個記憶體空間,就像你家的門牌號一樣,通過位址可以訪問到所指向的記憶體。那麼這個記憶體空間是多大呢。在計算機中,儲存器的容量是以位元組為基本單位,每個位元組都有乙個位址,每四個位元組即32位的記憶體空間為乙個單元。

記憶體位址和記憶體空間的理解

1.記憶體位址用4位16進製制和8位16進製表示的區別。例如經常可以看到某些書籍上寫的記憶體位址0x0001,在另外一些書籍上寫的記憶體位址又變成了0x00000001。都是表示的編號為1的記憶體位址,為什麼乙個是4位16進製表示,另外乙個又是用8位16進製表示呢?首先,必須要知道記憶體位址只是乙個...

關於記憶體位址和記憶體空間的理解

1.記憶體位址用4位16進製制和8位16進製表示的區別。例如經常可以看到某些書籍上寫的記憶體位址0x0001,在另外一些書籍上寫的記憶體位址又變成了0x00000001。都是表示的編號為1的記憶體位址,為什麼乙個是4位16進製表示,另外乙個又是用8位16進製表示呢?首先,必須要知道記憶體位址只是乙個...

關於記憶體位址和記憶體空間的理解

1.記憶體位址用4位16進製制和8位16進製表示的區別。例如經常可以看到某些書籍上寫的記憶體位址0x0001,在另外一些書籍上寫的記憶體位址又變成了0x00000001。都是表示的編號為1的記憶體位址,為什麼乙個是4位16進製表示,另外乙個又是用8位16進製表示呢?首先,必須要知道記憶體位址只是乙個...