資源描述:
《第四章ARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章ARM系統(tǒng)硬件設(shè)計(jì)基礎(chǔ)1、匯編語言程序常用的符號(hào)(1)常量常量是指其值在程序運(yùn)行過程中不能被改變的量。ARM匯編程序支持的常量有數(shù)字常量、邏輯常量和字符串常量。數(shù)字常量一般為32位的整數(shù);邏輯常量只有兩種取值:真或假;字符串常量為一個(gè)固定的字符串。(2)變量變量是指其值在程序運(yùn)行過程中可以改變的量。在ARM匯編語言程序中,可使用GBLA、GBLL、GBLS偽指令聲明全局變量,使用LCLA、LCLL、LCLS偽指令聲明局部變量,并可使用SETA、SETL和SETS對(duì)其進(jìn)行初始化。(3)變量代換程序中的變量可通過代換操作取得一個(gè)
2、常量。代換操作符為“$”。數(shù)字變量前面有一個(gè)代換操作符“$”,編譯器會(huì)將該數(shù)字變量的值轉(zhuǎn)換為十六進(jìn)制的字符串,并將該十六進(jìn)制的字符串代換“$”后的數(shù)字變量。邏輯變量前面有一個(gè)代換操作符“$”,編譯器會(huì)將該邏輯變量代換為它的取值(真或假)。字符串變量前面有一個(gè)代換操作符“$”,編譯器會(huì)將該字符串變量的值代換“$”后的字符串變量。(3)變量代換LCLSS1;定義局部字符串變量S1和S2LCLSS2S1SETS“Test!”S2SETS“Thisisa$S1”;字符串變量S2的值為“ThisisaTest!”4.2.1ARM匯編器支持的
3、偽指令偽操作不像機(jī)器指令一樣在CPU運(yùn)行時(shí)執(zhí)行,而是在匯編程序期間進(jìn)行處理的。1、符號(hào)定義(SymbolDefinition)偽操作2、數(shù)據(jù)定義(DataDefinition)偽操作3、匯編控制(AssemblyControl)偽操作4、其他常用的偽操作1、符號(hào)定義偽操作符號(hào)定義偽指令用于定義ARM匯編程序中的變量、對(duì)變量賦值以及定義寄存器的別名等操作。常見的符號(hào)定義偽指令有如下幾種:(1)定義全局變量GBLA、GBLL和GBLS(2)定義局部變量LCLA、LCLL和LCLS(3)對(duì)變量賦值SETA、SETL、SETS(1)GBL
4、A、GBLL和GBLS語法GBLA(GBLL或GBLS)全局變量名GBLA(GlobalArithmetic)定義一個(gè)全局的數(shù)字變量,并初始化為0GBLL(GlobalLogic)定義一個(gè)全局的邏輯變量,并初始化為F(假)GBLS(GlobalString)定義一個(gè)全局的字符串變量,并初始化為空(1)GBLA、GBLL和GBLSGBLATest1Test1SETA0xaaGBLLTest2Test2SETL{TRUE}GBLSTest3Test3SETS“Testing”(2)LCLA、LCLL和LCLS語法格式LCLA(LCLL
5、或LCLS)局部變量名LCLA偽指令用于定義一個(gè)局部的數(shù)字變量,并初始化為0LCLL偽指令用于定義一個(gè)局部的邏輯變量,并初始化為F(假)LCLS偽指令用于定義一個(gè)局部的字符串變量,并初始化為空(2)LCLA、LCLL和LCLSLCLATest4Test1SETA0xaaLCLLTest5Test2SETL{TRUE}LCLSTest6Test3SETS“Testing”(3)SETA、SETL和SETS語法變量名SETA(SETL或SETS)表達(dá)式SETA偽指令用于給一個(gè)數(shù)字變量賦值SETL偽指令用于給一個(gè)邏輯變量賦值SETS偽指
6、令用于給一個(gè)字符串變量賦值(4)RLIST(RegisterList)語法名稱RLIST{寄存器列表}作用對(duì)一個(gè)通用寄存器列表定義名稱,使用該偽指令定義的名稱可在ARM指令LDM/STM中使用實(shí)例RegListRLIST{R0-R5,R8,R10}2、數(shù)據(jù)定義偽操作數(shù)據(jù)定義偽操作一般用于為特定的數(shù)據(jù)分配存儲(chǔ)單元,同時(shí)可完成已分配存儲(chǔ)單元的初始化。(1)DCB(DistributeContinuousByte)語法標(biāo)號(hào)DCB表達(dá)式作用分配一片連續(xù)的字節(jié)存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。其中,表達(dá)式可以為0~255的數(shù)字或字符串
7、。DCB也可用“=”代替。實(shí)例StrDCB“Thisisatest!”(2)DCW語法標(biāo)號(hào)DCW表達(dá)式作用分配一片連續(xù)的半字存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。其中,表達(dá)式可以為程序標(biāo)號(hào)或數(shù)字表達(dá)式。實(shí)例DataTestDCW1,2,3(3)DCD語法標(biāo)號(hào)DCD表達(dá)式作用分配一片連續(xù)的字存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。其中,表達(dá)式可以為程序標(biāo)號(hào)或數(shù)字表達(dá)式。DCD也可用“&”代替。實(shí)例DataTestDCD4,5,6(4)DCFD語法標(biāo)號(hào)DCFD表達(dá)式作用為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲(chǔ)單元并用偽指令中指定的表達(dá)式
8、初始化。每個(gè)雙精度的浮點(diǎn)數(shù)占據(jù)兩個(gè)字單元。實(shí)例FDataTestDCFD2E115,-5E7(5)DCFS語法標(biāo)號(hào)DCFS表達(dá)式作用為單精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。每個(gè)單精度的浮點(diǎn)數(shù)占據(jù)一個(gè)字單元。實(shí)例FDa