新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM處理器寄存器和匯編指令系統(tǒng)

ARM處理器寄存器和匯編指令系統(tǒng)

作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
1.ARM的處理器模式

ARM體系結(jié)構(gòu)支持7種處理器模式,分別是:用戶、FIQ、IRQ、管理、中止(abort)、未定義和系統(tǒng)模式。除了用戶模式外,其余都稱之為特權(quán)模式。除了用戶和系統(tǒng)模式外,其余都稱之為異常模式。

本文引用地址:http://m.butianyuan.cn/article/201611/317752.htm

2.ARM的存儲器組織

ARM處理器總共有37個寄存器:包括31個通用寄存器、包括程序計數(shù)器(PC)、和6個狀態(tài)寄存器。這些寄存器在不同模式下,不能被同時看到,有些名稱是重疊的。分為三類:不分組寄存器,分組寄存器和程序計數(shù)器

1)不分組寄存器R0~R7

所有的處理模式下、它們都是訪問同一個寄存器,因此只有8個不分組寄存器。

2)分組寄存器R8~R14

每一個訪問的物理寄存器取決于當前的處理器模式,有些是共用的,而有些事分離的。具體可以查詢相關(guān)資料。

R13就是堆棧寄存器SP,而R14就是鏈接寄存器LR

3)程序計數(shù)器R15

在ARM狀態(tài)PC的位[1:0]為0,而在Thumb狀態(tài),位[0]為0.

4)程序狀態(tài)寄存器CPSR和程序狀態(tài)保存寄存器SPSR

CPSR只有一個,代表了當前的程序狀態(tài)。而每個異常模式都有獨立的一個SPSR,用于保存CPSR的狀態(tài)。


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1
2

3.ARM的常用匯編指令

1)基本尋址方式

包括有寄存器尋址、立即尋址、寄存器移位尋址、寄存器間尋址、變址尋址、多寄存器尋址、堆棧尋址、塊復(fù)制尋址和相對尋址

2)條件執(zhí)行

幾乎所有的ARM指令都可以包含一個可選的條件碼,句法中以{cond}來標識??捎玫臈l件碼如下面所示。幾乎所有的ARM數(shù)據(jù)處理指令均可以根據(jù)執(zhí)行結(jié)果來選擇是否更新條件碼標志,即在指令中包含后綴S。


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1
2
3
4650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />0010 CS/HS C置位 大于或等于(無符號>=)
5650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />0011 CC/LO C清零 小于(無符號<)
6650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />0100 MI N置位 負
7650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />0101 PL N清零 正或零
8650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />0110 VS V置位 溢出
9650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />0111 VC V清零 未溢出
10650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />1000 HI C置位且Z清零 大于(無符號>)
11650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />1001 LS C清零或Z置位 小于或等于(無符號<=)
12650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />1010 GE N和V相同 帶符號>=
13650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />1011 LT N和V不同 帶符號<
14650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />1100 GT Z清零且N和V相同 帶符號>
15650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />1101 LE Z置位或N和V不同 帶符號<=
16650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />1110 AL 任何 總是(通常省略)

3)存儲器訪問指令

3.1)LDR和STR(字與無符號字節(jié))語法如下

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} {B} {T} Rd, [Rn]
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} {B} Rd, [Rn, Flexoffset] {!} //前索引偏移
3650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} {B} Rd, label
4650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} {B} {T} Rd, [Rn], Flexoffset //后索引偏移

其中:

op 是操作碼即指令LDR或STR。

cond 就是上面所說的條件碼,因此指令可以變成LDREQ或STRNE類似的名稱,表示滿足某些條件時該條指令才會執(zhí)行。

B 可選后綴,表示傳送Rd的最低有效字節(jié),就是所謂的無符號字節(jié)傳送,字節(jié)加載的時候是用0來擴展到32位的。

T 可選后綴,即使處理器是在特權(quán)模式下,存儲系統(tǒng)也將訪問看成是處理器在用戶模式下。不能和前索引偏移一起使用。

