版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、共96頁1第第5 5章章 ARMARM匯編匯編本章主要內(nèi)容本章主要內(nèi)容1 1、匯編、匯編器和匯編語言程序的基本、匯編、匯編器和匯編語言程序的基本概念概念2 2、ARMARM匯編語言中的符號匯編語言中的符號 3 3、ARMARM的偽指令、宏的偽指令、宏4 4、匯編語句格式、匯編語句格式共96頁25 5、ARMARM匯編語言中的表達(dá)式及運(yùn)算符匯編語言中的表達(dá)式及運(yùn)算符共96頁35.1 5.1 匯編器與匯編語言匯編器與匯編語言 ARM ARM編譯器支持匯編語言的程序設(shè)計編譯器支持匯編語言的程序設(shè)計和和C/C+C/C+語言的程序設(shè)計,以及兩者兩者語言的程序設(shè)計,以及兩者兩者的混合編程。的混合編程。1
2、1、什么叫匯編語言、什么叫匯編語言 匯編語言匯編語言(Assembly Language)(Assembly Language)是面是面向機(jī)器的程序設(shè)計語言。向機(jī)器的程序設(shè)計語言。共96頁4 在匯編語言中,用助記符在匯編語言中,用助記符(Memoni)(Memoni)代代替操作碼,用地址符號替操作碼,用地址符號(Symbol)(Symbol)或標(biāo)號或標(biāo)號(Label)(Label)代替地址碼。這樣用符號代替機(jī)代替地址碼。這樣用符號代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。于是匯編語言亦稱為符號語言。匯編語言。于是匯編語言亦稱為符號語言。 2 2、匯
3、編語言的優(yōu)點(diǎn)、匯編語言的優(yōu)點(diǎn)共96頁5 匯編語言比機(jī)器語言易于讀寫、易于匯編語言比機(jī)器語言易于讀寫、易于調(diào)試和修改,同時也具有機(jī)器語言執(zhí)行速調(diào)試和修改,同時也具有機(jī)器語言執(zhí)行速度快,占內(nèi)存空間少等優(yōu)點(diǎn),但在編寫復(fù)度快,占內(nèi)存空間少等優(yōu)點(diǎn),但在編寫復(fù)雜程序時具有明顯的局限性,匯編語言依雜程序時具有明顯的局限性,匯編語言依賴于具體的機(jī)型,不能通用,也不能在不賴于具體的機(jī)型,不能通用,也不能在不同機(jī)型之間移植。同機(jī)型之間移植。 3 3、什么叫匯編器、什么叫匯編器共96頁6 使用匯編語言編寫的程序,機(jī)器不能直使用匯編語言編寫的程序,機(jī)器不能直接識別,要由一種程序?qū)R編語言翻譯成接識別,要由一種程序?qū)R
4、編語言翻譯成機(jī)器語言,這種起翻譯作用的程序叫匯編機(jī)器語言,這種起翻譯作用的程序叫匯編程序(也叫匯編器),匯編程序是系統(tǒng)軟程序(也叫匯編器),匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。件中語言處理系統(tǒng)軟件。4 4、什么叫匯編、什么叫匯編 匯編程序把匯編語言翻譯成機(jī)器語言匯編程序把匯編語言翻譯成機(jī)器語言的過程稱為匯編。的過程稱為匯編。共96頁75 5、匯編語言程序、匯編器和機(jī)器碼程序、匯編語言程序、匯編器和機(jī)器碼程序之間的關(guān)系之間的關(guān)系共96頁86 6、什么是偽指令、什么是偽指令 人們設(shè)計了一些專門用于指導(dǎo)匯編器人們設(shè)計了一些專門用于指導(dǎo)匯編器進(jìn)行匯編工作的指令,由于這些指令不形進(jìn)行匯編工作的指令,由
5、于這些指令不形成機(jī)器碼指令,它們只是在匯編器進(jìn)行匯成機(jī)器碼指令,它們只是在匯編器進(jìn)行匯編工作的過程中起作用,所以被叫做偽指編工作的過程中起作用,所以被叫做偽指令。令。7 7、什么叫宏、什么叫宏共96頁9 為了提高編程效率和增強(qiáng)程序的可讀為了提高編程效率和增強(qiáng)程序的可讀性,有設(shè)計了一些宏。性,有設(shè)計了一些宏。8 8、什么叫匯編語言程序、什么叫匯編語言程序 用匯編語言編寫的程序叫做匯編語言用匯編語言編寫的程序叫做匯編語言程序。程序。9 9、什么叫目標(biāo)程序、什么叫目標(biāo)程序 自源程序翻譯成的機(jī)器碼程序就叫做自源程序翻譯成的機(jī)器碼程序就叫做目標(biāo)程序。目標(biāo)程序。共96頁105.2 ARM5.2 ARM偽指
6、令偽指令 在在ARMARM匯編程序語言中,有如下幾種匯編程序語言中,有如下幾種偽指令:偽指令: 段定義、符號定義、數(shù)據(jù)定義、數(shù)段定義、符號定義、數(shù)據(jù)定義、數(shù)據(jù)緩沖池定義、數(shù)據(jù)表定義、數(shù)據(jù)空間據(jù)緩沖池定義、數(shù)據(jù)表定義、數(shù)據(jù)空間分配、匯編控制偽指令以及其他偽指令。分配、匯編控制偽指令以及其他偽指令。5.2.1 5.2.1 段定義偽指令段定義偽指令共96頁11 段定義偽指令的格式為:段定義偽指令的格式為:AREA ,AREA , SectionnameSectionname:段名,若段名以數(shù)字開頭,:段名,若段名以數(shù)字開頭,則必須用符號則必須用符號“| |”擴(kuò)起來,如擴(kuò)起來,如|1_test|1_t
7、est|。 attrattr:屬性字段,多個屬性字段用逗號分:屬性字段,多個屬性字段用逗號分隔。隔。共96頁12屬性屬性含義含義備注備注CODECODE代碼段代碼段默認(rèn)讀默認(rèn)讀/ /寫屬性為寫屬性為READONLYREADONLYDATADATA數(shù)據(jù)段數(shù)據(jù)段默認(rèn)屬性為默認(rèn)屬性為READWRITEREADWRITEREADONLYREADONLY本段為只讀本段為只讀READWRITEREADWRITE本段為可讀可寫本段為可讀可寫ALIGNALIGN表達(dá)式表達(dá)式 多源文件共享段多源文件共享段ELFELF的代碼段和數(shù)據(jù)段的代碼段和數(shù)據(jù)段為字對齊為字對齊COMMONCOMMON多源文件共享段多源文件共
8、享段共96頁13 AREA Init, CODE,READONLYAREA Init, CODE,READONLY ; 程序段程序段 該偽指令定義了一個代碼段,段名為該偽指令定義了一個代碼段,段名為InitInit,屬性為只讀。,屬性為只讀。 一個匯編語言程序至少要有一個段。一個匯編語言程序至少要有一個段。5.2.2 5.2.2 符號定義偽指令符號定義偽指令 符號的命名由編程者決定,但必須遵符號的命名由編程者決定,但必須遵循以下約定:循以下約定:共96頁14(1 1)符號區(qū)分大小寫,同名的大、小寫符)符號區(qū)分大小寫,同名的大、小寫符號會被編譯器認(rèn)為是兩個不同的符號。號會被編譯器認(rèn)為是兩個不同的
9、符號。(2 2)符號在其作用范圍內(nèi)必須唯一。)符號在其作用范圍內(nèi)必須唯一。(3 3)自定義的符號不能與系統(tǒng)保留字相)自定義的符號不能與系統(tǒng)保留字相同。同。(4 4)符號不應(yīng)與指令或偽指令同名)符號不應(yīng)與指令或偽指令同名1 1、定義全局變量偽指令、定義全局變量偽指令GBLAGBLA、GBLLGBLL和和GBLSGBLS共96頁15 GBLA GBLA、GBLLGBLL和和GBLSGBLS偽指令用于定義一偽指令用于定義一個個ARMARM程序中的全局變量,并將其初始化。程序中的全局變量,并將其初始化。GBLA(GBLLGBLA(GBLL和和GBLS) GBLS) variblevarible為變量名
10、稱。為變量名稱。GBLAGBLA定義一個全局?jǐn)?shù)字變量,其默認(rèn)初定義一個全局?jǐn)?shù)字變量,其默認(rèn)初值為值為0 0。共96頁16GBLLGBLL定義一個全局邏輯變量,其默認(rèn)初定義一個全局邏輯變量,其默認(rèn)初值為值為F F(假)。(假)。GBLSGBLS定義一個全局字符串變量,其默認(rèn)定義一個全局字符串變量,其默認(rèn)初值為空。初值為空。GBLA Test1 GBLA Test1 ;定義一個全局?jǐn)?shù)字變量,;定義一個全局?jǐn)?shù)字變量,變量名為變量名為Test1Test1GBLL Test2 GBLL Test2 ;定義一個全局邏輯變量,;定義一個全局邏輯變量,變量名為變量名為Test2Test2共96頁17GBLS
11、Test1 GBLS Test1 ;定義一個全局字符串變;定義一個全局字符串變量,變量名為量,變量名為Test3Test3 全局變量的變量名在整個程序范圍內(nèi)全局變量的變量名在整個程序范圍內(nèi)必須具有唯一性。必須具有唯一性。2 2、定義局部變量位指令、定義局部變量位指令LCLALCLA、LCLLLCLL和和LCLSLCLS LCLA LCLA、LCLLLCLL和和LCLSLCLS偽指令用于定義一偽指令用于定義一個個ARMARM程序中的局部變量,并將其初始化。程序中的局部變量,并將其初始化。共96頁18LCLA(LCLLLCLA(LCLL和和LCLS) LCLS) variblevarible為變量
12、名稱。為變量名稱。LCLALCLA定義一個局部數(shù)字變量,其默認(rèn)初定義一個局部數(shù)字變量,其默認(rèn)初值為值為0 0。LCLLLCLL定義一個局部邏輯變量,其默認(rèn)初定義一個局部邏輯變量,其默認(rèn)初值為值為F F(假)。(假)。LCLSLCLS定義一個局部字符串變量,其默認(rèn)定義一個局部字符串變量,其默認(rèn)初值為空。初值為空。共96頁19LCLA Test4 LCLA Test4 ;定義一個局部數(shù)字變量,;定義一個局部數(shù)字變量,變量名為變量名為Test4Test4LCLL Test5 LCLL Test5 ;定義一個局部邏輯變量,;定義一個局部邏輯變量,變量名為變量名為Test5Test5LCLS Test6
13、 LCLS Test6 ;定義一個局部字符串變;定義一個局部字符串變量,變量名為量,變量名為Test6Test6 局部變量的變量名在變量作用范圍內(nèi)局部變量的變量名在變量作用范圍內(nèi)必須具有唯一性。必須具有唯一性。共96頁20 在默認(rèn)情況下,局部變量只在定義該在默認(rèn)情況下,局部變量只在定義該變量的程序段內(nèi)有效。變量的程序段內(nèi)有效。3 3、變量賦值偽指令、變量賦值偽指令SETASETA、SETLSETL和和SETSSETS 偽指令偽指令SETASETA、SETLSETL和和SETSSETS用于給一個用于給一個已經(jīng)定義的全局變量或局部變量進(jìn)行賦值。已經(jīng)定義的全局變量或局部變量進(jìn)行賦值。Test1 SE
14、TA 0 xAA ;Test1 SETA 0 xAA ;將將Test1Test1變量賦值變量賦值為為0 xAA0 xAA。共96頁21Test2 SETL TRUE ;Test2 SETL TRUE ;將將Test2Test2變量賦變量賦值為真。值為真。Test3 SETS Test3 SETS “TestingTesting” ; ;將將Test3Test3變量賦變量賦值為值為“TestingTesting” 。Test4 SETA 0 xBB ;Test4 SETA 0 xBB ;將將Test4Test4變量賦值變量賦值為為0 xBB0 xBB。Test5 SETL TRUE ;Test5
15、 SETL TRUE ;將將Test5Test5變量賦值變量賦值為真。為真。共96頁22Test6 SETS Test6 SETS “TestingTesting” ; ;將將Test6Test6變量變量賦值為賦值為“TestingTesting” 。4 4、定義寄存器列表偽指令、定義寄存器列表偽指令RLISTRLIST 指令指令LDM/STMLDM/STM需要使用一個比較長的需要使用一個比較長的寄存器列表,使用偽指令寄存器列表,使用偽指令RLISTRLIST可對一個可對一個列表定義一個統(tǒng)一的名稱。列表定義一個統(tǒng)一的名稱。 RLIST RLIST name name 為表名成;為表名成;lis
16、tlist為寄存器列表。為寄存器列表。共96頁23 RegList RLIST R0-R5RegList RLIST R0-R5,R8R8,R10 R10 ;將;將寄存器列表名稱定義為寄存器列表名稱定義為RegListRegList。 列表中的寄存器訪問次序根據(jù)寄存器列表中的寄存器訪問次序根據(jù)寄存器的編號由低到高,而與列表中的寄存器陪的編號由低到高,而與列表中的寄存器陪列次序無關(guān)。列次序無關(guān)。5.2.3 5.2.3 程序中的標(biāo)號程序中的標(biāo)號 在匯編語言中用來表示地址的符號就在匯編語言中用來表示地址的符號就叫做標(biāo)號。叫做標(biāo)號。共96頁24 LDR R0,#0 x3FF5000LDR R0,#0
17、x3FF5000 target1 LDR R1,0 xFF target1 LDR R1,0 xFF STR R1,R0 STR R1,R0 LDR R0,#0 x3FF5008 LDR R0,#0 x3FF5008 LDR R1,0 x01 LDR R1,0 x01 STR R1,R0 STR R1,R0 B target1 ; B target1 ;轉(zhuǎn)移到轉(zhuǎn)移到target1target1位置上運(yùn)行位置上運(yùn)行共96頁25 這里的這里的target1target1就是標(biāo)號。就是標(biāo)號。 在在ARMARM匯編中,根據(jù)用途不同標(biāo)號主匯編中,根據(jù)用途不同標(biāo)號主要有以下要有以下2 2種:種:(1 1)
18、目標(biāo)地址標(biāo)號)目標(biāo)地址標(biāo)號 寫在一條指令前面的標(biāo)號。寫在一條指令前面的標(biāo)號。(2 2)數(shù)據(jù)或數(shù)據(jù)區(qū)首地址標(biāo)號)數(shù)據(jù)或數(shù)據(jù)區(qū)首地址標(biāo)號 寫在數(shù)據(jù)或數(shù)據(jù)區(qū)定義偽指令前面的寫在數(shù)據(jù)或數(shù)據(jù)區(qū)定義偽指令前面的標(biāo)號。標(biāo)號。共96頁265.2.4 5.2.4 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令 該指令的功能就是為指定的數(shù)據(jù)分配該指令的功能就是為指定的數(shù)據(jù)分配存儲單元,以及用該數(shù)據(jù)對已分配存儲單存儲單元,以及用該數(shù)據(jù)對已分配存儲單元進(jìn)行初始化。元進(jìn)行初始化。1 1、DCBDCB DCB DCB偽指令用于分配一片連續(xù)的以字偽指令用于分配一片連續(xù)的以字節(jié)為單位的存儲區(qū)域,并用指定的表達(dá)式節(jié)為單位的存儲區(qū)域,并用指定的表
19、達(dá)式對其進(jìn)行初始化。對其進(jìn)行初始化。共96頁27 DCB DCB labellabel為標(biāo)號,為存儲區(qū)域的首地址(可為標(biāo)號,為存儲區(qū)域的首地址(可選)。選)。exprexpr為表達(dá)式,為從標(biāo)號開始存放的數(shù)據(jù)。為表達(dá)式,為從標(biāo)號開始存放的數(shù)據(jù)。該表達(dá)式可以為該表達(dá)式可以為02550255的數(shù)字或字符串。的數(shù)字或字符串。 Dat1 DCB 0 x7EDat1 DCB 0 x7EDCBDCB也可用也可用“= =”代替,即代替,即 Dat1= 0 x7EDat1= 0 x7E共96頁282 2、DCWDCW(或(或DCWUDCWU) DCW DCW(或(或DCWUDCWU)偽指令用于為數(shù)據(jù)分)偽指令用
20、于為數(shù)據(jù)分配一片連續(xù)的半字存儲單元,并用表達(dá)式配一片連續(xù)的半字存儲單元,并用表達(dá)式對其進(jìn)行初始化。對其進(jìn)行初始化。 DCW( DCW(或或DCWU) DCWU) 用用DCWDCW分配的字存儲單元是嚴(yán)格按半分配的字存儲單元是嚴(yán)格按半字對齊的,而用字對齊的,而用DCWUDCWU分配的字存儲單元并分配的字存儲單元并不嚴(yán)格按半字對齊。不嚴(yán)格按半字對齊。共96頁293 3、DCDDCD(或(或DCDUDCDU) DCD DCD(或(或DCDUDCDU)偽指令用于分配一片連)偽指令用于分配一片連續(xù)的字存儲單元,并用偽指令中指定的表續(xù)的字存儲單元,并用偽指令中指定的表達(dá)式初始化。達(dá)式初始化。 DataTes
21、t DCW 1,2,3 ;DataTest DCW 1,2,3 ;分配一片連續(xù)的分配一片連續(xù)的半字存儲單元并初始化半字存儲單元并初始化 DCD( DCD(或或DCDU) DCDU) 共96頁30 用用DCDDCD分配的字存儲單元是字對齊的,分配的字存儲單元是字對齊的,而用而用DCDUDCDU分配的字存儲單元并不嚴(yán)格要求分配的字存儲單元并不嚴(yán)格要求字對齊。字對齊。 DataTest DCD 4,5,6 ;DataTest DCD 4,5,6 ;分配一片連續(xù)的分配一片連續(xù)的存儲單元并初始化存儲單元并初始化 DCD DCD也可用也可用“& &”代替。代替。4 4、DCFDDCFD(或(或DCFDUD
22、CFDU)共96頁31 DCFD DCFD(或(或DCFDUDCFDU)偽指令用于為雙精)偽指令用于為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元,度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達(dá)式初始化。每個并用偽指令中指定的表達(dá)式初始化。每個雙精度的浮點(diǎn)數(shù)占據(jù)兩個字單元。雙精度的浮點(diǎn)數(shù)占據(jù)兩個字單元。 DCFD( DCFD(或或DCFDU) DCFDU) 用用DCFDDCFD分配的字存儲單元是字對齊的分配的字存儲單元是字對齊的而用而用DCFDUDCFDU分配的字存儲單元并不嚴(yán)格字分配的字存儲單元并不嚴(yán)格字對齊。對齊。共96頁32 FDataTest DCFD 2E115,-5E7 ;F
23、DataTest DCFD 2E115,-5E7 ;分配一片分配一片連續(xù)的字存儲單元,并初始化為指定的雙連續(xù)的字存儲單元,并初始化為指定的雙精度數(shù)。精度數(shù)。5 5、DCFSDCFS(或(或DCFSUDCFSU) DCFS DCFS(或(或DCFSUDCFSU)偽指令用于為單精)偽指令用于為單精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元,度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達(dá)式初始化。每個并用偽指令中指定的表達(dá)式初始化。每個單精度浮點(diǎn)熟占據(jù)一個字單元。單精度浮點(diǎn)熟占據(jù)一個字單元。共96頁33 DCFS( DCFS(或或DCFSU) DCFSU) 用用DCFSDCFS分配的字存儲單元是
24、字對齊的分配的字存儲單元是字對齊的而用而用DCFSUDCFSU分配的字存儲單元并不嚴(yán)格字分配的字存儲單元并不嚴(yán)格字對齊。對齊。 FDataTest DCFS 2E5,-5E-7 ;FDataTest DCFS 2E5,-5E-7 ;分配一片分配一片連續(xù)的字存儲單元,并初始化為指定的單連續(xù)的字存儲單元,并初始化為指定的單精度數(shù)。精度數(shù)。6 6、DCQDCQ(或(或DCQUDCQU)共96頁34 DCQ DCQ(或(或DCQUDCQU)偽指令用于分配一片以)偽指令用于分配一片以8 8字節(jié)為單位的連續(xù)存儲區(qū)域,并用偽指令字節(jié)為單位的連續(xù)存儲區(qū)域,并用偽指令中指定的表達(dá)式初始化。中指定的表達(dá)式初始化。
25、 DCQ( DCQ(或或DCQU) DCQU) 用用DCQDCQ分配的存儲單元是字對齊的,分配的存儲單元是字對齊的,而用而用DCQUDCQU分配的字存儲單元并不嚴(yán)格字對分配的字存儲單元并不嚴(yán)格字對齊。齊。共96頁35 DataTest DCQ 100 ;DataTest DCQ 100 ;分配一片連續(xù)的存分配一片連續(xù)的存儲單元并初始化為指定的值。儲單元并初始化為指定的值。7 7、SPACESPACE SPACE SPACE偽指令用于分配一片連續(xù)的存儲偽指令用于分配一片連續(xù)的存儲區(qū)域并初始化為區(qū)域并初始化為0 0。 SPACE SPACE 表達(dá)式為要分配的字節(jié)數(shù),表達(dá)式為要分配的字節(jié)數(shù),SPAC
26、ESPACE也也可用可用“% %”代替。代替。共96頁36 DataSpace SPACE 100 ;DataSpace SPACE 100 ;分配連續(xù)的分配連續(xù)的100100字字節(jié)的存儲單元并初始化為節(jié)的存儲單元并初始化為0 0。8 8、LTORGLTORG 偽指令偽指令LTORGLTORG用來說明某個存儲區(qū)域用來說明某個存儲區(qū)域?yàn)橐粋€用來暫存數(shù)據(jù)的數(shù)據(jù)緩沖區(qū),也叫為一個用來暫存數(shù)據(jù)的數(shù)據(jù)緩沖區(qū),也叫文字遲或數(shù)據(jù)緩沖池。大的代碼段也可以文字遲或數(shù)據(jù)緩沖池。大的代碼段也可以使用多個數(shù)據(jù)緩沖池。使用多個數(shù)據(jù)緩沖池。共96頁37 AREA example, CODE, READONLYAREA e
27、xample, CODE, READONLY Start BL Func1 Start BL Func1 Func1 LDR R1,#0 x800 Func1 LDR R1,#0 x800 MOV PC,LR MOV PC,LR LTORG LTORG ;定義數(shù)據(jù)緩沖池的開始位置;定義數(shù)據(jù)緩沖池的開始位置 Date SPACE 40 Date SPACE 40 ;數(shù)據(jù)緩沖池有;數(shù)據(jù)緩沖池有4040個被初個被初 END END ;始化為;始化為0 0的字節(jié)的字節(jié) 9 9、MAPMAP和和FIELDFIELD共96頁38 在應(yīng)用程序中經(jīng)常使用一種如圖所示在應(yīng)用程序中經(jīng)常使用一種如圖所示的表:的表:
28、共96頁39 MAP MAP可以用可以用“ ”代替。代替。 MAP MAP用于定義一個結(jié)構(gòu)化的內(nèi)存表的用于定義一個結(jié)構(gòu)化的內(nèi)存表的首地址。語法格式如下:首地址。語法格式如下: MAP ,MAP , exprexpr為結(jié)構(gòu)化表首地址??梢詾闃?biāo)號或?yàn)榻Y(jié)構(gòu)化表首地址??梢詾闃?biāo)號或數(shù)字表達(dá)式。數(shù)字表達(dá)式。 baseregisterbaseregister為基址寄存器(可選項)。為基址寄存器(可選項)。基址寄存器的值與基址寄存器的值與exprexpr的值之和就是表首的值之和就是表首地址。地址。共96頁40MAP fun MAP fun ; funfun就是內(nèi)存表的首地址就是內(nèi)存表的首地址 MAP 0 x
29、100,R9 MAP 0 x100,R9 ;內(nèi)存表的首地址為;內(nèi)存表的首地址為R9+0X100R9+0X100 MAP MAP通常和通常和FIELDFIELD偽指令相配合來定義偽指令相配合來定義一個結(jié)構(gòu)化的內(nèi)存表。一個結(jié)構(gòu)化的內(nèi)存表。 FIELD FIELD偽指令用于定義一個結(jié)構(gòu)化內(nèi)存?zhèn)沃噶钣糜诙x一個結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域。表中的數(shù)據(jù)域。 FIELD FIELD labellabel為標(biāo)號。為標(biāo)號。共96頁41 exprexpr為表達(dá)式。它的值為數(shù)據(jù)域所占的字為表達(dá)式。它的值為數(shù)據(jù)域所占的字節(jié)數(shù)。節(jié)數(shù)。 FIELD FIELD偽指令與偽指令與MAPMAP偽指令配合使用偽指令配合使用來定義結(jié)構(gòu)
30、化的內(nèi)存表。來定義結(jié)構(gòu)化的內(nèi)存表。MAPMAP偽指令定義偽指令定義內(nèi)存表的首地址;內(nèi)存表的首地址;FIELDFIELD偽指令定義內(nèi)存?zhèn)沃噶疃x內(nèi)存表中各個數(shù)據(jù)域,并可以為每個數(shù)據(jù)域表中各個數(shù)據(jù)域,并可以為每個數(shù)據(jù)域指定一個標(biāo)號供其他指令引用。指定一個標(biāo)號供其他指令引用。共96頁42 MAP 0X 100 MAP 0X 100 ;定義結(jié)構(gòu)化內(nèi)存表首地址為定義結(jié)構(gòu)化內(nèi)存表首地址為0X1000X100 A FIELD 16 A FIELD 16 ;定義定義A A的長度為的長度為1616字節(jié),位置為字節(jié),位置為0X1000X100 B FIELD 32 B FIELD 32 ;定義定義B B的長度為的
31、長度為3232字節(jié),位置為字節(jié),位置為0X1100X110 S FIELD 256 S FIELD 256 ;定義定義S S的長度為的長度為256256字節(jié),位置為字節(jié),位置為0X1300X130 注意:注意:MAPMAP和和FIELDFIELD偽指令僅用于定義偽指令僅用于定義數(shù)據(jù)結(jié)構(gòu),并不實(shí)際分配存儲單元。數(shù)據(jù)結(jié)構(gòu),并不實(shí)際分配存儲單元。FIELDFIELD也可用也可用“# #”代替。代替。5.2.5 5.2.5 匯編控制偽指令匯編控制偽指令共96頁431 1、IFIF、ELSEELSE和和EDNIFEDNIF IF IF、ELSEELSE和和ENDIFENDIF偽指令能根據(jù)條件偽指令能根據(jù)
32、條件的成立與否決定是否執(zhí)行某個程序段。的成立與否決定是否執(zhí)行某個程序段。IF IF 邏輯表達(dá)式邏輯表達(dá)式 程序段程序段1 1ELSEELSE 程序段程序段2 2ENDIFENDIF共96頁44IFIF、ELSEELSE、ENDIFENDIF偽指令可以嵌套使用。偽指令可以嵌套使用。 GBLL Test GBLL Test ;聲明一個全局邏輯變量;聲明一個全局邏輯變量Test . . IF Test = TRUE IF Test = TRUE 程序段程序段1 1 ELSE ELSE 程序段程序段2 2 ENDIF ENDIF2 2、WHILEWHILE和和WENDWEND共96頁45 WHILE
33、WHILE和和WENDWEND偽指令根據(jù)條件的成立與偽指令根據(jù)條件的成立與否決定是否重復(fù)匯編一個程序段。否決定是否重復(fù)匯編一個程序段。WHILE WHILE 邏輯表達(dá)式邏輯表達(dá)式 程序段程序段WENDWEND 若若WHILEWHILE后面的邏輯表達(dá)式為真,則后面的邏輯表達(dá)式為真,則重復(fù)匯編該程序段,直到邏輯表達(dá)式為假。重復(fù)匯編該程序段,直到邏輯表達(dá)式為假。共96頁46 WHILE WHILE和和WENDWEND偽指令可以嵌套使用。偽指令可以嵌套使用。GBLA CounterGBLA Counter;聲明一個全局?jǐn)?shù)字變量聲明一個全局?jǐn)?shù)字變量CounterCounter SETA 3Counter
34、 SETA 3;賦值;賦值 . WHILE Counter 10 WHILE Counter 10 程序段程序段 WENDWEND5.2.6 5.2.6 其它常用的偽指令其它常用的偽指令共96頁471 1、定義對齊方式偽指令、定義對齊方式偽指令A(yù)LIGNALIGN 使用使用ALIGNALIGN偽指令可用添加填充字節(jié)的偽指令可用添加填充字節(jié)的方式,使當(dāng)前位置實(shí)現(xiàn)某種對齊方式。方式,使當(dāng)前位置實(shí)現(xiàn)某種對齊方式。 ALIGN ALIGN 表達(dá)式表達(dá)式 ,偏移量,偏移量 對齊方式為對齊方式為2 2表達(dá)式的值表達(dá)式的值。偏移量為一個。偏移量為一個數(shù)字表達(dá)式,若使用該字段,則當(dāng)前位置數(shù)字表達(dá)式,若使用該字
35、段,則當(dāng)前位置的對齊方式為的對齊方式為2 2表達(dá)式的值表達(dá)式的值+ +偏移量。偏移量。共96頁48 ;指定后面的指令為;指定后面的指令為8 8字節(jié)對齊字節(jié)對齊 AREA Init, CODE, READONLY, ALIGN=3AREA Init, CODE, READONLY, ALIGN=3 代碼段代碼段 ENDEND2 2、CODE16CODE16和和CODE32CODE32 CODE16CODE16用來表明其后的指令均為用來表明其后的指令均為1616位位ThumbThumb指令;指令;CODE32CODE32偽指令則表明其后面的偽指令則表明其后面的指令均為指令均為3232位位ARMAR
36、M指令。指令。共96頁49 CODE16CODE16(或(或CODE32CODE32) AREA Init,CODE, READONLYAREA Init,CODE, READONLY . CODE32 CODE32 LDR R0,#NEXT+1 LDR R0,#NEXT+1 BX R0 BX R0 CODE16 CODE16 NEXT LDR R3,#0X3FF NEXT LDR R3,#0X3FF END END共96頁503 3、定義程序入口點(diǎn)偽指令、定義程序入口點(diǎn)偽指令ENTRYENTRY ENTRY ENTRY偽指令用于指定匯編程序的入口偽指令用于指定匯編程序的入口點(diǎn)。點(diǎn)。 ENTR
37、YENTRY AREA Init, CODE, READONLYAREA Init, CODE, READONLY ENTRY; ENTRY; .共96頁514 4、匯編結(jié)束偽指令、匯編結(jié)束偽指令ENDEND END END偽指令用于通知編譯器匯編工作偽指令用于通知編譯器匯編工作到此結(jié)束,不再往下匯編了。到此結(jié)束,不再往下匯編了。 ENDEND AREA Init, CODE, READONLYAREA Init, CODE, READONLY END END共96頁525 5、等效偽指令、等效偽指令EQUEQU EQU EQU偽指令用于為程序中的常量、標(biāo)偽指令用于為程序中的常量、標(biāo)號等定義一
38、個等效的字符名字,其作用類號等定義一個等效的字符名字,其作用類似于似于C C語言中的語言中的#define#define。 名稱名稱 EQU EQU 表達(dá)式表達(dá)式 ,類型,類型 EQU EQU也可用也可用“* *”代替。代替。共96頁53 由由EQUEQU偽指令定義的字符名稱,當(dāng)其表偽指令定義的字符名稱,當(dāng)其表達(dá)式為達(dá)式為3232位常量時,可以指定表達(dá)式的數(shù)位常量時,可以指定表達(dá)式的數(shù)據(jù)類型,有以下三種類型:據(jù)類型,有以下三種類型:CODE16CODE16、CODE32CODE32和和DATADATA。 Test EQU 50 Test EQU 50 ;定義標(biāo)號;定義標(biāo)號TestTest的值為
39、的值為5050Addr EQU 0 x55, CODE32 Addr EQU 0 x55, CODE32 ;定義;定義AddrAddr的值的值為為0 x550 x55,其該處為,其該處為3232位的位的ARMARM指令指令共96頁546 6、外部可引用符號聲明偽指令、外部可引用符號聲明偽指令EXPORTEXPORT(或(或GLOBALGLOBAL) 用偽指令用偽指令EXPORTEXPORT可以聲明一個其他源可以聲明一個其他源文件可引用的符號,這種符號也叫做外部文件可引用的符號,這種符號也叫做外部可引用符號??梢梅?。 EXPORT EXPORT 符號符號 WEAKWEAK EXPORT EX
40、PORT可用可用GLOBALGLOBAL代替。代替。共96頁55 標(biāo)號在程序中區(qū)分大小寫,標(biāo)號在程序中區(qū)分大小寫,WEAKWEAK選選項聲明其他的同名標(biāo)號優(yōu)先于該標(biāo)號被引項聲明其他的同名標(biāo)號優(yōu)先于該標(biāo)號被引用。用。 AREA Init, CODE, READONLYAREA Init, CODE, READONLY EXPORT Stest EXPORT Stest END END7 7、IMPORTIMPORT共96頁56 當(dāng)在一個源文件中需要使用另外一個當(dāng)在一個源文件中需要使用另外一個源文件的外部可引用符號時,在被引用的源文件的外部可引用符號時,在被引用的符號前面必須使用偽指令符號前面必須
41、使用偽指令I(lǐng)MPORTIMPORT對其進(jìn)行對其進(jìn)行聲明。聲明。 IMPORT IMPORT 符號符號WEAKWEAK 如果源文件聲明了一個引用符號,則如果源文件聲明了一個引用符號,則無論當(dāng)前源文件中程序是否真正地使用無論當(dāng)前源文件中程序是否真正地使用了該符號,該符號均會被加入到當(dāng)前源了該符號,該符號均會被加入到當(dāng)前源文件的符號表中。文件的符號表中。共96頁57 WEAK WEAK選項表示當(dāng)前所有的源文件都選項表示當(dāng)前所有的源文件都沒有定義這樣一個標(biāo)號時,編譯器也不報沒有定義這樣一個標(biāo)號時,編譯器也不報錯,并在多數(shù)情況下將該標(biāo)號置為錯,并在多數(shù)情況下將該標(biāo)號置為0 0。但該。但該標(biāo)號被標(biāo)號被B
42、B或或BLBL指令所引用時,則將指令所引用時,則將B B或或BLBL指指令置為令置為NOPNOP操作。操作。 AREA Init, CODE, READONLYAREA Init, CODE, READONLY IMPORT Main IMPORT Main END END共96頁588 8、EXTERNEXTERN EXTERN EXTERN偽指令與偽指令與IMPORTIMPORT偽指令的功能偽指令的功能基本相同,但如果當(dāng)前源文件中的程序?qū)嵒鞠嗤?,但如果?dāng)前源文件中的程序?qū)嶋H并未使用該指令,則該符號不會加入到際并未使用該指令,則該符號不會加入到當(dāng)前源文件的符號表中。當(dāng)前源文件的符號表中。
43、其它與其它與IMPORTIMPORT相同。相同。9 9、GETGET(或(或INCLUDEINCLUDE)共96頁59 GET GET偽指令用于將一個源文件包含到當(dāng)偽指令用于將一個源文件包含到當(dāng)前的源文件中,并將被包含的源問在當(dāng)前前的源文件中,并將被包含的源問在當(dāng)前位置進(jìn)行匯編。位置進(jìn)行匯編。 GET GET 文件名文件名 可以使用可以使用INCLUDEINCLUDE代替代替GETGET。 GET GET偽指令只能用于包含源文件,包偽指令只能用于包含源文件,包含目標(biāo)文件則需要使用含目標(biāo)文件則需要使用INCBININCBIN偽指令。偽指令。共96頁60 AERA Init, CODE, READ
44、ONLYAERA Init, CODE, READONLY GET a1.s GET a1.s GET c:a2.s GET c:a2.s END END1010、INCBININCBIN INCBIN INCBIN偽指令用于將一個目標(biāo)文件或偽指令用于將一個目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文件中,被包含數(shù)據(jù)文件包含到當(dāng)前的源文件中,被包含共96頁61的文件不做任何變動地存放在當(dāng)前文件中,的文件不做任何變動地存放在當(dāng)前文件中,編譯器從其后開始繼續(xù)處理。編譯器從其后開始繼續(xù)處理。 INCBIN INCBIN 文件名文件名 AREA Init, CODE, READONLYAREA Init, CO
45、DE, READONLY INCBIN a1.dat INCBIN a1.dat INCBIN c:a2.txt INCBIN c:a2.txt END END共96頁621111、RNRN RN RN偽指令用于給一個寄存器定義一個偽指令用于給一個寄存器定義一個別名,一提高程序的可讀性。別名,一提高程序的可讀性。 名稱名稱 RN RN 表達(dá)式表達(dá)式 名稱為給寄存器定義的別名,表達(dá)式名稱為給寄存器定義的別名,表達(dá)式為寄存器的編碼。為寄存器的編碼。 Temp RN R0 ;Temp RN R0 ;將將R0R0定義一個別名定義一個別名TempTemp共96頁631212、ROUTROUT ROUTR
46、OUT偽指令用于給一個局部變量定義偽指令用于給一個局部變量定義作用范圍。作用范圍。 名稱名稱 ROUTROUT 在程序中未使用該偽指令時,局部變在程序中未使用該偽指令時,局部變量的作用范圍為所在的量的作用范圍為所在的AREAAREA;而使用;而使用ROUTROUT后,局部變量的作用范圍為當(dāng)前后,局部變量的作用范圍為當(dāng)前ROUTROUT和下和下一個一個ROUTROUT之間。之間。共96頁645.3 5.3 宏與宏指令宏與宏指令5.3.1 5.3.1 宏宏1 1、MACROMACRO和和MENDMEND MACRO MACRO和和MENDMEND偽指令可以為一個程序偽指令可以為一個程序段定義一個名
47、稱。這樣,在匯編語言應(yīng)用段定義一個名稱。這樣,在匯編語言應(yīng)用程序中就通過這個名稱來使用它所代表的程序中就通過這個名稱來使用它所代表的程序段,即當(dāng)程序做匯編時,該名稱將被程序段,即當(dāng)程序做匯編時,該名稱將被替換為其所代表的程序段。替換為其所代表的程序段。共96頁65MACROMACRO$ $標(biāo)號標(biāo)號 宏名宏名 $ $參數(shù)參數(shù)1 1, $ $參數(shù)參數(shù)2 2,.程序段(宏定義體)程序段(宏定義體)MENDMEND$ $標(biāo)號:主標(biāo)號,宏內(nèi)的所有其它標(biāo)號必須標(biāo)號:主標(biāo)號,宏內(nèi)的所有其它標(biāo)號必須由主標(biāo)號組成。由主標(biāo)號組成。宏名:宏名稱,為宏在程序中的引用名。宏名:宏名稱,為宏在程序中的引用名。$ $參數(shù)參
48、數(shù)1 1,$ $參數(shù)參數(shù)2 2:宏中可以使用的參數(shù)。:宏中可以使用的參數(shù)。共96頁66 宏中的所有標(biāo)號必須在前面冠以符號宏中的所有標(biāo)號必須在前面冠以符號“$ $”。 MACRO MACRO ;宏定義指令;宏定義指令$MDATA MAXNUM $NUM1,$NUM2 $MDATA MAXNUM $NUM1,$NUM2 ;主標(biāo)號,宏名,參數(shù);主標(biāo)號,宏名,參數(shù) 語句段語句段$MDATD.MAY1 $MDATD.MAY1 ;宏內(nèi)標(biāo)號;宏內(nèi)標(biāo)號 語句段語句段$MDATA.MAY2 $MDATA.MAY2 ;宏內(nèi)標(biāo)號;宏內(nèi)標(biāo)號 語句段語句段 MEND MEND ;宏結(jié)束指令;宏結(jié)束指令共96頁672 2
49、、MEXITMEXIT MEXIT MEXIT用于從宏定義中跳轉(zhuǎn)出去。用于從宏定義中跳轉(zhuǎn)出去。 MEXITMEXIT5.3.2 5.3.2 宏指令宏指令 在在ARMARM中,還有一種匯編器內(nèi)置的無中,還有一種匯編器內(nèi)置的無參數(shù)和標(biāo)號宏參數(shù)和標(biāo)號宏宏指令。宏指令。 在匯編時,這些宏指令被替換成一條在匯編時,這些宏指令被替換成一條或兩條真正的或兩條真正的ARMARM或或ThumbThumb指令。指令。共96頁681 1、近地址讀取指令、近地址讀取指令A(yù)DRADR ADR ADR指令用于將一個近地址值傳遞到指令用于將一個近地址值傳遞到一個寄存器中。一個寄存器中。 ADRcond , ADRcond
50、, regreg為目標(biāo)寄存器名稱。為目標(biāo)寄存器名稱。 exprexpr為表達(dá)式。該表達(dá)式通常是一個程為表達(dá)式。該表達(dá)式通常是一個程序中表示一條指令存儲位置的地址標(biāo)號。序中表示一條指令存儲位置的地址標(biāo)號。共96頁69 該指令的功能是把標(biāo)號所表示的地址該指令的功能是把標(biāo)號所表示的地址傳遞到目標(biāo)寄存器中。傳遞到目標(biāo)寄存器中。 匯編器在匯編時,將把匯編器在匯編時,將把ADRADR偽指令替換偽指令替換成一條真正的成一條真正的ADDADD或或SUBSUB指令,以當(dāng)前的指令,以當(dāng)前的PCPC值減去或加上值減去或加上exprexpr與與PCPC之間的偏移量得到之間的偏移量得到標(biāo)號的地址,并將其傳遞到目標(biāo)寄存器
51、。標(biāo)號的地址,并將其傳遞到目標(biāo)寄存器。 start MOV R0,#10start MOV R0,#10 ADR R4,start ADR R4,start共96頁70共96頁71 由于指令由于指令A(yù)DDADD或或SUBSUB中對立即數(shù)的限制,中對立即數(shù)的限制,因此標(biāo)號地址就不能距離當(dāng)前指令的地址因此標(biāo)號地址就不能距離當(dāng)前指令的地址(PCPC)過遠(yuǎn)。對于非字對齊地址來說,其)過遠(yuǎn)。對于非字對齊地址來說,其距離必須在距離必須在255255字節(jié)以內(nèi);而對于字對齊地字節(jié)以內(nèi);而對于字對齊地址來說,距離必須在址來說,距離必須在10201020字節(jié)一內(nèi)。所以字節(jié)一內(nèi)。所以ADRADR叫做近地址讀取指令。
52、叫做近地址讀取指令。2 2、遠(yuǎn)地址讀取指令、遠(yuǎn)地址讀取指令A(yù)DRLADRL 類似于類似于ADRADR,但可以把更遠(yuǎn)的地址賦,但可以把更遠(yuǎn)的地址賦給目標(biāo)寄存器。給目標(biāo)寄存器。共96頁72 ADRLcond , ADRLcond , regreg為目標(biāo)寄存器名稱。為目標(biāo)寄存器名稱。 exprexpr為表達(dá)式,必須是為表達(dá)式,必須是64KB64KB以內(nèi)非字對以內(nèi)非字對齊地址,齊地址,256KB256KB以內(nèi)的字對齊地址。以內(nèi)的字對齊地址。 該指令只能在該指令只能在ARMARM狀態(tài)下使用,在狀態(tài)下使用,在ThumbThumb狀態(tài)下不能使用。匯編時,狀態(tài)下不能使用。匯編時,ADRLADRL偽偽指令由匯編
53、器替換成兩條合適的指令。指令由匯編器替換成兩條合適的指令。共96頁73 start MOV R0,#10start MOV R0,#10 ADRL R4,start+60000 ADRL R4,start+60000其中其中ADRLADRL將被替換為如下兩條指令:將被替換為如下兩條指令: ADD R4ADD R4,PCPC,#0XE800#0XE800 ADD R4 ADD R4,R4R4,#0X2543#0X2543 如果匯編器找不到合適的兩條指令,如果匯編器找不到合適的兩條指令,將會報錯。將會報錯。3 3、全范圍地址讀取指令、全范圍地址讀取指令LDRLDR共96頁74 LDRcond re
54、g,=expr | label - exprLDRcond reg,=expr | label - expr regreg:目標(biāo)寄存器名稱;:目標(biāo)寄存器名稱; exprexpr:3232位常數(shù);位常數(shù); label label expr expr:為基于:為基于PCPC地址表達(dá)式。地址表達(dá)式。 程序經(jīng)常用這條指令把一個地址傳遞程序經(jīng)常用這條指令把一個地址傳遞到寄存器到寄存器regreg中。匯編器再哦對這種指令中。匯編器再哦對這種指令進(jìn)行匯編時,會根據(jù)指令中進(jìn)行匯編時,會根據(jù)指令中exprexpr的值的大的值的大小來把這條指令替換為合適的指令。小來把這條指令替換為合適的指令。共96頁75(1 1
55、)當(dāng))當(dāng)exprexpr的值未超過的值未超過MOVMOV或或MVNMVN指令所指令所限定的取值范圍時,匯編器用限定的取值范圍時,匯編器用ARMARM的的MOVMOV或或MVNMVN指令來取代宏指令指令來取代宏指令LDRLDR。(2 2)當(dāng))當(dāng)exprexpr的值超過的值超過MOVMOV或或MVNMVN指令所限指令所限定的取值范圍時,匯編器將常數(shù)定的取值范圍時,匯編器將常數(shù)exprexpr放在放在由由LTORGLTORG定義的文字緩沖池,同時用一條定義的文字緩沖池,同時用一條ARMARM的裝載指令的裝載指令LDRLDR來取代宏指令來取代宏指令LDRLDR,而,而這條裝載這條裝載LDRLDR指令則
56、用指令則用PCPC加偏移量的方法加偏移量的方法共96頁76到文字緩沖池中把該常數(shù)讀取到指令指定到文字緩沖池中把該常數(shù)讀取到指令指定的寄存器。的寄存器。 由于這種指令可以傳遞一個由于這種指令可以傳遞一個3232位地址,位地址,因此被叫做全范圍地址讀取指令。因此被叫做全范圍地址讀取指令。4 4、NOPNOP 匯編器對匯編器對NOPNOP指令進(jìn)行匯編時,會將其指令進(jìn)行匯編時,會將其轉(zhuǎn)換為:轉(zhuǎn)換為: MOV R0MOV R0,R0R0共96頁775.4 5.4 匯編語言的規(guī)范匯編語言的規(guī)范5.4.1 5.4.1 匯編語句格式匯編語句格式ARMARM(ThumbThumb)匯編語言的語句格式為:)匯編語
57、言的語句格式為: ;注釋;注釋 在匯編語言程序設(shè)計中,每一條指令在匯編語言程序設(shè)計中,每一條指令的助記符可以全部用大寫或全部用小寫,的助記符可以全部用大寫或全部用小寫,但不允許在一條指令中大小寫混用。但不允許在一條指令中大小寫混用。共96頁78 如果一條語句太長,則可將該長語句如果一條語句太長,則可將該長語句分成若干行來書寫,每行的末尾用分成若干行來書寫,每行的末尾用“ ”來來表示下一行與本行為同一條語句。表示下一行與本行為同一條語句。5.4.2 5.4.2 匯編語言的表達(dá)式和運(yùn)算符匯編語言的表達(dá)式和運(yùn)算符 運(yùn)算次序遵循如下的優(yōu)先級:運(yùn)算次序遵循如下的優(yōu)先級:(1 1)優(yōu)先級相同的雙目運(yùn)算符運(yùn)
58、算順序?yàn)椋﹥?yōu)先級相同的雙目運(yùn)算符運(yùn)算順序?yàn)閺淖蟮接?。從左到右。?6頁79(2 2)相鄰的單目運(yùn)算符的運(yùn)算順序?yàn)閺挠遥┫噜彽膯文窟\(yùn)算符的運(yùn)算順序?yàn)閺挠业阶?,且單目運(yùn)算符的優(yōu)先級高于其他運(yùn)到左,且單目運(yùn)算符的優(yōu)先級高于其他運(yùn)算符。算符。(3 3)括號運(yùn)算符的優(yōu)先級最高。)括號運(yùn)算符的優(yōu)先級最高。1 1、數(shù)字表達(dá)式及運(yùn)算符、數(shù)字表達(dá)式及運(yùn)算符(1 1)+ +、- -、X X、/ /及及MODMOD算術(shù)運(yùn)算符算術(shù)運(yùn)算符 X + Y X + Y 表示表示X X與與Y Y的和。的和。共96頁80(2 2)ROLROL、RORROR、SHLSHL及及SHRSHR移位運(yùn)算符移位運(yùn)算符 X - Y X - Y
59、 表示表示X X與與Y Y的差。的差。 X X Y X X Y 表示表示X X與與Y Y的乘積。的乘積。 X / Y X / Y 表示表示X X除以除以Y Y的商。的商。 X :MOD: Y X :MOD: Y 表示表示X X除以除以Y Y的余數(shù)。的余數(shù)。 X :ROL: Y X :ROL: Y 表示將表示將X X循環(huán)左移循環(huán)左移Y Y位。位。 X :ROR: Y X :ROR: Y 表示將表示將X X循環(huán)右移循環(huán)右移Y Y位。位。共96頁81 X :SHL: Y X :SHL: Y 表示將表示將X X左移左移Y Y位。位。 X :SHR: Y X :SHR: Y 表示將表示將X X右移右移Y
60、 Y位。位。(3 3)ANDAND、OROR、NOTNOT及及EOREOR按位邏輯運(yùn)算符按位邏輯運(yùn)算符 X :AND: Y X :AND: Y 表示將表示將X X和和Y Y按位做邏輯按位做邏輯“與與”的操作。的操作。 X :OR: Y X :OR: Y 表示將表示將X X和和Y Y按位做邏輯按位做邏輯“或或”的操作。的操作。共96頁82 :NOT: Y :NOT: Y 表示將表示將Y Y按位做邏輯按位做邏輯“非非”的的操作。操作。 X :EOR: Y X :EOR: Y 表示將表示將X X和和Y Y按位做邏輯按位做邏輯“異或異或”的操作。的操作。2 2、邏輯表達(dá)式及運(yùn)算符、邏輯表達(dá)式及運(yùn)算符(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車制造行業(yè)顧問工作總結(jié)
- 年產(chǎn)800萬平方米水性超細(xì)纖維材料項目可行性研究報告寫作模板-申批備案
- 2025年全球及中國建筑隔熱用氣凝膠行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國有機(jī)肥快速測定儀行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國實(shí)驗(yàn)室冷藏柜行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國管路無菌連接器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球模型實(shí)時運(yùn)維系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國2.4GHz 無線通訊芯片行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球金屬加工磨料行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球高效智能無孔包衣機(jī)行業(yè)調(diào)研及趨勢分析報告
- 玻璃鋼煙囪方案
- 中國電信應(yīng)急管理整體解決方案
- 中小學(xué)教師師德師風(fēng)法律法規(guī)培訓(xùn)
- 醫(yī)療器械質(zhì)量管理體系文件模板
- 秦始皇嬴政人物生平介紹PPT
- 在馬克思墓前的講話說課稿公開課一等獎市賽課獲獎?wù)n件
- 骨科無痛病房的建立
- 送養(yǎng)收養(yǎng)合同協(xié)議書
- 塑料成型模具設(shè)計(第2版)江昌勇課件0-導(dǎo)論
- 漢語拼音發(fā)音口型及配圖
- 績效考核管理醫(yī)院績效分配方案包括實(shí)施細(xì)則考核表
評論
0/150
提交評論