多重載入與儲存概述“多重載入與儲存”定址模式分成 4 個子模式。載入指令從記憶體載入 reg 指定的部分、甚至是全部通用暫存器。儲存指令將 reg 指定的部分、甚至是全部通用暫存器儲存到記憶體。此定址模式產生地址是有順序的;因此,reg 指定的暫存器按照升序從自低到最的記憶體地址進行載入。此定址模式的一般語法在後續部分提供。
LDM|STM [condition] addr_mode basereg[!], reg {,reg}
其中:
|
condition |
16 個條件之一。請參閱條件程式碼狀態。 |
|
basereg |
addr_mode 使用的基址暫存器。 |
|
! |
設定 W 位 (21)。 |
|
reg |
要載入的有效暫存器。 |
addr_mode 是以下 4 種子模式之一:
|
子模式 |
說明 |
|---|---|
|
IA |
之後遞增。 |
|
IB |
之前遞增。 |
|
DA |
之後遞減。 |
|
DB |
之前遞減。 |
下表顯示此定址模式的編碼:
|
31 |
|
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
|
16 |
15 |
|
0 |
|
condition |
1 |
0 |
0 |
P |
U |
S |
W |
L |
basereg |
reglist |
||||||
其中:
|
位 [24] |
是 P 位。請參閱下文。 |
|
位 [23] |
是 U 位。 |
|
位 [22] |
是 S 位。 |
|
位 [21] |
是 W 位。 |
|
位 [20] |
是 L 位。 |
|
位 [15:0] |
reglist 存在一個位專用於每個暫存器:位[0] 表示 R0,位[15] 表示 R15 ( PC )。至少應設定一個位。 |
P 位(位 [24])的含義取決於 U 位的設定:
|
|
U==0 |
U==1 |
|
P==0 |
basereg 中包含的地址超出範圍頂部一個字。 |
basereg 中包含的地址低於範圍底部一個字。 |
|
P==1 |
basereg 中包含的地址在範圍底部訪問。 |
basereg 中包含的地址在範圍頂部 (U == 1) 訪問。 |
對於指令塊傳輸,IA、IB、DA 及 DB 定址模式最為有用,特別是“多重載入與儲存”指令使用定址模式時,數據載入與儲存使用同樣的方式。
“多重載入與儲存”指令用於訪問堆疊時,彈出與壓入操作按照相反的方向調整堆疊,此時便需要這些不同的定址模式。
以下是提供的堆疊操作替代性語法:
|
堆疊 |
語法 |
說明 |
|---|---|---|
|
空白升序 |
EA |
堆疊指針指向第一個未使用的位置,並向記憶體位置增加的方向移動。 |
|
完全升序 |
FA |
堆疊指針指向使用的上一個位置,並向記憶體位置增加的方向移動。 |
|
空白降序 |
ED |
堆疊指針指向未使用的第一個位置,並向記憶體位置減小的方向移動。 |
|
完全降序 |
FD |
堆疊指針指向使用的上一個位置,並向記憶體位置減小的方向移動。 |