Rd 用于加載或存儲的ARM寄存器

Rn 存儲器的基址寄存器。若指令是帶寫回的前索引或后索引(后索引都是寫回的),則Rd和Rn不能相同

Flexoffset 加到Rn上的靈活的偏移量

label 程序相對偏移表達式。label必須是當前指令的+-4KB范圍內(nèi)

! 可選后綴,前索引寫回標志,若Rn是R15,則不能用后綴!

Flexoffset的句法包括下面兩種

1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />#expr
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />{-} Rm {, shift}
- 是可選符號,表示從Rn中減去偏移量,否則是加
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />expr 表達式,取值范圍-4095~+4095的整數(shù)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />Rm 內(nèi)含偏移量的寄存器。Rm不允許是R15
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />shift Rm的可選移位方法,可以是下列形式的任何一種
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> ASR n算術(shù)右移n位(1<=n<=32)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> LSL n邏輯左移n位(0<=n<=31)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> LSR n邏輯右移n位(1<=n<=32)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> ROR n循環(huán)右移n位(1<=n<=31)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> RRX 循環(huán)右移1位,帶擴展

3.2)LDR和STR(半字和帶符號字節(jié))語法如下:

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} type Rd, [Rn]
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} type Rd, [Rn, offset] {!}
3650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} type Rd, label
4650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} type Rd, [Rn], offset

其中:

type 必須是以下所列其中之一

SH 對帶符號半字(僅LDR)

H 對無符號半字

SB 對帶符號字節(jié)(僅LDR)

label 程序相對偏移表達式。必須是當前指令+-255字節(jié)范圍

offset 加在Rn上的偏移量,可以是以下兩種形式之一

#expr //值為+-255范圍內(nèi)的整數(shù)。

{-} Rm

3.3)LDR和STR(雙字)加載兩個相鄰的存儲器和存儲兩個相鄰的寄存器,語法如下:

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} D Rd, [Rn]
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} D Rd, [Rn, offset] {!}
3650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} D Rd, label
4650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} D Rd, [Rn], offset

其中:

Rd 加載或存儲寄存器其中一個,另一個是R(d+1)。但Rd必須是偶數(shù)寄存器,且不能是R14。

Rn 除非指令為零偏移,或不帶寫回的前索引,否則Rn不允許與Rd和R(d+1)相同

offset 加在Rn上的偏移量

label 程序相對偏移表達式。必須是當前指令+-255字節(jié)范圍

3.4)LDM和STM 加載多個寄存器或存儲多個寄存器,可以傳送R0~R15的任何組合

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} mode Rn{!}, reglist{^}

其中:

mode是下列情況中之一:

IA 每次傳送后地址加1

IB 每次傳送前地址加1

DA 每次傳送后地址減1

DB 每次傳送前地址減1

FD 滿遞減堆棧

ED 空遞減堆棧

FA 滿遞增堆棧

EA 空遞增堆棧

Rn 基址寄存器,傳送數(shù)據(jù)的初始地址。不允許是R15

! 可選后綴。若有!,則最后的地址寫回Rn

reglist 加載或存儲的寄存器列表 可以寫出如下形式

{R0, R2, R9}

{R3-R6, R11, R12}

{R0, R4-R7, LR}

3.4) SWP 在寄存器和存儲器之間進行數(shù)據(jù)交換。

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />SWP {cond} {B} Rd, Rm, [Rn]

其中:

B 可選后綴。若有B,則是交換字節(jié),否則交換字

Rd 數(shù)據(jù)從存儲器加載到Rd

Rm Rm的內(nèi)容存儲到存儲器。如果Rm和Rd的相同,則是交換寄存器和存儲器的內(nèi)容

Rn Rn的內(nèi)容指定要進行數(shù)據(jù)交換的存儲器的地址。 Rn必須和Rm和Rd不同

4)ARM數(shù)據(jù)處理指令

4.1)靈活的第二操作數(shù),在數(shù)據(jù)處理指令中會經(jīng)常出現(xiàn)第二操作數(shù),即Operand2,它有如下的兩種可能形式。

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /># immed_8r
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />Rm{, shift}

