<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è) > 嵌入式系統 > 設計應用 > ARM匯編程序設計之:匯編語(yǔ)言文件格式

ARM匯編程序設計之:匯編語(yǔ)言文件格式

作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò ) 收藏

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

下面的兩個(gè)例子說(shuō)明了變量替換的過(guò)程。

;直接的變量替換

GBLSadd4ff

;

add4ffSETSADDr4,r4,#0xFF ;給變量add4ff賦值

$add4ff.00 ;引用變量

;codes

ADDr4,r4,#0xFF00

;有特殊符號的變量替換

GBLSs1

GBLSs2

GBLSfixup

GBLAcount

;

countSETA14

s1SETSa$$b$count ;s1=a$b0000000E

s2SETSabc

fixupSETS|xy$s2.z| ;fixup=|xyabcz|

|C$$code|MOVr4,#16 ;label=C$$code

4.程序標號(label)

匯編中,標號代表一個(gè)地址,段內標號的地址在匯編時(shí)確定,而段外標號地址值在鏈接時(shí)確定。根據標號的生成方式,程序標號分為以下三種。

·程序相關(guān)標號(Program-relativelabels)。

·寄存器相關(guān)標號(Register-relativelabels)。

·絕對地址(Absoluteaddress)。

(1)程序相關(guān)標號

程序相關(guān)標號指位于目標指令前的標號或程序中的數據定義偽操作前的標號。這種標號在匯編時(shí)將被處理成PC值加上或減去一個(gè)數字常量。它常用于表示跳轉指令的目標地址或代碼段中所嵌入的少量數據。

(2)寄存器相關(guān)地址

這種標號在匯編時(shí)將被處理成寄存器的值加上或減去一個(gè)數字常量。它常被用于訪(fǎng)問(wèn)數據段中的數據。這種基于寄存器的標號通常用MAP和FIELD偽操作定義,也可以用EQU偽操作定義。

(3)絕對地址

絕對地址是一個(gè)32位的數字量,使用它可以直接尋址整個(gè)內存空間。

5.局部標號

局部標號是一個(gè)0~99之間的十進(jìn)制數字,可重復定義。局部標號后面可以緊接一個(gè)通常表示該局部變量作用范圍的符號。局部變量的作用范圍為當前段,也可以用偽操作ROUT來(lái)定義局部標號的作用范圍。

局部標號在子程序或程序循環(huán)中常被用到,也可以配合宏定義偽操作(MACRO和MEND)來(lái)使程序結構更加合理。

在同一個(gè)段中,可以使用相同的數字命名不同的局部變量。默認情況下,匯編器會(huì )尋址最近的變量。也可以通過(guò)匯編器命令選項來(lái)改變搜索順序。

局部變量命名語(yǔ)法如下。

n{routname}

局部變量引用的語(yǔ)法格式如下。

%{F|B}{A|T}n{routname}

其中,routname為變量作用范圍名稱(chēng);%表示引用操作;F指示匯編器只向前搜索;B指示匯編器只向后搜索;A指示匯編器搜索所有宏的嵌套。T指示匯編器只搜索宏的當前層。

如果在引用過(guò)程中,沒(méi)有指定F和B,則匯編器先向后搜索,再向前搜索。

如果A和T沒(méi)有指定,匯編器搜索所有從當前層次到宏最高層次,比當前層次低的層次不再搜索。

如果指定了routname,匯編器向前搜索最近的ROUT操作,若routname與該ROUT偽操作定義的名稱(chēng)不匹配,匯編器報告錯誤并結束匯編。

10.3.3匯編語(yǔ)言程序中的表達式和運算符

在匯編語(yǔ)言程序設計中經(jīng)常使用各種表達式,表達式一般由變量、常量、運算符和括號構成。常用的表達式有數字表達式、邏輯表達式和字符串表達式。

下面分別介紹表達式中各元素。

1.字符串表達式

字符串表達式一般由字符串常量、字符串變量、運算符和括號構成。字符串由包含在雙引號內的一系列字符組成。編譯器所支持的字符串最大長(cháng)度為512字節。

當在字符串中包含“$”或引號時(shí),可以用“$$”表示“$”,用兩個(gè)雙引號表示一個(gè)雙引號。

例如:

abcSETSonedoublequote

defSETSone$$dollar

上面的例子分別將字符串a(chǎn)bc和def賦值為“onedoublequote”和“one$dollar”。

字符串可以通過(guò)SETA、SETL、SETS偽操作對其賦值。

常用的與字符串表達式相關(guān)的運算符如下。

·LEN:計算字符串長(cháng)度運算符。

·CHR:ASCII碼轉換運算符。

·STR:字符串轉換運算符。

·LEFT:字符串取左運算符。

·RIGHT:字符串取右運算符。

·CC:字符串連接運算符。

詳見(jiàn)后面操作符一節。

下面的例子說(shuō)明了如何使用字符串操作符給字符串變量賦值。

improbSETSliteral:CC:(strvar2:LEFT:4)

這個(gè)例子將字符串賦值為“literalatrv”。

2.整數表達式

整數表達式一般由數字常量、數字變量、數字運算符和括號構成。

整數表示式可以包含寄存器相關(guān)(register-relative)或程序相關(guān)(program-relative)表達式,這些表達式在編譯時(shí)被匯編器翻譯為地址無(wú)關(guān)數字常量。

整數表達式一般被計算為32位的整數,當此整數被定義為無(wú)符號數時(shí),其取值范圍為0~232-1,當被定義為有符號數時(shí),其取值范圍為-231~231-1。匯編器認為-n和232-n是相等的。對于關(guān)系操作,如比較兩個(gè)數的大小,匯編器將其操作數看作無(wú)符號的數,也就是說(shuō)“0>-1”對匯編器來(lái)說(shuō)取值為“假({FLASE})”。

下面的例子說(shuō)明了在程序中,如何對整數表達式進(jìn)行操作。

aSETA256*256;將數字變量賦值為256*256

MOVr1,#(a*22);將數字表達式(a*22)的值放入r1

匯編語(yǔ)言中,整數數字量有以下幾種形式。

·十進(jìn)制數(decimal-digis)

·“0x”+十六進(jìn)制數(0xhexadecimal-digits)

·“”+十六進(jìn)制數(hexadecimal-digits)

·n進(jìn)制數(n_base-n-digits)

·字符(character)

其中,十進(jìn)制數(decimal-digis)可以是“0”到“9”數字的任意組合;十六進(jìn)制數(hexadecimal-digits)可以是“0”到“9”數字和字母“A”到“F”的任意組合;“n_”可以取2到9,“base-n-digits”是在n進(jìn)制下合法的任意數值;字符(character)可以是除單引號以外的所有字符。

下面的例子說(shuō)明了整數表達式的基本用法。

aSETA34906

addrDCD0xA10E

LDRr4,=1000000F

DCD2_11001010

c3SETA8_74007

DCQ0x0123456789abcdef

LDRr1,='A' ;偽指令將整數65(A的ASCII碼)存入寄存器

ADDr3,r2,#' ;將整數39(字符“/”的ASCII碼)加到r2,結果存入r3



評論


相關(guān)推薦

技術(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>