秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

嵌入式系統(tǒng)及應用-Chapter06-匯編語言程序設計

上傳人:沈*** 文檔編號:253202480 上傳時間:2024-12-01 格式:PPT 頁數(shù):47 大?。?16KB
收藏 版權(quán)申訴 舉報 下載
嵌入式系統(tǒng)及應用-Chapter06-匯編語言程序設計_第1頁
第1頁 / 共47頁
嵌入式系統(tǒng)及應用-Chapter06-匯編語言程序設計_第2頁
第2頁 / 共47頁
嵌入式系統(tǒng)及應用-Chapter06-匯編語言程序設計_第3頁
第3頁 / 共47頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《嵌入式系統(tǒng)及應用-Chapter06-匯編語言程序設計》由會員分享,可在線閱讀,更多相關(guān)《嵌入式系統(tǒng)及應用-Chapter06-匯編語言程序設計(47頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,嵌入式系統(tǒng)及應用,第六章,ARM,匯編語言程序設計,ARM,偽指令,匯編程序設計,ARM,偽指令,偽指令不像機器指令那樣在處理器運行期間由機器執(zhí)行,而是在匯編時會被合適的機器指令代替,實現(xiàn)真正機器指令操作;,地址讀取偽指令,ADR,偽指令,小范圍的地址讀取偽指令,.ADR,指令將基于,PC,相對偏移的地址值讀取到寄存器中,.,在匯編編譯源程序時,ADR,偽指令被編譯器替換成一條合適的指令,.,通常,編譯器用一條,ADD,指令或,SUB,指令來實現(xiàn)該,ADR,偽指令的功能;,指令格式:,ADRcond,reg

2、ister,exper,地址讀取偽指令,ADRL,偽指令,中等范圍的地址讀取偽指令,.ADRL,指令將基于,PC,相對偏移的地址值或基于寄存器 相對偏移的地址值讀取到寄存器中,比,ADR,偽指令可以讀取更大范圍的地址。在匯編編譯源程序時,,ADRL,偽指令被編譯器替換成兩個條合適的指令。,指令格式,ADRLcond,register,exper,地址讀取偽指令,LDR,偽指令,大范圍的地址讀取偽指令,.LDR,偽指令用于加載,32,位的立即數(shù)或一個地址值到指定 寄存器,.,指令格式,LDRcondregister,=,expr/label_expr,舉例,LDR R0,=0 x123456LD

3、R R0,=DATA_BUFFER+0 x10.LTORG,NOP,偽指令,空操作偽指令,無操作,用于實現(xiàn)延時;,舉例,DELAY1NOP,NOP,NOP,SUBS R1,R1,#1BNE DELAY1,變量定義偽指令,全局變量聲明,GBLA variable,:全局數(shù)值變量,GBLL variable,:全局邏輯變量,GBLS variable,:全局字符串變量,局部變量聲明,LBLA variable,:局部數(shù)值變量,LBLL variable,:局部邏輯變量,LBLS variable,:局部字符串變量,變量賦值偽指令,給變量復制:,SETA,偽指令用于給一個全局,/,局部的算術(shù)變量賦值

4、,.,SETL,偽指令用于給一個全局,/,局部的邏輯變量賦值,.,SETS,偽指令用于給一個全局,/,局部的字符串變量賦值,.,變量定義,/,賦值偽指令舉例,GBLL,CodeDbg,CodeDbg,SETL TRUE.GBLA,ByteNo,ByteNo,SETA 8.GBLS,ErrStr,ErrStr,SETS No,semaphone,.,RLIST,偽指令,RLIST,為一個通用寄存器列表定義名稱:,name RLIST,reglist,舉例:,LoReg,RLIST R0-R7,數(shù)據(jù)定義偽指令,數(shù)據(jù)定義偽指令用于數(shù)據(jù)表定義,文字池定義,數(shù)據(jù)空間分配等:聲明一個文字池:,LTORG,

5、分配一塊內(nèi)存空間,并用,0,初始化,:SPACE,分配一段字節(jié)的內(nèi)存單元,并用指定的數(shù)據(jù)初始化:,DCB,分配一段字的內(nèi)存單元,并用指令的數(shù)據(jù)初始化:,DCD,和,DCDU,LTORG,偽指令,LTORG,用于聲明一個文字池,(literal-pool),在使用,LDR,偽指令時,要在適當?shù)牡刂芳尤?LTORG,聲明 文字池,這樣就會把要加載的數(shù)據(jù)保存在文字池內(nèi),再用,ARM,的加載指令讀出數(shù)據(jù):,LTORG,舉例:,LDR R0,=0 x12345678ADD R1,R1,R0MOV PC,LRLTORG,SPACE,偽指令,SPACE,用于分配一塊內(nèi)存單元,并用,0,初始化,.%,與,SP