其中:

immed_8r 取值為數(shù)字常量的表達式。常量必須對應(yīng)8位位圖在32位字中被循環(huán)移位偶數(shù)位(0,2,4,6,...,28,30)后的值

合法的常量有:0xFF,0x104,0xFF0,0xFF000,0xF0000000F等

非法的常量有:0x101,0x102,0xFF1,0xFF04等

Rm 存儲第二操作數(shù)數(shù)據(jù)的寄存器,可以用各種方法對寄存器中的位圖進行移位或循環(huán)移位,操作結(jié)果用于Operand2

但Rm本身不改變。

shift 對Rm的可選移位方法,可以是以下方法的任何一種

650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> ASR n算術(shù)右移n位(1<=n<=32)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> LSL n邏輯左移n位(0<=n<=31)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> LSR n邏輯右移n位(1<=n<=32)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> ROR n循環(huán)右移n位(1<=n<=31)
650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /> RRX 循環(huán)右移1位,帶擴展

type Rs 其中type為上面ASR、LSL、LSR、ROR中的一種;Rs為提供移位量的寄存器,僅使用最低有效字節(jié)

4.2)ADD、SUB、RSB、ADC、SBC和RSC

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} {S} Rd, Rn, Operand2

其中:

op 是上面眾多指令中的一個

S 可選后綴,會根據(jù)結(jié)果來更新條件碼標志

Rd 結(jié)果寄存器

Rn 保存第一操作數(shù)的寄存器

Operand2 第二操作數(shù)

ADD 表示Rn加Operand2的值存到Rd

SUB 表示Rn減去Operand2

RSB 表示Operand2減去Rn

ADC 將Rn和Operand2相加后再加上進位標志

SBC 從Rn的值中減去Operand2的值,若進位標志是清零的,則結(jié)果減去1

RSC 從Operand2中減去Rn的值,若進位是清零的,則結(jié)果減去1

4.3)AND、ORR、EOR和BIC

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond} {S} Rd, Rn, Operand2

其中:AND是與、ORR是或、EOR是異或和BIC是位清零

都是Rn和Operand2中的值做處理,然后結(jié)果保存在Rd中

BIC 用于將Rn中的位于Operand2中相應(yīng)位的反碼,進行與操作。

4.3)MOV和MVN 傳送與傳送非

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />MOV {cond} {S} Rd,Operand2
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />MVN {cond} {S} Rd,Operand2

MOV將Operand2中的值拷貝到Rd中

而MVN將Operand2的值進行按位邏輯非之后再傳送到Rd

4.4)CMP和CMN 比較與比較反值

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />CMP {cond} Rn, Operand2
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />CMN {cond} Rn, Operand2

CMP比較大小,從Rn中減去Operand2的值,但丟棄結(jié)果,更新標志位,指令的主要目的是更新標志位

CMN是將Rn和Operand2相加,丟棄結(jié)果再更新標志位。

4.5)TST和TEQ 測試和測試相等

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />TST {cond} Rn, Operand2
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />TEQ {cond} Rn, Operand2

TST對Rn和Operand2的值進行按位與操作,更新標志位,丟棄結(jié)果

TEQ對Rn和Operand2的值進行異或操作,更新標志位,丟棄結(jié)果

4.6)CLZ 前導(dǎo)零計數(shù)

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />CLZ {cond} Rd, Rm

Rd 結(jié)果寄存器,不允許是R15

Rm 操作數(shù)寄存器。CLZ對Rm中的前導(dǎo)零的個數(shù)進行計數(shù),結(jié)果放在Rd中,若Rm全為0,則結(jié)果為32

若位[31]是1,則結(jié)果為0

4.7)MUL和MLA 乘法和乘加運算

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />MUL {cond} {S} Rd,Rm,Rs
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />MLA {cond} {S} Rd,Rm,Rs,Rn

其中:

Rd 結(jié)果寄存器,不能使R15

