日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM匯編程序設(shè)計(jì)之:匯編語(yǔ)言文件格式

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

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

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

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

          ;直接的變量替換

          GBLSadd4ff

          ;

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

          $add4ff.00 ;引用變量

          ;codes

          ADDr4,r4,#0xFF00

          ;有特殊符號(hào)的變量替換

          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.程序標(biāo)號(hào)(label)

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

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

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

          ·絕對(duì)地址(Absoluteaddress)。

          (1)程序相關(guān)標(biāo)號(hào)

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

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

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

          (3)絕對(duì)地址

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

          5.局部標(biāo)號(hào)

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

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

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

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

          n{routname}

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

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

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

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

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

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

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

          在匯編語(yǔ)言程序設(shè)計(jì)中經(jīng)常使用各種表達(dá)式,表達(dá)式一般由變量、常量、運(yùn)算符和括號(hào)構(gòu)成。常用的表達(dá)式有數(shù)字表達(dá)式、邏輯表達(dá)式和字符串表達(dá)式。

          下面分別介紹表達(dá)式中各元素。

          1.字符串表達(dá)式

          字符串表達(dá)式一般由字符串常量、字符串變量、運(yùn)算符和括號(hào)構(gòu)成。字符串由包含在雙引號(hào)內(nèi)的一系列字符組成。編譯器所支持的字符串最大長(zhǎng)度為512字節(jié)。

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

          例如:

          abcSETSonedoublequote

          defSETSone$$dollar

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

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

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

          ·LEN:計(jì)算字符串長(zhǎng)度運(yùn)算符。

          ·CHR:ASCII碼轉(zhuǎn)換運(yùn)算符。

          ·STR:字符串轉(zhuǎn)換運(yùn)算符。

          ·LEFT:字符串取左運(yùn)算符。

          ·RIGHT:字符串取右運(yùn)算符。

          ·CC:字符串連接運(yùn)算符。

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

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

          improbSETSliteral:CC:(strvar2:LEFT:4)

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

          2.整數(shù)表達(dá)式

          整數(shù)表達(dá)式一般由數(shù)字常量、數(shù)字變量、數(shù)字運(yùn)算符和括號(hào)構(gòu)成。

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

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

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

          aSETA256*256;將數(shù)字變量賦值為256*256

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

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

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

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

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

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

          ·字符(character)

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

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

          aSETA34906

          addrDCD0xA10E

          LDRr4,=1000000F

          DCD2_11001010

          c3SETA8_74007

          DCQ0x0123456789abcdef

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

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



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