6、ACE,同義:,label SPACE,expr,舉例:,DataBuf,SPACE 1000;,分配,1000,字節(jié),DCB,偽指令,DCB,用于分配一段字節(jié)內(nèi)存單元,并用偽指令中的,expr,初始化,.,一般可用來定義數(shù) 據(jù)表格,或文字符串,.=,與,DCB,同義:,label DCB,expr,expr,expr,.,舉例:,DISPTAB DCB 0 x33,0 x43,0 x53DCB 0 x10,0 x20,0 x30ERRSTR DCB Send data error.,0,DCD,偽指令,DCD,用于分配一段字內(nèi)存單元,并用偽指令中的,expr,初始化,.&,與,DCD,同義:

7、,label DCD,expr,expr,expr,舉例:,VectorsLDR,PC,ResetAddr,LDR,PC,UndefinedAddr,ResetAddr,DCDReset,UndefinedAddr,DCD UndefinedReset.,匯編控制偽指令,匯編控制偽指令用于條件匯編,宏定義,重復匯編控制等:條件匯編控制,:IF,ELSE,和,ENDIF,宏定義,:MACRO,和,MEND,重復匯編,:WHILE,及,WEND,IF,、,ELSE,和,ENDIF,偽指令,IF,ELSE,和,ENDIF,偽指令能夠根據(jù)條件把一段代碼包括在匯編程序內(nèi)或?qū)⑵渑懦?在程序之外:,IF,l

8、ogical_expr,.ELSE.ENDIF,MACRO,和,MEND,偽指令,MACRO,和,MEND,偽指令用于宏定義,.MACRO,標識宏定義的開始,MEND,標識宏定義久的 結(jié)束,.,用,MACRO,及,MEND,定義的一段代碼,稱為宏定義體:,MACRO$label,macroname,para1para2;,宏體定義,MEND,MACRO,和,MEND,偽指令,舉例:,MCARO$,IRQ_Label,HANDLER$,IRQ_Exception,EXPORT$,IRQ_Lable,IMPORT$,IRQ_Exception,$,IRQ_Lable,SUB LR,LR,#4STM

9、FD SP!,R0-R3,R12,LRMRS R3,STSRSTMFD SP!,R3.MEND,DCD,偽指令,WHILE,和,WEND,偽指令用于根據(jù)條件重復匯編相同的或幾乎相同的一段源程序:,WHILE,logical_expr,WEND,舉例:,WHILE no 5no SETA no+1.WEND,雜項偽指令,邊界對齊,:ALIGN,段定義,:AREA,指令集定義,:CODE16,和,CODE32,匯編結(jié)束,:END,程序入口,:ENTRY,常量定義,:EQU,聲明符號可以被外部引用,:EXPORT,和,GLORBAL,聲明一個外部符號,:IMPORT,和,EXTERN,包含文件,:G

10、ET,和,INCLUDE,包含不被匯編的文件,:INCBIN,ALIGN,偽指令,ALIGN,偽指令通過添加補丁字節(jié)使當前位置滿足一定的對齊方式:,ALIGN,expr,舉例:,.,ByteBuf,DCB0 x10ALIGN 4.,AREA,偽指令,AREA,偽指令用于定義一個代碼段或數(shù)據(jù)段,.ARM,匯編程序設計采用分段式設計,一 個,ARM,源程序至少需要一個代碼段,大的程序可以包含多少個代碼段及數(shù)據(jù)段:,AREA,sectionname,attr,attr,舉例:,AREA,Example,CODE,READNOLY,AREA,偽指令,ALIGN:,定義對齊方式,CODE,:定義代碼段,

11、COMDEF,:定義一個可包含代碼和數(shù)據(jù)的通用段,COMMON,:定義一個通用的段,DATA,:定義數(shù)據(jù)段,NOINIT,:無需初始化,READONLY,:指定本段為只讀,代碼段的默認屬性為,READONLY,;,READWRITE,:指定本段為可讀可寫,.,數(shù)據(jù)段的默認屬性為,READWRITE,;,CODE16,和,CODE32,偽指令,CODE16,偽指令指示匯編編譯器后面的指令為,16,位的,Thumb,指令;,CODE32,偽指令指示匯編編譯器后面的指令為,32,位的,ARM,指令;,CODE16CODE32,舉例:,AREA Example CODE,READONLY CODE32

