LDR[condition]dest, addr_mode
其中:
condition |
16 個條件之一。請參閱條件程式碼狀態。 |
dest |
目標暫存器 |
addr_mode |
定址模式 2:載入與儲存字或無符號位元組 |
LDR 指令將字從 addr_mode 載入到 dest。在低位在先、高位在後的記憶體系統中,指定的地址上的位元組佔用暫存器的 LSB。在高位在先、低位在後的記憶體系統中,指定的地址上的位元組佔用暫存器的以下位:
地址位 [0] 設定為 |
佔用的暫存器位 |
---|---|
0 |
31:24 |
1 |
15:08 |
載入 PC 時,它被當作地址。載入的地址的位 [0] 確定執行是在 ARM* 還是在 Thumb* 模式下繼續。如果用作基址暫存器,它還啟用 PC 相對定址。condition 必須是有效值;否則將指令當作 NOP。
如果試圖進行無效的載入或儲存數據訪問,則產生數據終止異常。如果實現系統控制協處理器時啟用對齊檢查,並且存在位 [01:0] != 0b00 的地址,則產生對齊異常。
N |
Z |
C |
V |
Q |
S |
I |
F |
T |
T |
T |
T |
T |
|
|
|
|
M |
31 |
|
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
|
16 |
15 |
|
12 |
11 |
|
0 |
condition |
0 |
1 |
I |
P |
U |
0 |
W |
1 |
basereg |
dest |
addr_mode |
1 @.text
2 @.globl funcldr
3 @.align 0
4
5 @ * * * LDR (Addressing Mode 2) * * *
6 AREA load_store, CODE, READONLY
7 label1
8 00000000 E3A0B001 MOV R11, #1
9 00000004 E2AB0001 ADC R0, R11, #1
10 00000008 E4107000 LDR R7, label2
11
12 00000012 E12FFF17 BX R7
13
14 00000016 E3A0B001 MOV R11, #1
15 00000020 E21B0001 ANDS R0, R11, #1
16
17 00000024 E3A0000A MOV R0, #10
18 00000028 E3A01001 MOV R1, #1
19 00000032 E5801000 STR R1, [R0]
20 00000036 E5902000 LDR R2, [R0]
21
22 END
23
24 label2
25 DCD 0xdeadbeef
26 DCB "string"
27
28 END