<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 關(guān)于A(yíng)RM匯編里的特殊符號

關(guān)于A(yíng)RM匯編里的特殊符號

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏
先前企圖全部靠自己寫(xiě)一個(gè)bootloader,結果嘗試了下,花了4天時(shí)間查各種技術(shù)資料,寫(xiě)了個(gè)startup.s文件出來(lái),寫(xiě)的過(guò)程中才發(fā)現,原來(lái)還有很多問(wèn)題是我基本上不知道的,比如說(shuō)如何進(jìn)行ARM的位操作、如何將堆棧設置到RAM中、UART的波特率計算方法等問(wèn)題。

在邊寫(xiě)邊查資料的過(guò)程中,我又發(fā)現了別人的一些程序我看不懂。。。因為除了EQU、DCD等我基本不用偽指令。。。

本文引用地址:http://dyxdggzs.com/article/201611/317238.htm

所以我開(kāi)始看44B0 BootLoader的范例程序,可能是人家水平實(shí)在比較高,也可能是俺的水平確實(shí)有限,總之是有些地方看不怎么懂,特別是一些個(gè)特殊符號,現特將那些個(gè)麻煩的符號總結下:

特殊符號 | 對應指令 | 含義 | 示例

-------------------|---------------------------------|----------------------------------|---------------------------------------

^ | MAP | 定義結構化內存表 | MAP 4096;內存表首地

| | | 址為4096

-------------------|---------------------------------|----------------------------------|---------------------------------------

# | FIELD | 定義內存表中的數 | MAP 4096

| | 據,結合MAP指令 | STACKSVC FIELD 256;

| | 使用。 | 定義從4096開(kāi)始的256字節

| | |為SVC的堆??臻g。

-------------------|---------------------------------|----------------------------------|---------------------------------------

% | SPACE | 分配一塊內存,并 | DataStruc SPACE 280

| | 用“0”初始化 | 分配280字節內存并初始化

-------------------|---------------------------------|----------------------------------|---------------------------------------

[|] | IF ELSE ENDIF | 條件編譯,有選擇的 | IF 邏輯表達式

| | 確定需要編譯的代碼 | 指令或偽指令

| | IF,ELSE,ENDIF | ELSE

| | 可以嵌套使用 | 指令或偽指令

| | | ENDIF

-------------------|---------------------------------|----------------------------------|---------------------------------------

另外還有符號: $

如果在串變量前有一個(gè)$則在匯編時(shí)編譯器將用該串變量的數值取代該串變量,如:

GBLS STR1

GBLS STR2

STR1 SETS “pen.”

STR2 SETS “This is a $STR1"

編譯后的結果是STR2的值為T(mén)his is a pen.

如果$后是數字變量(與串變量區分),在匯編時(shí)編譯器將該數字變量的數值轉換成十六進(jìn)制的串,然后用該十六進(jìn)制的串取代$后的數字變量。

如果$后是邏輯變量,在匯編時(shí)編譯器將該邏輯變量替換成它的取值(T或者F)。

如果程序中需要$,則用$$來(lái)表示,編譯器將不進(jìn)行變量替換。

GBLS STR1

GBLS B

GBLA NUM1

NUM1 SETA 14

B SETS “CHANGED”

STR1 SETS “abc$$B$NUM1”

編譯結果STR1的值為:abcB0000000E。

注意:在兩個(gè)豎線(xiàn)“|”之間的$并不表示進(jìn)行變量替換,但如果“|”是在雙引號內,則將進(jìn)行變量替換。

使用點(diǎn)"."來(lái)表示變量名的結束。

GBLS STR1

GBLS STR2

STR1 SETS “AAA”

STR2 SETS “bbb$STR1.CCC"

編譯結果STR2值為bbbAAACCC

還有一個(gè)例外:“%”

“%”除了表示SPACE外還可以在局部標號中使用,具體意思見(jiàn)偽指令ROUT的使用示例:

◆ROUT

ROUT偽指令定義局部標好的有效范圍

偽指令格式如下

{name} ROUT

其中 name 所定義的作用范圍的名稱(chēng)

當沒(méi)有使用ROUT偽指令時(shí),局部標號的作用范圍所在段ROUT偽令的作用范

圍在本ROUT偽指令和下一個(gè)ROUT偽指令之間(指同一段中的ROUT偽指令)

偽指令應用舉例如下:

routineA ROUT ;定義局部標號的有效范圍,名稱(chēng)為routineA

......

3routineA ;routineA范圍內的局部標號3

......

BEQ %4routineA ;若條件成立,跳轉到routineA范圍內的局部標號 4

......

BEQ %3routineA ;若條件成立,跳轉到routineA范Iq內的局部標號 3

......

4routineA ;routineA范圍內的局部標號4

......

otherstuff ROUT ;定義新的局部標號的有效范圍



關(guān)鍵詞: ARM匯編里特殊符

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>