ARM匯編語(yǔ)言偽指令(Directives)_第1頁(yè)
ARM匯編語(yǔ)言偽指令(Directives)_第2頁(yè)
ARM匯編語(yǔ)言偽指令(Directives)_第3頁(yè)
ARM匯編語(yǔ)言偽指令(Directives)_第4頁(yè)
ARM匯編語(yǔ)言偽指令(Directives)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、College of Computer Science & Technology第三章 ARM匯編編程 魯東大學(xué) LUDONG UNIVERSITYARM匯編語(yǔ)言偽指令(Directives)什么是偽指令:由匯編器提供的指令,指導(dǎo)匯編程序?qū)Υa進(jìn)行匯編,輔助編程人員進(jìn)行匯編編程機(jī)器指令(Instructions)運(yùn)行期間由機(jī)器執(zhí)行偽指令(Directives,Pseudo)-由匯編器處理匯編語(yǔ)言指示符-指示匯編器進(jìn)行相應(yīng)的操作 操作偽指令-匯編器匯編成對(duì)應(yīng)機(jī)器指令 魯東大學(xué) LUDONG UNIVERSITY偽指令舉例AREA ThumbSub, CODE, READONLY ENTRY CO

2、DE32 ;ARM header ADR r0, start + 1 CODE16 ;Thumb. start MOV r0, #10 doadd MOV pc, lr END 匯編控制偽指令 魯東大學(xué) LUDONG UNIVERSITYARM匯編語(yǔ)言偽指令雜項(xiàng)偽指令報(bào)告?zhèn)沃噶畈僮鱾沃噶顢?shù)據(jù)定義偽指令符號(hào)定義偽指令 魯東大學(xué) LUDONG UNIVERSITY符號(hào)定義偽指令符號(hào)定義指令(Symbol definition directives):用于定義ARM匯編程序中的變量(實(shí)為常量),可進(jìn)行重新賦值。GBLA, GBLL, GBLSLCLA, LCLL, LCLS SETA, SETL,S

3、ETS 魯東大學(xué) LUDONG UNIVERSITY全局變量聲明 GBLA, GBLL, GBLS- 聲明一個(gè)全局的算術(shù)、邏輯和串變量 有效作用范圍:The scope of the variable is limited to the source file that contains it.DirectivesVariable TypeInitial ValueGBLAarithmetic0GBLL logicalFALSEGBLSstring 魯東大學(xué) LUDONG UNIVERSITY變量賦值 SETA, SETL, SETS-給一個(gè)算術(shù)、邏輯、串變量賦值Example:GLBA aG

4、LBS abcGLBS defa SETA 256*256abc SETS this string contains only one double quotedef SETS this string contains only one $ dollar symbol 魯東大學(xué) LUDONG UNIVERSITYExample GBLA VersionNumberVersionNumber SETA 21 GBLL DebugDebug SETL TRUE GBLS VersionStringVersionString SETS Version 1.0 魯東大學(xué) LUDONG UNIVERSI

5、TY局部變量聲明 LCLA, LCLL, LCLS-聲明一個(gè)局部的算術(shù)、邏輯、串變量有效作用范圍:The scope of the variable is limited to a particular macro that contains it.DirectivesVariable TypeInitial ValueLCLAarithmetic0LCLL logicalFALSELCLSstring 魯東大學(xué) LUDONG UNIVERSITYExampleMACRO ; Declare a macro $label message $a ;Macro prototype line LCL

6、S err ; Declare local string variable err SETS error no: ; Set value of err MEND 魯東大學(xué) LUDONG UNIVERSITY數(shù)據(jù)定義偽指令數(shù)據(jù)定義指令(Data definition directives):用于進(jìn)行數(shù)據(jù)空間分配。SPACEDCB DCD, DCDU MAP, FIELD 魯東大學(xué) LUDONG UNIVERSITYSPACEThe SPACE directive reserves a zeroed block of memory.分配一塊內(nèi)存單元,并用0初始化。ExampleAREA MyDat

7、a, DATA, READWRITEdata1 SPACE 255 ; defines 255 bytes of zeroed store 魯東大學(xué) LUDONG UNIVERSITYDCBThe DCB directive allocates one or more bytes of memory, and defines the initial values of the memory.分配一段字節(jié)內(nèi)存單元,并用偽指令中的expr初始化。 Syntax:label DCB expr ,expr.ExampleDISPTAB DCB 0 x33,0 x43,0 x76ERRSTR DCB “

8、Send data is error!”,0 魯東大學(xué) LUDONG UNIVERSITYDCD,DCDUThe DCD directive allocates one or more words of memory, aligned on 4-byte boundaries.DCDU is the same, except that the memory alignment is arbitrary.分配一段字內(nèi)存單元,并用偽指令中的expr初始化。DCD分配的內(nèi)存單元需要字對(duì)齊,而DCDU則不需要Syntax:label DCDU expr ,expr. 魯東大學(xué) LUDONG UNIVE

9、RSITYExample for DCD,DCDU 魯東大學(xué) LUDONG UNIVERSITY字對(duì)齊和非字對(duì)齊DCB 255 ; Now misaligned .data3 DCDU 20data3 DCD 20 魯東大學(xué) LUDONG UNIVERSITYMAP,F(xiàn)IELDMAP directive sets the origin of a storage map to a specified address. 將內(nèi)存區(qū)(表)的首地址映射到一個(gè)指定地址 is a synonym (同義詞)for MAP.Syntax MAP expr,base-registerExample MAP 0,

10、r9 MAP 0 xff,r9 0,r9 魯東大學(xué) LUDONG UNIVERSITYMAP,F(xiàn)IELDFIELDdirective describes space within a storage map that has been defined using the MAP directive. # is a synonym for FIELD. Syntaxlabel FIELD exprExample MAP 0,r9 Integer FIELD 4 Lab FIELD 4 LDR r0,Lab 魯東大學(xué) LUDONG UNIVERSITYMAP,FIELD-EXAMPLEStartO

11、fMyTable EQU 0 x1000 MAP 0 x1000Integer FIELD 4Integer2 FIELD 4String FIELD 100Array FIELD 128BitMask FIELD 4對(duì)于結(jié)構(gòu)化表結(jié)構(gòu)的存,取操作MOV r1,#1LDR r0,=IntegerSTR r1,r0LDR r2,r0 魯東大學(xué) LUDONG UNIVERSITY操作偽指令-pseudoinstructionPseudo Instruction-編譯器將編譯為ARM機(jī)器指令,與Directive Instuction不同。 ADR ADRL LDR NOP 魯東大學(xué) LUDONG U

12、NIVERSITYADRADR-小范圍地址讀取指令SYNAX ADR 寄存器號(hào),表達(dá)式 地址相對(duì)于PC的偏移量,在-511B512B的范圍內(nèi)。 使用的標(biāo)號(hào)必須是本段內(nèi)定義的,不能使用導(dǎo)入的全局標(biāo)號(hào)。EXAMPLE: ADR r0,GotoThumb+1 BX r0 CODE16 GotoThumb ADD r0,r1 魯東大學(xué) LUDONG UNIVERSITYADRLADRL-中范圍地址讀取指令 可以加載的最大地址范圍在128KB的范圍 與ADR相同,只能加載本段定義的標(biāo)號(hào)地址ADRL與ADR的區(qū)別ADR偽指令通常會(huì)被匯編器翻譯成一條語(yǔ)句 向前-sub rn,pc,#xxx 向后-add rn,pc,#xxxADRL會(huì)翻譯成兩條。 魯東大學(xué) LUDONG UNIVERSITYA

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論