Rm,Rs,Rn 操作寄存器,不能是R15,Rd不能和Rm相同

MUL 將Rm和Rs相乘,并將最低有效32位結(jié)果放在Rd中

MLA 將Rm和Rs相乘,再加上Rn的值,將最低有效32位結(jié)果放在Rd中

4.8)UMULL、UMLAL、SMULL和SMLAL 無符號和帶符號長整數(shù)乘法和乘加,結(jié)果是64位

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />op {cond}{S} RdLo,RdHi,Rm,Rs

其中:

RdLo和RdHi 是結(jié)果寄存器

Rm和Rs 是操作數(shù)寄存器

UMULL 將Rm和Rs中的值解釋為無符號整數(shù)。將兩數(shù)相乘,并將結(jié)果的最低32位放RdLo中,高32位放RdHi中

UMLAL 將Rm和Rs中的值解釋為無符號整數(shù)。將兩數(shù)相乘,并將結(jié)果加回到RdLo和RdHi的64位無符號整數(shù)上。

SMULL 將Rm和Rs中的值解釋為有符號補碼整數(shù)。將兩數(shù)相乘,并將結(jié)果的最低32位放RdLo中,高32位放RdHi中

SMLAL 將Rm和Rs中的值解釋為有符號補碼整數(shù)。并將結(jié)果加回到RdLo和RdHi的64位無符號整數(shù)上。

5)ARM轉(zhuǎn)移指令

5.1)B和BL 跳轉(zhuǎn)指令

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />B {cond} label
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />BL {cond} label

其中:

label 是程序相對偏移表達式。兩條指令都會令程序轉(zhuǎn)移到label上,而BL還會將原來的下一條指令地址保存在R14上

6)ARM協(xié)處理指令

7)其他指令

7.1)SWI 軟件中斷

7.2)MRS 將CPSR或SPSR的內(nèi)容保存到寄存器中

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />MRS {cond} Rd,psr

其中:

Rd 目標寄存器,Rd不允許為R15

psr CPSR或SPSR

7.3)MSR 將立即數(shù)或通用寄存器的內(nèi)容加載到CPSR或SPSR的指定區(qū)域

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />MSR {cond} _,#immed_8r
2650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />MSR {cond} _,Rm

其中:

psr 即是CPSR或SPSR

fileds是制定傳送區(qū)域,可以是

c 控制域屏蔽字節(jié)(PSR[7:0])

x 擴展域屏蔽字節(jié)(PSR[15:8])

s 狀態(tài)域屏蔽字節(jié)(PSR[23:16])

f 標志域屏蔽字節(jié)(PSR[31:24])

8)偽指令

8.1)ADR 將程序的相對偏移或寄存器相對偏移地址加載到寄存器中

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />ADR {cond} register,expr

其中:

register 是加載的寄存器

expr 是程序相對偏移或寄存器相對偏移表達式,取值可以是

非字節(jié)對齊地址-255~255

字節(jié)對齊地址-1020~1020

請注意,這條指令是用來獲取相對偏移地址的。

即是用當前PC的值,去減去某一個適當?shù)闹担ň幾g器自動計算),從而得到expr這個標號的相對地址,將這個標號的相對于當前pc的偏移地址存儲到register中。正是因為這樣,這條指令才是一條偽指令,這樣的好處是可以繞過程序入口地址的影響,而始終能跳轉(zhuǎn)到準確的地址,因為B這樣的跳轉(zhuǎn)指令是跳轉(zhuǎn)到絕對地址上的,而ADR可以獲取到一個相對于當前PC的地址,所以用處非常大。

8.2)LDR 用常量或地址加載寄存器

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->1650) this.width=650;" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />LDR {cond} register,=[expr | label-expr]

其中:

register 加載寄存器

expr 賦值成數(shù)字常量

label-expr 程序相對偏移或外部表達式

匯編器可自動識別數(shù)字常量,從而完成對register賦值的操作。




評論


技術(shù)專區(qū)

關(guān)閉