12、,END,偽指令,END,偽指令用于指示匯編編譯器源文件已結(jié)束,.,每一個匯編源文件均要使用一個,END,偽指令,指示本源程序結(jié)束;,END,舉例:,.;,匯編文件內(nèi)容,END,ENTRY,偽指令,ENTRY,偽指令用于指定程序的入口點:,ENTRY,舉例:,AREA,EXample,CODE,READONLY,ENTRYCODE32START MOV R1,#0 x10.,EQU,偽指令,EQU,偽指令為數(shù)字常量,基于寄存器的值和程序中的標號定義一個名稱。*與,EQU,同義:,name EQU,expr,type,舉例:,T_bit,EQU 0 x20 ABCD EQU label+8,EX

13、PORT,和,GLOBAL,偽指令,EXPORT,聲明一個符號可以被其它文件引用,.,相當于聲明了一個全局變量,.GLOBAL,與,EXPORT,相同:,EXPORT symbolGLOBAL symbol,舉例:,EXPORT,InitStack,GLOBAL Vectors,IMPORT,和,EXTERN,偽指令,IMJPORT,偽指令指示編譯器當前的符號不是在本源文件中定義的,而是在其他源文 件中定義的,在本源文件中可能引用該符號,.EXTERN,與,IMPORT,相同:,IMPORT symbolEXTERN symbol,舉例:,IMPORT,InitStack,EXTERN Vec

14、tors,GET,和,INCLUDE,偽指令,GET,偽指令將一個源文件包含到當前源文件中,并將被包含的文件在具當前位置進 行匯編處理,INCLUDE,與,GFT,同義:,GET filenameINCLUDE filename,舉例:,INCLUDE s3c44b0.inc,INCBIN,偽指令,INCBIN,偽指令將一個文件包含到當前源文件中,而被包含的文件不進行匯編處理:,INCBIN filename,舉例:,INCBIN,charlib.bin,ARM,匯編程序設計,文件格式,編寫規(guī)范,子程序調(diào)用,數(shù)據(jù)塊拷貝,查表操作,完整的例子,文件格式,匯編規(guī)范,標號必須在一行的頂格書寫,其后面

15、不要添加,:,,而指令均不能頂格書寫,;,ARM,匯編器對標識符大小寫敏感,書寫標號及指令時字母大小寫要一致,;,注釋使用,;,,注釋內(nèi)容由,;,開始到此行 結(jié)束,注釋可以在一行的頂格書寫,;,匯編規(guī)范,正確的例子,.Str1 SETS My string.0USR_STACK EQU 64START LDR R0,=0 x11223456;,地址送,R0MOV R1,#0LOOPMOV R2,#2,匯編規(guī)范,不正確的例子,.START MOV R0,#1ABC:MOV R1,#2MOV R2,#3loop,Mov,R2,#3B Loop,子程序調(diào)用,用,BL,指令進行調(diào)用,該指令會把返回的,

16、PC,值保存在,LR,舉例,.BL DELAY,;調(diào)用子程序,.DELAY.MOV PC,LR,;子程序返回,數(shù)據(jù)比較跳轉(zhuǎn),匯編程序可以使用,CMP,指令進行兩個數(shù)據(jù)比較,然后調(diào)用相應的,ARM,條件碼,實現(xiàn)跳轉(zhuǎn);,舉例,CMP R5,#10BEQ DOEQUAL.CMP R1,R2ADDHI R1,R1,#10ADDLS R1,R1,#5.ANDS R1,R1,#0 x80BNE WAIT,循環(huán),MOV R1,#10;,循環(huán)次數(shù),LOOP.;,循環(huán)體,SUBS R1,R1,#1BNE LOOP.,數(shù)據(jù)塊復制,LDR R0,=DATA_DSTLDR R1,=DATA_SRCMOV R10,#10LOOP LDMIA R1!,R2-R9STMIA R0!,R2-R9SUBS R10,R10,#1BNE LOOP,棧操作,ARM,使用存儲器訪問指令,LDM/STM,實現(xiàn)棧操作,用于子程序寄存器保存,.,注意,使用 堆棧時,要先分配好堆??臻g,設置好寄存器,R13(,即堆棧指針,SP),否則操作失敗,.,舉例,STMFD SP!,R0-R7,LR.BL DELAY.LDMFD SP!,R0-

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!