在操作暫存器時,遇到概念上的理解問題。混淆了記憶體位址與記憶體空間
首先,讀懂指令
ldr r0,=0x11000c40由上,可以知道記憶體位址只是乙個編號,代表乙個記憶體空間,就像你家的門牌號一樣,通過位址可以訪問到所指向的記憶體。那麼這個記憶體空間是多大呢。在計算機中,儲存器的容量是以位元組為基本單位,每個位元組都有乙個位址,每四個位元組即32位的記憶體空間為乙個單元。//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所指向的空間中
記憶體位址和記憶體空間的理解
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進製表示呢?首先,必須要知道記憶體位址只是乙個...