資源描述:
《第4節(jié) 匯編語言源程序格式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第4節(jié)匯編語言源程序格式第4章匯編語言程序設(shè)計(jì)?匯編語言源程序格式?匯編語言上機(jī)過程?匯編語言與C語言混合編程技術(shù)?常用ARM源程序文件類型?匯編語言程序的結(jié)構(gòu)1?匯編語言程序的結(jié)構(gòu)2?匯編語言程序的結(jié)構(gòu)3?匯編語言程序的結(jié)構(gòu)4?ARM的匯編語言程序一般由幾個(gè)段組成,每個(gè)段均由AREA偽操作定義。?段可以分為多種,如代碼段、數(shù)據(jù)段、通用段,每個(gè)段又有不同的屬性,如代碼段的默認(rèn)屬性為READONLY,數(shù)據(jù)段的默認(rèn)屬性為READWRITE。?本程序定義了兩個(gè)段,第一個(gè)段為代碼段codesec,它在存儲(chǔ)器中存放用于程序執(zhí)行的代碼以及main函數(shù)的本
2、地字符串;第二個(gè)段為數(shù)據(jù)段constdatasec,存放了全局的字符串,由于本程序沒有對(duì)數(shù)據(jù)進(jìn)行寫操作,該數(shù)據(jù)段定義屬性為READONLY。?匯編語言的行構(gòu)成1?格式:?[標(biāo)簽]指令/偽操作/偽指令操作數(shù)[;語句的注釋]?所有的標(biāo)簽必須在一行的開頭頂格寫,前面不能留空格,后面也不能跟C語言中的標(biāo)簽一樣加上“:”;?ARM匯編器對(duì)標(biāo)識(shí)符的大小寫敏感,書寫標(biāo)號(hào)及指令時(shí)字母的大小寫要一致;?注釋使用“;”符號(hào),注釋的內(nèi)容從“;”開始到該行的結(jié)尾結(jié)束?匯編語言的行構(gòu)成2?標(biāo)簽?標(biāo)簽是一個(gè)符號(hào),可以代表指令的地址、變量、數(shù)據(jù)的地址和常量。?一般以字母開
3、頭,由字母、數(shù)字、下劃線組成。?當(dāng)符號(hào)代表地址時(shí)又稱標(biāo)號(hào),可以以數(shù)字開頭,其作用范圍為當(dāng)前段或者在下一個(gè)ROUT偽操作之前。?指令/偽操作?指令/偽操作是指令的助記符或者定義符,它告訴ARM的處理器應(yīng)該執(zhí)行什么樣的操作或者告訴匯編程序偽指令語句的偽操作功能。?匯編語言的標(biāo)號(hào)1?標(biāo)號(hào)代表地址。?標(biāo)號(hào)分為段內(nèi)標(biāo)號(hào)和段外標(biāo)號(hào)。段內(nèi)標(biāo)號(hào)的地址值在匯編時(shí)確定,段外編號(hào)的地址值在鏈接時(shí)確定。?在程序段中,標(biāo)號(hào)代表其所在位置與段首地址的偏移量。根據(jù)程序計(jì)數(shù)器(PC)和偏移量計(jì)算地址即程序相對(duì)尋址。?在映像中定義的標(biāo)號(hào)代表標(biāo)號(hào)到映像首地址的偏移量。映像的首地
4、址通常被賦予一個(gè)寄存器,根據(jù)該寄存器值與偏移量計(jì)算地址即寄存器相對(duì)尋址。?例如:?loopSUBSr0,r0,#1;每次循環(huán)使r0=r0-1?BNEloop;跳轉(zhuǎn)到loop標(biāo)號(hào)去執(zhí)行?匯編語言的標(biāo)號(hào)2?在宏中也可以使用局部符號(hào)。?局部標(biāo)號(hào)是0~99的十進(jìn)位數(shù)開始,可以重復(fù)定義。?局部標(biāo)號(hào)引用格式:?%{F
5、B}{A
6、T}N{routname}?%:局部標(biāo)號(hào)引用操作。?F:編譯器只向前搜索。?B:編譯器只向后搜索。?A:編譯器搜索宏的所有嵌套層次。?T:編譯器搜索宏的當(dāng)前層。?例如:?01SUBSr0,r0,#1;每次循環(huán)使r0=r0-1?BN
7、E%B01;跳轉(zhuǎn)到01標(biāo)號(hào)去執(zhí)行?匯編語言的常量?常量:其值在程序運(yùn)行過程中不能被改變的量。?(1)數(shù)字常量:數(shù)字常量有3種表示方式:?十進(jìn)制數(shù),如1、2、123?十六進(jìn)制數(shù),如0x123,0xabc?n進(jìn)制數(shù),形式為n_XXX,n的范圍是2到9,XXX是具體數(shù)字?(2)字符常量:由單引號(hào)及中間的字符組成,包括C語言中的轉(zhuǎn)義字符,如’a’,’’?(3)字符串常量:由一對(duì)雙引號(hào)及中間的字符串表示,中間也可以使用C語言中的轉(zhuǎn)義字符,比如:“abcdef