ARM匯編語言程序設(shè)計(jì)習(xí)題_第1頁
ARM匯編語言程序設(shè)計(jì)習(xí)題_第2頁
ARM匯編語言程序設(shè)計(jì)習(xí)題_第3頁
ARM匯編語言程序設(shè)計(jì)習(xí)題_第4頁
ARM匯編語言程序設(shè)計(jì)習(xí)題_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章ARM指令集和匯編語言程序本章主要介紹以下內(nèi)容:ARM匯編語言程序格式典型ARM匯編語言程序舉例ARM匯編與C,C++混合編程1嵌入式系統(tǒng)開發(fā)中匯編語言設(shè)計(jì)的意義匯編語言程序設(shè)計(jì)更能充分發(fā)揮處理器的硬件特性兩個(gè)優(yōu)勢操作系統(tǒng)移植需要編寫幾百行底層硬件的匯編語言程序,這是C語言不可取代的。優(yōu)化算法的時(shí)空效率,C語言的目標(biāo)代碼優(yōu)化是編譯器完成的,而匯編語言的目標(biāo)代碼優(yōu)化是人工完成的。人是算法的創(chuàng)造者,也是編譯器的設(shè)計(jì)者,人工優(yōu)化比編譯器質(zhì)量高。弱點(diǎn)編程效率低,開發(fā)周期長,經(jīng)濟(jì)代價(jià)大。

25.1ARM匯編語言程序格式兩種ARM匯編語言格式ARM匯編語言程序格式主要有兩種:基于ADS1.2集成開發(fā)環(huán)境的匯編器格式包括SDT在內(nèi),統(tǒng)稱為ADS基于Linux的GNU匯編器格式在本章主要介紹基于ARM公司ADS集成開發(fā)環(huán)境匯編器格式的匯編語言程序設(shè)計(jì)。在后面將介紹基于GNU匯編器的ARM匯編語言程序編寫方法。3預(yù)定義寄存器名及內(nèi)部變量名ARM匯編器中將幾十個(gè)寄存器名稱作為保留字預(yù)先給與了定義,這些預(yù)定義寄存器名都是大小寫敏感的,它們都與具體的寄存器一一對應(yīng)。參看下面的表格。4ARM公司ADS預(yù)定義的寄存器名一覽表預(yù)定義寄存器名描述r0-r15andR0-R15ARM處理器的通用寄存器a1-a4入口參數(shù),處理結(jié)果,暫存寄存器;r0-r3的同義詞v1-v8變量寄存器,r4-r11sbandSB靜態(tài)基址寄存器,r9slandSL棧界限寄存器,r10fpandFP幀指針寄存器,r11ipandIP內(nèi)部過程調(diào)用暫存寄存器,r12spandSP棧指針寄存器,r135ARM公司ADS預(yù)定義的寄存器名一覽表(續(xù))預(yù)定義寄存器名描述lrandLR連接寄存器,r14pcandPC程序寄存器,r15cpsrandCPSR當(dāng)前程序狀態(tài)寄存器spsrandSPSR保存的程序狀態(tài)寄存器f0-f7andF0-F7浮點(diǎn)數(shù)運(yùn)算加速寄存器s0-s31andS0-S31單精度向量浮點(diǎn)數(shù)運(yùn)算寄存器d0-d15andD0-D15雙精度向量浮點(diǎn)數(shù)運(yùn)算寄存器p0-p15協(xié)處理器0-15c0-c15協(xié)處理器寄存器0-156ARM匯編語言程序的部分內(nèi)部變量名清單內(nèi)部變量描述{PC}or.當(dāng)前指令地址{VAR}or@內(nèi)存區(qū)定位計(jì)數(shù)器的當(dāng)前值{TRUE}邏輯值真{FALSE}邏輯值假{CONFIG}匯編器如果在匯編ARM指令,取值為32,如果匯編Thumb指令,取值16{ENDIAN}如果匯編器是大端序,則取值big;如果是小端序,則取值little。{CPU}被選擇的CPU名稱。缺省值是ARM7TDMI。{ARCHITECTURE}該變量內(nèi)容是被選擇的ARM體系結(jié)構(gòu)的名稱。如:3,3M,4T{CODESIZE}{CONFIG}的同義詞7ARM匯編語言程序的語句格式ARM匯編語言程序的語句格式格式如下:{symbol}{instruction|directive|pseudo-instruction}{;comment}對應(yīng)的中文語句格式描述是:{符號(hào)(標(biāo)號(hào))}{指令|指示符|偽指令}{;注釋}語句格式中,花括號(hào)括起來的部分表示可以省略;豎線分隔的字段表示可以替換。8ARM匯編語言程序中的符號(hào)ARM匯編語句中的符號(hào)可以是指令地址或標(biāo)號(hào)、變量、常量和局部標(biāo)號(hào),符號(hào)屬性可以是程序相關(guān)的、寄存器相關(guān)的或者是絕對地址。9(一)符號(hào)命名和書寫規(guī)則符號(hào)的命名和書寫有以下規(guī)則:①符號(hào)命名可以使用大小寫字母,數(shù)字和下劃線。②符號(hào)是大小寫字母敏感的。③除本地行號(hào)外,名稱不能以數(shù)字開頭。④一個(gè)程序段中不能重名。⑤符號(hào)在其作用范圍內(nèi)必須唯一。⑥符號(hào)不能夠與系統(tǒng)內(nèi)部變量或者系統(tǒng)預(yù)定義的符號(hào)同名。例如:a1orR0、sp、cpsr、{PC}or.、{VAR}or@、{CONFIG}、{CPU}等等。10符號(hào)命名和書寫規(guī)則(續(xù))⑦當(dāng)程序中的符號(hào)與指令助記符或者指示符同名時(shí),用雙豎線將符號(hào)括起來。如||buffe_a||,這時(shí)雙豎線并不是符號(hào)的組成部分。⑧在ARM匯編語言程序中,所有符號(hào)必須在一行的最左邊位置開始書寫,即所謂的頂格書寫,不允許包含空格或者制表符。⑨符號(hào)的字符序列中不能大小寫字母相混雜。11(二)常量ARM匯編語言中使用到的常量可以是數(shù)字常量、字符常量、字符串常量和布爾常量。數(shù)字常量有以下3種表示方式:1)十進(jìn)制數(shù),如:535,246。2)十六進(jìn)制數(shù),如:0x645,0xff00。3)n進(jìn)制數(shù),格式為n_XXX,其中n表示n進(jìn)制,從2~9,XXX是具體的數(shù)字。 例如:8_3777,8_5237702數(shù)字常量12字符常量字符常量由一對單引號(hào)括起來,包括一個(gè)單字符或者標(biāo)準(zhǔn)C中的轉(zhuǎn)義字符。例如:’A’,’\n’。字符串常量由一對雙引號(hào)以及由它括住的一組字符串組成,包括標(biāo)準(zhǔn)C中的轉(zhuǎn)義字符。如果需要使用雙引號(hào)或字符$,則必須用””和$$代替。例如執(zhí)行語句:strtwoSETS“Thisischaracterof””” 其編譯結(jié)果是:字符串“Thisischaracterof””被賦值給strtwo變量。13$$在匯編語句中的使用舉例 GBLSadd4ffadd4ff SETS“ADDr4,r4,#0xFF“ ;setupadd4ff $add4ff.00 ;invokeadd4ff ;thisproduces ;ADDr4,r4,#0xFF00 ;elaboratesubstitution GBLSs1 GBLSs2 GBLSfixup GBLAcountcount SETA14s1 SETS"a$$b$count" ;s1nowhasvaluea$b0000000Es2 SETS"abc"Fixup SETS"|xy$s2.z|" ;fixupnowhasvalue|xyabcz||C$$code|MOVr4,#16 ;butthelabelhereisC$$code14邏輯值常量布爾常量TRUE和FALSE在表達(dá)式中寫為:{TRUE},{FALSE}。15(三岔)表脫達(dá)式AR奪M匯編駁語言蘆中的荒表達(dá)算式由粱符號(hào)角、數(shù)舅值、冠單目類操作勁符、獵雙目離操作菊符以臨及括驅(qū)號(hào)組值成。奪運(yùn)算參的優(yōu)卡先級(jí)質(zhì)次序薯與標(biāo)目準(zhǔn)C一樣烤。16字符攻串表宏達(dá)式字符期串由勻字符薦串常扇量、外字符姨串變出量、勢操作餃符以妹及括副號(hào)組跑成。斑最大祖長度蛇為51嫩2字節(jié)雪,最樓短0個(gè)字菠節(jié)。屋字符斥串表壇達(dá)式地的組跌成元仍素有冷:字蜻符串貍常量卻、字獵符串柴變量替、操士作符蝴等。霉字符嘴串常購量由熱包含塊在雙香引號(hào)余內(nèi)的捎一系呢列字羅符組挽成。菌當(dāng)在采字符增串中什包含移美元烘符號(hào)$或者眉引號(hào)近”時(shí)敞,用$$表示米一個(gè)$,用墊””桑表示旗一個(gè)棒”。注字符蠻串變煙量用馬指示腳符GB刃LS(全嫂局字釀符串年)或臉者LC慈LS(局凝部字嘗符串熔)聲穗明,展用SE蕉TS賦值筑。取京值范扔圍與搶字符婦表達(dá)愉式相雅同。17AR帳M匯編饑語言芝中的不字符濕串操周作符操作符功能操作符功能LEN返回字符串的長度CHR將0~255之間整數(shù)變?yōu)閱蝹€(gè)字符STR將一個(gè)數(shù)字量變換為串LEFT返回字符串的左子串RIGHT返回字符串的右子串CC連接兩個(gè)字符串18指令衫格式偏說明封:LE驅(qū)NX;返鏡回X字符胡串長峰度ST忘RM;將護(hù)數(shù)字M轉(zhuǎn)換旺成一升個(gè)字憶符串XRI泰GH樂TN;返店回X字符抓串右帽邊長予度為N的子新串XLE甘FTN;返峰回X字符衛(wèi)串左綱邊長賺度為N的卻子串CH淡RM;搞返回瓦數(shù)字M表示艦的單吼個(gè)字索符XCCY;返并回字須符串X和Y連接付的字赴符串19數(shù)字捆表達(dá)啄式數(shù)字掙表達(dá)言式由銳數(shù)字競常量尺、數(shù)渴字變勒量、斧操作果符和透括號(hào)襲組成滔。數(shù)性字表號(hào)達(dá)式回表示踐的是框一個(gè)32位數(shù)橋的整劉數(shù),并其取摘值范題圍為0~研232-1;當(dāng)燒作為織有符亭號(hào)數(shù)狹時(shí),治其取在值范潛圍為-231~231-1。匯編皮器對-n和232-n不做裳區(qū)別谷,匯踐編時(shí)賊對關(guān)追系運(yùn)紹算符她采用革無符滿號(hào)數(shù)斷方式偉處理偵,這儀就意脅味著0>飛-1是{F雅AL悄SE館}。20邏輯嬌表達(dá)私式邏輯摘表達(dá)賽式由崇邏輯榴常量汁、邏勇輯操陡作符非、關(guān)挖系操握作符臺(tái)以及喬括號(hào)拍組成園。取核值范柱圍為{F說AL責(zé)SE盡}和{T罷RU指E}。21(四禍)地懶址標(biāo)迫號(hào)當(dāng)符廁號(hào)代坡表地林址時(shí)歌稱為飛標(biāo)號(hào)悅(La圣be枝l)。以數(shù)尾字開聚頭的詳標(biāo)號(hào)槽其作傷用范各圍是思當(dāng)前鬧段(欣沒有肉使用RO資UT指示州符時(shí)趨),跡這種京標(biāo)號(hào)凱又稱自為局名部標(biāo)膚號(hào)(Lo齊ca肚l狼La裹be危l)。22三種潔類型巾標(biāo)號(hào)(1)PC相關(guān)宏標(biāo)號(hào)(2)寄資存器紡相關(guān)桂標(biāo)號(hào)(3)絕戶對地陶址23PC相關(guān)與標(biāo)號(hào)PC相關(guān)耗標(biāo)號(hào)遣表示哨程序怒計(jì)數(shù)充器加秧減一盞個(gè)數(shù)膝值常勸數(shù)后餃得到機(jī)的地濟(jì)址值替。常鐮用來自指明輪一個(gè)樸分支艦指令若的目編標(biāo)地嫂址,騾或者郊訪問驚嵌入迫在代肝碼段狐中的解一個(gè)荒數(shù)據(jù)體項(xiàng)。具體唯標(biāo)記職方法估是:陷在匯熄編語咱言程酷序指脅令的晚前面客寫入暮標(biāo)號(hào)電,或堤者在垂一個(gè)睡數(shù)據(jù)堵指示曾符前膠面寫色入標(biāo)巨號(hào)。保通常劈燕用DC圾B或者DC待D等指陡示符懶定義呢。24DC婚B,DC騎D指令往格式夾:XDC矛BEX焦P1,{EX請P2}……如定田義一里個(gè)字旁節(jié)為滴單位份的標(biāo)姿號(hào)XS董TRDC泛B“HE曠LL鄉(xiāng)豐O戰(zhàn)WO翁RL筒D!采”,衫0DC冶B0x紹32譽(yù),0靈x3蓮4,四0x閘35XDC咐DEX秒P1,{EX仿P2}……定義廉一個(gè)勿字為輕單位帽的標(biāo)站號(hào)LD理R域PC待,枝RE易SE嫩TA壺DD然R……RE酷SE鴿TA連DD茫R令DC號(hào)D搞RE尼SE針T……RE館SE頓T25寄存溉器相喪關(guān)標(biāo)宴號(hào)寄存安器標(biāo)陡號(hào)表止示指周定寄編存器膀的值墊加減燦一個(gè)拖數(shù)值省常數(shù)侄后得肆到的獅地址夠值。檢常常沃用于歇訪問兆位于來數(shù)據(jù)彈段中抱的數(shù)趣據(jù)。蒙通常柴用MA地P或者FI民EL接D等指購示符肝定義峰。格式另:MA堅(jiān)PEX容PR{,BA鵲SE_RE牲G}{LA柔BL叉E}FI趨EL飽DEX壁PR如:MA巖P0x虎00撈40抱00斯00塘,專R9CO著UN夜T饅FI池EL前D歇4X行FI弟EL管D獅8Y苗FI吸EL變D敞826絕對筋地址絕對省地址梢是一撞個(gè)32位的肥無符截號(hào)數(shù)披字常他量,僑可尋忙址范根圍是0~蛾231-1。使蛙用它歇可以眨直接悶尋址訊整個(gè)始地址津空間附。27(五得)段蔽內(nèi)標(biāo)層號(hào)和等段外揭標(biāo)號(hào)AR殘M處理燭器的繳地址慘標(biāo)號(hào)愈分為老段內(nèi)仆標(biāo)號(hào)銀和段唉外標(biāo)蠻號(hào)。走段內(nèi)封標(biāo)號(hào)葉的地服址值合在匯娘編時(shí)努確定虎,段糟外標(biāo)貝號(hào)的土地址罷值在根連接痰時(shí)確陜定。28程序竹相對意尋址只和寄厲存器淚相對泥尋址在程仁序段傅中標(biāo)夫號(hào)代餃表其捆所在步位置健與段短首地污址的醫(yī)偏移離量,華根據(jù)適程序霸計(jì)數(shù)疑器和葡偏移袋量計(jì)爆算地?fù)u址稱棍為程披序相絕對尋勒址。在映虹像文樸件中問定義睬的標(biāo)澡號(hào)代捆表標(biāo)晃號(hào)到饅映像擴(kuò)首地調(diào)址的謊偏移稍量。勉映像矮的首摸地址敏通常價(jià)被賦仰予一培個(gè)寄陣存器持,根孟據(jù)該察寄存私器值旺與偏頃移量膠計(jì)算傲地址小稱為齒寄存淘器相濱對尋戲址。29(六跌)局失部標(biāo)鉆號(hào)AR贈(zèng)M匯編叔語言進(jìn)的宏渠常常遵使用旁局部拘標(biāo)號(hào)順。局競部標(biāo)云號(hào)提砌供分坦支指滅令在醒匯編渴程序呀的局帖部范援圍內(nèi)窄進(jìn)行列跳轉(zhuǎn)錦,主紐奉要用乎途是駐匯編寸子程蕩序中殺的循懸環(huán)和故條件廣編碼災(zāi)。它哲是一子個(gè)0~謠99之間漠的數(shù)堅(jiān)字,母后面貸可以慈有選貧擇地盤附帶脈一個(gè)液符號(hào)范名稱堂。局部倡標(biāo)號(hào)山特別薯適用明于宏染。30局部跪標(biāo)號(hào)價(jià)(續(xù)1)使用RO瓣UT指示右符可響以限估制局掏部標(biāo)淘號(hào)的哀范圍述。只補(bǔ)能在香該局再部標(biāo)墨號(hào)的蛛范圍侍引用卵局部歌標(biāo)號(hào)臣。如墨果在守該范墾圍的甩上下光兩個(gè)娃方向各都沒表有匹暫配的祖標(biāo)號(hào)蘋,匯立編器酷將給馳出一牲個(gè)錯(cuò)從誤信陰號(hào)并州停止帝匯編敵。局部騙標(biāo)號(hào)木語法贊格式呀如下葉:n{頭ro躍ut脖na堤me}被引繞用的情局部大標(biāo)號(hào)今語法鄰規(guī)則股是:%博{F嗽|B留}昆{A仙|T吼}播n收{(diào)ro拋ut點(diǎn)na鼻me}31局部委標(biāo)號(hào)管(續(xù)2)n是局差部標(biāo)憑號(hào)的副數(shù)字稍號(hào)。ro加ut哨na方me是當(dāng)框前局擔(dān)部范賀圍的東名稱阻。%表示蔽引用導(dǎo)操作勺。F指示政匯編普器只急向前鳥搜索B指示凈匯編賽器只故向后蓮搜索A指示疊匯編鍛器搜作索宏轎的所冒有嵌魯套層謀次T指示俊匯編塑器搜孔索宏府的當(dāng)著前層飾次如果F和B都沒刑有指鍬定,漸則匯棚編器越首先施向前熊搜索壞,再慕向后遠(yuǎn)搜索企。如弦果A和T都沒灣有指器定,史匯編兩器搜減索從炎宏的涂當(dāng)前廁層次材到宏總的最壓高層型次,雞比當(dāng)疊前層按次低賠的宏暮不再攏搜索挨。32AR華M匯編累語言聰程序邁編寫培規(guī)范AR倡M匯編刷語言初程序丸源代買碼中惱允許筆有空桿行,剪可以共在匯遷編程所序中百加上阻一個(gè)藝空白役行,改來增祝加程珍序的籌可閱收讀性看。此貪外需垂要注桿意的練是:幣指令霜,指兇示符落,偽仆指令尼前必候須加辮空格鞠或者Ta題b制表分符,盯這就蘿是說佩指令印,指特示符襯,偽芽指令頂不可把以從鎮(zhèn)行的臺(tái)最左必邊開傻始書張寫,山即不旅能頂癢格書佛寫。在AR掌M匯編篩語言任程序眾中,戰(zhàn)所有覺標(biāo)號(hào)滲必須們在一污行的舟最左封邊的截位置餅開始尺書寫淹,標(biāo)闊號(hào)的狀后面濃不要繼加“挪:”驕。指鏟令,停指示懷符,顧寄存隆器名室可以羞用小卡寫字救母也素可以號(hào)用大百寫字董母來走表示色,但飯不能名大小草寫字柏母相廚雜。33AR物M匯編驚語言臨程序歲編寫酸規(guī)范丹(續(xù)綢)當(dāng)一壟行寫維不下器時(shí),磁可以爆用反津斜線階‘\’作為泊這一碗行最遭后的炒符號(hào)盾,然疲后另欠起一匹行接伸下去叔寫,沾這樣眼匯編多器會(huì)霸將這憶兩行芬代碼記看作就一行辟代碼健。需追要注紀(jì)意的塘是,煎如果斤在被閑引號(hào)爐括住惠的字傘符串斗中使般用反手斜線縮慧‘\’,則綿反斜坦線‘\’不能矛起到柴續(xù)行珍的作爺用。酒每行啦的長丟度限醫(yī)制一筒般在12測8~25丸5個(gè)字俊符串機(jī)之間委。分號(hào)滾‘;’除非盼在字噴符串雨常量亡中出緊現(xiàn),稅否則摧它的軍出現(xiàn)素就表伙示著押注釋隊(duì)的開永始,池此注情釋直羊至行趴尾結(jié)帽束。用可以忍將注服釋單訊獨(dú)列默為一仁行。釘所有血注釋僻被匯細(xì)編器溫忽略悅。34匯編機(jī)語句陰規(guī)則適舉例AR細(xì)EA鬼S械ta駛rt調(diào)up擴(kuò),Co察de可,R盲EA上DO堅(jiān)NL踢YST群R1渴S記ET納S筍“T爺hi興s嗎is顆a村n規(guī)AR且M睛pr論oc語es先so須r”SE殖NT乓BLD波R弓R3輩,彩=B榨LK松AD油DR樸ES加SAN咸DS洗R渠2,真R2陜,#隔0X城40FI潔EL早D皆4AR同EA挺RRo酷ut拜in踏eA掩,C皇od佳e,智RE痰A(chǔ)D源ON延LYMO體V紐奉R1耗0,課#0崖XF址F0孝0SU茂B1歸MO埋V州R6腫,#兼10漸0SE炎C:據(jù)MO祥V乓R8戶,#催0X騾20宅0Flo遼opMo艷vR2濟(jì),#宿3B反L殊oo擁p355.欣1.尺4慚AR生M匯編瞇語言批指示唐符AR起M匯編蒼語言抬程序蠶指示亡符的奴英文毅原文濁是di轎re駛ct糟iv蛛e,AR館M指示倉符相麻當(dāng)于x8沫6處理休器匯筍編語茫言程肌序中交的偽灘指令冰。AR太M指示棚符語從句與AR吐M機(jī)器霧指令顯不存口在一岔一對敢應(yīng)的攤關(guān)系膏,它駐指示根匯編潛器在景匯編降目標(biāo)濾代碼震時(shí)進(jìn)滿行變赤量定堆義、校存儲(chǔ)側(cè)單元類分配必等操咱作。AR招M指示劣符大棍致可扒以分壁成6種類水型,愛分別堂是:籠符號(hào)譽(yù)定義藝、數(shù)末據(jù)定收義、玩匯編絮控制民、框熟架控皆制、斑信息坑報(bào)告的和雜棉項(xiàng)。36AR汽EA指示友符用熊于定怨義一丘個(gè)代訪碼段熄或者婆數(shù)據(jù)株段。語法咸格式AR油EAse矮ct夜io宿nn遲am競e{,at轎tr}{,at予tr}.索..域.其中徑:se從ct森io牽nn埋am局e為所椅定義某的代杜碼段?;蛘哂罃?shù)據(jù)厭段的摘名稱休。如支果該避名稱裂是以激數(shù)字夠開頭探的,卡則該析名稱總必須訊用“治|”基括起眉來,梅如|1_丟da立ta鳳se快c|。還有棄一些帖代碼蓄段具把有約敲定的閱名稱鉗,如綁|.t債ex還t|表示C語言尤編譯密器產(chǎn)頃生的竟代碼襯段或粘者是艙與C語言夜庫相售關(guān)的觀代碼咱段。At拉tr是該焰代碼蝦段(或者著程序籠段)的屬馳性。在AR屬EA指示以符中塞,各干屬性諸間用刺逗號(hào)榴隔開胖。(一鞭)AR乓EA指示甩符37AR億EA的屬瓦性下面思列舉核主要恐的屬紅性:AL斬IG斧N=箭ex蘭pr停es促si挑on。默認(rèn)缸的情輕況下靜,EL鑄F的代次碼段團(tuán)和數(shù)姑據(jù)段喘是4字節(jié)速對齊課的。Ex泄pr尖es闖si碌on可以健取0~31的數(shù)慮值,卡相應(yīng)駛的對立齊方華式為(2ex福pr預(yù)es嬸si拴on)字節(jié)售對齊疲。如ex嚼pr單es袖si槐on散=3時(shí)為8字節(jié)喊對齊到。AS唉SO飯C=加se湯ct貫io富n。指定妨與本供段相匙關(guān)的EL邪F段。連任何繭時(shí)候它連接se潮ct粗io咳n段也令必須墳包括se槐ct細(xì)io病nn耍am禽e段。CO胃DE定義恢代碼匯段。刃默認(rèn)板屬性化為RE紙AD紗ON閉LY。CO釘MD暈EF定義挑一個(gè)婚通用恥的段孫。該遮段可姜以包淋含代廊碼或省者數(shù)買據(jù)。撈在個(gè)疊源文碗件中巨,同零名的CO啦MD鋸EF段必桂須相絞同。38AR世EA的屬芽性(商續(xù))CO灰MM斗ON定義興一個(gè)糠通用懶的段絨。該獨(dú)段不復(fù)包含辮任何四用戶犧代碼投和數(shù)雄據(jù),嚴(yán)連接奪器將氏其初以始化敬為0。各忘源文嬌件中手同名顛的CO工MM第ON段公蹈用同狼樣的追內(nèi)存巡壽單元促,連抓接器勝為其饅分配棒合適把的尺好寸。DA弟TA定義渣數(shù)據(jù)眠段。鞭默認(rèn)覆屬性冬為RE遵AD醬WR鞋IT白E。NO拐IN草IT指定臨本數(shù)陽據(jù)段記僅僅侵保留濾了內(nèi)柔存單批元,轟而沒嚴(yán)有將憲各初稈始值業(yè)寫入努內(nèi)存挖單元登,或型者將顛個(gè)內(nèi)便存單劈燕元值鍵初始割化為0。RE串AD款ON冶LY指定亂本段犬為只頭讀,偽代碼頂段的叔默認(rèn)訪屬性鎮(zhèn)為RE蔽AD稠ON洞LY。RE臺(tái)AD琴WR絞IT繞E指定竭本段畫為可尖讀可捎寫,崗數(shù)據(jù)鞠段的找默認(rèn)賤屬性未為RE拘AD顛WR碑IT淘E。39AR跡EA指示用符舉庫例舉例下面事的指棄示符膨定義稻了一垂個(gè)代快碼段范,代哲碼段絕的名崗稱為Ma詳in泉pr但o,屬性杜為RE泉AD劫ON針LY。AR家EAMa售in取pr占o(jì),獨(dú)CO饞DE潤,似RE徒AD祝ON拿LY;c沈od傾e銅se若gm剩en判t40(二萍)EN抓TR答Y指示壯符EN泊TR應(yīng)Y指示殿符指阻定程復(fù)序的增入口矮點(diǎn)語法交格式EN耐TR注Y使用存說明一個(gè)瘦程序(可以驗(yàn)包含絹多個(gè)陽源文黑件)中至鋸少要冶有一寧個(gè)EN遙TR寬Y(可以延有多撕個(gè)EN小TR駁Y),但一彈個(gè)源閘文件急中最面多只燃能有久一個(gè)EN萌TR嶺Y(可以虎沒有EN膏TR拳Y)。示例AR悔EA風(fēng)e年xa路mp巴le訊,婚CO大DE村,溫RE饅AD馳ON您LYEN歇TR礎(chǔ)Y對;應(yīng)用光程序懸的入勺口點(diǎn)41(三浴)CO均DE毫16和CO廟DE境32指示桶符CO觀DE厚16指示乘符告局訴匯佛編編誤譯器推后面作的指著令序櫻列為16位的Th襯um年b指令日。CO夾DE櫻32指示披符告墓訴匯艷編編站譯器憑后面粘的指冰令序閑列為32位的AR廢M指令溫。語法鋸格式CO萍DE線16泊/C今OD凍E3糞2使用前說明當(dāng)匯費(fèi)編源通程序罵中同屠時(shí)包錦含AR撞M指令爆和Th調(diào)um宅b指令挺時(shí),桑使用CO乘DE柱16指示理符告武訴匯洋編編越譯器什后面?zhèn)闹覆铝钚蚍戳袨?6位的Th蕉um燭b指令扇;使偏用CO架DE策32指示腎符告溪訴匯于編編尺譯器駕后面碧的指第令序亭列為32位的AR倆M指令啟。但賀是,CO短DE從16指示卸符和CO備DE喂32指示騾符只濫是告程訴編化譯器永后面蚊指令賞的類負(fù)型,得該指可示符泊本身喘并不堆進(jìn)行鈔程序陰狀態(tài)執(zhí)的切保換。42CO盤DE彩16搜/C鄉(xiāng)豐OD佩E3潑2舉例在下客面的捆例子肅中,菠程序析先在AR逢M狀態(tài)負(fù)下執(zhí)勵(lì)行,勉然后音通過BX指令嫩切換新到Th昌um扒b狀態(tài)燈,并筑跳轉(zhuǎn)固到相志應(yīng)的Th府um詞b指令清處執(zhí)朱行。東在Th的um甜b程序蒼入口耗處用CO駕DE貴16指示菊符標(biāo)萌識(shí)下盒面的案指令題為Th儲(chǔ)um灰b指令艦。參羨看下使面的摧指令育段:……算……擱……休.AR詞EACh梨an伏ge捏St起at恰e,馳CO五DE冒,轎RE稿AD極ON朝LYCO惰DE桂32意;指示格下面知的指遲令為AR謠M指令LD淚R臨r豆0,稱=獅st貸ar磨t+君1BX宰r0襪;切換食到Th香um讓b,并鋤跳轉(zhuǎn)求到st粥ar普t處執(zhí)詳行CO掉DE沿16猶;指示區(qū)下面壯的指徐令為Th癥um掘b指令st碌ar荒t引MO耍V添r1缺,味#1準(zhǔn)043(四凳)EQ繞U指示淘符EQ勸U指示戲符為慮數(shù)字疼常量般、基坑于寄粘存器衛(wèi)的值硬和程典序中鬼的標(biāo)紡號(hào)(基于PC的值)定義話一個(gè)敢字符蛛名稱雕。*是EQ惡U的同末義詞延。語法崇格式na初me罵E翁QUex攀pr{,萬ty謝pe何}其中戶:ex機(jī)pr為基碗于寄管存器名的地舌址值森、程恒序中陡的標(biāo)腎號(hào)、32位的濤地址聰常量辦或者32位的將常量帥。na泥me為EQ撓U指示宏符為ex圣pr定義裳的字險(xiǎn)符名占稱。ty孟pe當(dāng)ex搜pr為32位常負(fù)量時(shí)販,可奧以使熟用ty陷pe指示ex俘pr表示有的數(shù)敘據(jù)的克類型螞。44EQ日U(續(xù))ty貼pe有下讓面3種取替值:CO剃DE緩16CO傻DE變32DA候TA使用酬說明EQ毯U指示綿符的乓作用浮類似澡于C語言順中的#d羊ef桃in斥e,用于局為一列個(gè)常蝕量定鎖義字定符名膨稱。示例ab渠cdEQ泛U棍2紀(jì);定義ab陽cd符號(hào)眉的值響為2ab敢cdEQ站U庭la裙be月l+費(fèi)16恐;定義ab散cd符號(hào)雙的值(l汪ab攻el幅+1曠6)ad董dr筐1濟(jì)EQ粘U殘0x撈lC羊,過CO乏DE舉32隨;定義ad盤dr岸1符號(hào)對值為;絕對格地址桿值0x挎lC,而且號(hào)該處笛為AR拆M指令乓。45(五吃)RO刑UT指示微符RO灰UT指示洞符用例于標(biāo)串記局號(hào)部標(biāo)祥號(hào)使征用范馬圍的搞邊界膏。用艦法如次下:{N時(shí)AM揀E}垂R葡OU栽T使用夸說明憲:NA藏ME是指罰定作訂用范吉圍的許名稱使用RO向UT指示蚊符用抱于規(guī)慈定局笑部標(biāo)天號(hào)的坑使用飯范圍辣。避污免無途意之檢中用眠錯(cuò)局餃部標(biāo)籮號(hào)導(dǎo)視致的漏越界資。如:SU淘B1萍R印OU往T……SU嬌B1蓋R勇OU帝T46RO構(gòu)UT姻(續(xù))RO靠UT具A相R得OU神T蠢;定義耐局部搬標(biāo)號(hào)種有效范范圍,名稱珍為RO戲UT宇A(yù)…3R調(diào)OU昨TA紙;定義RO悄UT愛A中的褲局部軟標(biāo)號(hào)3…BE渣Q租%筒4傾;若條咽件成渾立,則跳株轉(zhuǎn)到奇局部臥標(biāo)號(hào)4的位鑄置…BE杜Q喇%靜3鬧;若條壞件成嫩立,則跳裙轉(zhuǎn)到商局部盛標(biāo)號(hào)3的位室置…4R踩OU集TA篇;定義RO覽UT破A中的凳局部番標(biāo)號(hào)4…OT扁HE允RP稈RO個(gè)G瘋R顏OU塞T潛;定義針新的漫局部臣標(biāo)號(hào)龍有效丘范圍47(六唱)EN托D指示剖符EN褲D指示掛符告建訴編量譯器賄已經(jīng)真到了增源程仿序結(jié)鼓尾。語法異格式乏:EN府D使用心說明鄭:每一絲式個(gè)匯盡編源增程序額都包效含EN愚D(zhuǎn)指示肺符,買以告蕩訴本芝源程蔬序的鑒結(jié)束艘。示例笑:AR肺EA津e他xa栽mp討le桌C寶OD懼E,RE畫AD殖ON貼LY……要………意…EN懶D……席…48(七保)AL呢IG況N指示柿符AL遙IG禁N指示位符通刑過添溫加補(bǔ)祝丁字獻(xiàn)節(jié)使炭當(dāng)前毅位置汪滿足濟(jì)一定扁的對邊齊方冰式。語法戴格式AL蚊IG蒼N領(lǐng){ex怎pr{,of窮fs夢et政}}其中斥,ex酸pr為數(shù)誤字表房誠達(dá)式盯,用己于指屯定對箭齊方覺式。剝可能封的取圓值為2的次叢冪,悲如1、2、4、8等。屬如果樹指示痛符中積沒有掀指定ex寫pr,則當(dāng)咬前位傍置對孤齊到兆下一缺個(gè)字從邊界萍處。of撐fs至et為數(shù)遇字表姓達(dá)式侍。表粉示當(dāng)動(dòng)前位鼓置到肥下一首個(gè)地瞧址之市間按初照:of懷fs猜et疫+n*ex互pr的方媽式進(jìn)躺行對猜齊49AL遞IG榜N(續(xù)1)使用突說明下面帆的情狹況中友,需椅要特蘋定的串地址違對齊尿方式膚:Th旅um萬b的宏貓指令A(yù)D融R要求復(fù)地址雅是字纖對齊坐的,壯而Th撤um僑b代碼劫中地仰址標(biāo)霸號(hào)可喚能不陰是字勻?qū)R傘的。豪這時(shí)輔就要浴使用漿指示久符AL箭IG搭N鼓4使Th飄um索b代碼杯中的放地址雁標(biāo)號(hào)逼字對烈齊。由于計(jì)有些AR香M處理太器的CA體CH協(xié)E采用焰了其劃他對散齊方莖式,杜如16字節(jié)混的對防齊方驢式,聾這時(shí)灣使用AL手IG薪N指示她符指蒙定合燦適的譽(yù)對齊衡方式奪可以贊充分脂發(fā)揮垂該CA砌CH走E的性切能優(yōu)秩勢。LD迫RD及ST懲RD指令領(lǐng)要求條內(nèi)存恩單元扯是8字節(jié)籠對齊額的。宮這樣秤在為賺這兩凳個(gè)指巖令分陜配的槍內(nèi)存菜單元賤前要泡使用AL梯IG巴N填8實(shí)現(xiàn)8字節(jié)腫對齊松方式未。地址貍標(biāo)號(hào)倒通常烈自身頸沒有獲對齊憂要求政。而葉在AR殖M代碼早中要盒求地衫址標(biāo)偷號(hào)是祝字對殊齊的仔,在Th坡um故b代碼儲(chǔ)中要河求字南節(jié)對辜齊。謊這樣頸需要端使用狐合適象的AL蠅IG載N指示域符來嗚調(diào)整隨對齊妙方式憤。50(八活)DC塞B指示團(tuán)符DC腹B用于榴在內(nèi)喪存中輪分配祖一個(gè)核字節(jié)希單元泄或者繡一組咱字節(jié)錘單元譜,并棒用指改定的EX慶PR對其模進(jìn)行博初始喜化語法評格式持:{la數(shù)be虜l}炮DC獄B{精u}悲ex粒pr樣{,睜ex吳pr}{l牛ab妄el杯}是可緣瑞選項(xiàng)碧,ex女pr為-1明28幕~2言55的值名或字康符串含。例:AR丹EA懼DC祝B_運(yùn)EX儀AM歷PL社E房誠,C矩OD救EDC溝B招1AL鏟IG泡N播4,盜2DC獎(jiǎng)B煮1Pr調(diào)om灑pt側(cè)1歲D價(jià)CB書“情NO描W百th繼e投in仍fo禽rm壺at泊io羅n后ma獨(dú)na午ge巖me萬nt怒s之ys塵te驕m延is銀ru構(gòu)nn落in雹g!薦”,奧051(九舅)MA減P指示則符MA嚷P用于瞧將一鐵個(gè)結(jié)姜構(gòu)化段內(nèi)存躁的首壩地址阿映射擊到一拿個(gè)指籍定地赴址。^是MA流P的同窩義詞語法砌格式司:MA幣Pex嗎pr{,續(xù)ba遺se訂-r饒eg概is嗚te拼r}當(dāng)只異有ex亦pr時(shí),ex澤pr表示法此內(nèi)旨存首起地址誕的值哥。當(dāng)包循括ba偷se決-r狂eg捏is所te消r時(shí)內(nèi)局存首識(shí)地址臺(tái)值為ba爛se獻(xiàn)-re寫gi也st侮er忍+e禽xp趕r如MA著P茂0x慎00環(huán),r岡9蛾;表示床結(jié)構(gòu)勝化內(nèi)劃存首龍地址月為r9湖+0ti瞎me描r遷FI早EL動(dòng)D亂4岸;表示驚一個(gè)射數(shù)據(jù)擾域ti絞me刑r長度4字節(jié)52(十質(zhì))FI步EL需D指示巧符FI逐EL不D用于伸定義裹一個(gè)憂結(jié)構(gòu)連化內(nèi)風(fēng)存區(qū)鴿域中守的數(shù)弱據(jù)域預(yù)。常祥與MA獻(xiàn)P聯(lián)合編使用務(wù),#是FI閃EL杯D的同貿(mào)義詞號(hào)。語法兵格式喬:{l孕ab乘el火}F孤IE架LDex憶prla熟be斗l是當(dāng)落前數(shù)甚據(jù)域籠的一懲個(gè)標(biāo)晉號(hào),ex作pr是當(dāng)藝前數(shù)催據(jù)域蟻的長綢度例:YE軟AR贊FI液EL酬D嘗4;數(shù)傅據(jù)域YE緩AR崗4字節(jié)MO稀NT貪H羊FI年EL筆D駕2;數(shù)協(xié)據(jù)域MO沉NT富H遺2字節(jié)DA底Y疏FI縣EL治D恨2;數(shù)悉據(jù)FI草EL跡D摸2字節(jié)53(十揚(yáng)一)SP綁AC賄E指示肯符SP亂AC齒E用于拌分配稀一個(gè)尸全0的內(nèi)鬼存區(qū)棵域。%是SP恒AC尿E的同冷義詞莫。語法輸格式牛:{l患ab晃el找}S犯PA杠CEex火pr{l躍ab斧el匪}是該搶內(nèi)存捏域的膠標(biāo)識(shí)四,ex部pr表示晶本內(nèi)膚存空喂間的氏大小厘(以晃字節(jié)崇為單包位)批。例:da揮ta忽_t同im曾erSP慢AC圍E詞0亭x1明00睜0;定義篩一個(gè)4K字節(jié)壓的內(nèi)源存空蔽間,幸初值盛為0AL睛IG薯N;恢浩復(fù)字嘩對齊54課后攝練習(xí)P1逗77番11、請蝕注釋呆以下堆每條今指令1)GB液LS堤a忌dd引4f屋fad棄d4搬ff蟲SE那TS叉"陣AD省D焦r4崇,r儉4,矛#0港xF籍F“$a泊dd哨4f換f.悶002)xy蓄z辰R偶OU末T3x睛yz…B兄%F欠3…zx見xRO掃UT55AA候PC怪S20霜07年AR害M公司僚正式有推出偽了AA都PC腿S標(biāo)準(zhǔn)AR疤MAr番ch脹te狡ct彈ur汁ePr測oc個(gè)ed產(chǎn)ur光e盛Ca螺ll錢S衡ta晃nd麗ar悉dAA塌PC批S是AT抖PC柄S的改猴進(jìn)版目前督,AA紐奉PC汽S和AT炮PC瞧S都是送可用為的標(biāo)償準(zhǔn)56AA此PC賣S和AT慮PC構(gòu)S規(guī)范鋼要點(diǎn)寄存喚器的向使用障規(guī)則堆棧提使用機(jī)規(guī)則參數(shù)列傳遞施規(guī)則57AT丹PC環(huán)SAT沙PC本S(AR揚(yáng)M-贏Th椅um挎b頓Pr胳oc憤ed盼ur徑e郊Ca較ll考S腳ta考nd副ar供d)規(guī)仙定了朋一些紐奉子程拖序間等調(diào)用勒的基功本規(guī)塵則,鴨這些劉規(guī)則墊包括涼子程榴序調(diào)膛用過疫程中喪寄存沙器的料使用鴉規(guī)則返,數(shù)妨據(jù)棧備的使?jié)靡?guī)遣則,蜂參數(shù)唱的傳酸遞規(guī)安則。仿有了神這些堡規(guī)則裹之后瞎,單培獨(dú)編喊譯的C語言酬程序姑就可鬼以和世匯編每程序架相互壞調(diào)用品。使用AD窯S的C語言局編譯張器編闊譯的C語言數(shù)子程轟序滿凍足用啄戶指聰定的AT裁PC糠S類型央。而趣對于藏匯編吳語言乖來說曉,則筐需要代用戶環(huán)來保逐證各太個(gè)子售程序墊滿足AT處PC早S的要辜求。58寄存應(yīng)器的嫁使用境規(guī)則子程棵序間寫通過懇寄存煤器R0~R3來傳晃遞參喚數(shù)。效這時(shí)殼,寄抹存器R0~R3可記血作a0~a3。被應(yīng)調(diào)用宗的子鍵程序蜻在返壘回前馬無需癢恢復(fù)班寄存揭器R0~R3的內(nèi)遙容。在子萌程序酒中,擋使用惡寄存挺器R4~R1縱1來保地存局怒部變徑量。俱這時(shí)摟,寄駁存器R4~R1百1可以劑記作v1~v8。如規(guī)果在案子程帽序中填使用秋了寄養(yǎng)存器v1~v8中的艷某些懂寄存勿器,茫則子卡程序瞞進(jìn)入猴時(shí)必高須保棉存這義些寄單存器附的值緩,在債返回林前必俊須恢掩復(fù)這匪些寄證存器批的值風(fēng)。在Th擾um在b程序巡壽中,蜘通常夾只能禍?zhǔn)褂帽羌拇婧捌鱎4~R7來保采存局夸部變窩量。寄存屬器R1鑄2用作鵝過程驢調(diào)用宮中間宜臨時(shí)顏寄存雙器,趕記作IP。在爸子程幕序之劣間的取連接驚代碼乓段中蝕常常斯有這追種使邁用規(guī)奏則。59寄存肚器的歐使用腦規(guī)則迅(續(xù)寧)寄存促器R1行3用作盞堆棧宴指針徑,記欲作SP。在蟻?zhàn)映滩坌蛑心羌拇媸灼鱎1休3不能怠用作裙其他擴(kuò)用途轉(zhuǎn)。寄脅存器SP在進(jìn)輩入子烘程序慚時(shí)的樹值和嚴(yán)退出環(huán)子程蒙序時(shí)勻的值謀必須返相等砌。寄存洗器R1寺4稱為川連接覽寄存若器,爹記作LR。它懲用于謠保存膜子程皂序的提返回紀(jì)地址爛。如恨果在向子程腳序中末保存頂了返紀(jì)回地任址,土寄存碰器R1漸4則可溉以用征作其錘他用箭途。寄存揮器R1是5是程提序計(jì)鄰數(shù)器鋪,記賞作PC。它缸不能附用作濤其它糠用途淚。60堆棧碰使用槐規(guī)則AT姻PC絹S規(guī)定秋堆棧尚為FD類型辟,即料滿遞睜減堆加棧,牧并且杏對堆材棧的情操作劇是8字節(jié)部對齊壩。對于淋匯編描程序蝴來說擴(kuò),如國果目乎標(biāo)文玻件中庸包含葵了外包部調(diào)淹用,切則必旦須滿騎足下娘列條禾件:(1)外兇部接伸口的貼堆棧全必須癥是8字節(jié)攤對齊非的。(2)在壘匯編素程序趙中使疾用PR漲ES喝ER纖VE變8偽指柔令告琴訴連姥接器吊,本遇匯編違程序掀數(shù)據(jù)昏是8字節(jié)廁對齊壁的。61參數(shù)顛傳遞屠規(guī)則如果雪系統(tǒng)袋不包餡含浮指點(diǎn)運(yùn)假算的巡壽硬件家部件鉤,浮歡點(diǎn)參伙數(shù)會(huì)腫通過草相應(yīng)嫁的規(guī)楊則轉(zhuǎn)刻換成那整數(shù)塞參數(shù)賞(若鋒沒有拾浮點(diǎn)蠶參數(shù)凡,此誓步省橡略)漲,然務(wù)后依駕次將預(yù)各字釀數(shù)據(jù)愉傳送究到寄聰存器R0~R3中。振如果乞參數(shù)戒多于4個(gè),字將剩勾余的溉字?jǐn)?shù)英據(jù)傳圍送堆圓棧中甚,入彎棧的鎖順序夫與參草數(shù)順鋼序相蛙反,梯即最拔后一禾個(gè)字革數(shù)據(jù)馳先入輝棧。楚在參蘆數(shù)傳批遞時(shí)督,將作所有犬參數(shù)撫看作扯是存俗放在刷連續(xù)清的內(nèi)賀存字曾單元轎的字政數(shù)據(jù)滔。62子程厭序結(jié)蠅果返滅回規(guī)島則子程諸序中艱結(jié)果棵返回勇的規(guī)擱則如圾下:結(jié)果歐為一大個(gè)32位整造數(shù)時(shí)駝,可亦以通昂過寄喝存器R0返回拐;結(jié)果熊為一偽個(gè)64位整得數(shù)時(shí)順,可授以通勢過寄田存器R0和Rl返回局;結(jié)果脅為一欄個(gè)浮擾點(diǎn)數(shù)胸時(shí),予可以被通過虜浮點(diǎn)痛運(yùn)算誼部件挪的寄漂存器f0、d0或s0來返妻回;結(jié)果閃為復(fù)周合型專浮點(diǎn)乖數(shù)(低如復(fù)襖數(shù))田時(shí),雀可以巨通過餐寄存抖器f0~fn或d0~dn來返捐回;對于皺位數(shù)哨更多鹿的結(jié)開果,毀需要掙通過等內(nèi)存目來傳朝遞。63(一青)條遺件執(zhí)己行舉乞例求a和b兩整路數(shù)最造大公堡約數(shù)低的C程序Wh掙il僵e粉(a料!=于b){If思(a未>b南)圖a-旗=b鐘;接el組se壩b領(lǐng)-=乘a;}5.判2典型AR香M匯編贏語言僵程序叛舉例64條件茂執(zhí)行柱舉例佳(續(xù)遠(yuǎn))如果狡用AR身M匯編央子程蘆序來協(xié)實(shí)現(xiàn)亞,就貞是求r1和r2兩個(gè)左寄存廊器中皺的兩紡個(gè)整戀數(shù)的朋最大頌公約替數(shù)。賞使用差條件柏執(zhí)行撥指令莖表示徒只有育以下4句代巴碼:gc贈(zèng)dcm共pr1建,傻r2以;cm吵p與su踏bs功能磚類似su亭bg甜tr1圈,肝r1籍,半r2勝;如果r1液>r奮2執(zhí)行隱此指想令su艱bl婦tr2乖,閉r2兄,價(jià)r1凈;如果r1垃<r棟2執(zhí)行括此指句令bn罵egc襯d;如果r1父<>殘r2則轉(zhuǎn)gc嘉d標(biāo)號(hào)注:昏函數(shù)骨結(jié)束贈(zèng)時(shí)r1捧=r城2,都驢可以鉛用作園返回碼值。65(二鵲)32位地躬址送食入一廊個(gè)寄鏟存器斜中下面輩指令彎段中乞的lo怕ad指令繞根據(jù)印輸入渾參數(shù)初決定睬調(diào)用通那個(gè)狼函數(shù)令。具畏體做耳法是林將函隱數(shù)的匠絕對揚(yáng)地址忍通過LD凈R指令禮存入芽在r4寄存停器中泳,由宰于是32的絕貴對地悶址,LD糊R會(huì)被懸解釋檢成以能下操冒作:濕將函極數(shù)的狹絕對躁地址特放入導(dǎo)一個(gè)故文字痰池(Li柴te田ra啊l奇po支ol,嵌械入在仇代碼鵲中的喘用以只存放脈常數(shù)閃的區(qū)欠域)要。產(chǎn)年生一距條形光如:LD耐Rrn[p瓦c,吐#諷of擔(dān)fs買et及t協(xié)o寸li叮te玩ra刑l岸po講ol符]的指瘡令來叮將這懸個(gè)絕忠對地請址讀敢入到起指定滑的寄曉存器惡中。類似珍地LD邁R指令鑄也通裙過上貢述方餅法讀租入一榆個(gè)32位的狂絕對陷數(shù)。臥在下侮例中抗,LD睛R指令臭將32位絕捆對數(shù)0x尋11遠(yuǎn)55飯26盟34讀入賓到r0寄存凱器中席,用貓作調(diào)紐奉用ro悉ut賄in擇e1或者ro強(qiáng)ut閑in服e2的參右數(shù)。6632位地膽址送婚入一陪個(gè)寄諸存器兼中(賠續(xù));v逼oi戚dlo暮ad齒(i扯nti);v硬oi蜜d擠ro碑ut給in償e1勸(i命nt哥1植);;v發(fā)oi郊d士ro皂ut鼓in母e2餐(i譽(yù)nt壟2微);AR跳EA批L因OA叛D,擁C啞OD腫E,錢R唯EA言DO帖NL滑YIM條PO臨RT絹r漠ou固ti列ne煤1IM沒PO紙RT碼r滅ou哀ti辛ne玻2EX朗PO暴RT住l務(wù)oa悟dlo護(hù)adst驗(yàn)mf刑dr1購3!欲,搶{r童4,桐r絹14煉}ld權(quán)rr4域,籃=閉ro役ut辦in找e1咐;首先押將32位地憲址存結(jié)放在男附近嚴(yán)的區(qū)框域cm閱psr0囑,閉#1ld性rn伯er4保,蚊=吃ro階ut娛in掃e2ld織rr0頑=食0攝x1撥15湖52蔽63溝4暫;函數(shù)胞的第1個(gè)in磁t參數(shù)bxr4ld婆mf棍dr1承3!會(huì),績{r辯4,挎r1測4}bxr1舒467(三認(rèn))從IR立Q和FI齒Q異常橫處理拳程序壟返回從IR模Q和FI級(jí)Q異常寬處理投程序住返回餃時(shí),幟返回葡地址拌應(yīng)該訂是LR線-4。有三午種不軌同的劍編程堵方法幟,分仇別列拖出如早下:返回聽方式1IN氣T_淘HA四ND受LE獸R<異常仿處理剝代碼>……弟…SU殊BS統(tǒng)P并C,閱L客R,坊#右4友;急PC宵=R榆14旦-468從IR咳Q和FI斥Q異常掀處理中程序濃返回星(2)返回名方式2IN直T_妨HA勵(lì)ND磚LE渡RSU擊B艱R清14表,所R1褲4,豎#溝4牽;嗎R1御4灘-=士4……壺…<異常址處理唐代碼>……謹(jǐn)…MO鑄VS生P遷C,戚L主R69從IR餅Q和FI茂Q異常售處理妖程序沫返回離(3)返回弦方式3IN桌T_嫩HA菜ND鐵LE昂RSU婚B厭R襲14途,劫R1優(yōu)4,捏#輕4售;貨R1汗4赤=統(tǒng)R1貿(mào)4代–廊4ST先MF拔D鐮R1煌3!山,誘{R舟0-讀R3來,敢R1揮4}……判…<異常鳴處理樸代碼>……自…LD仰MF昨D醉R1期3!傲,芒{R異0-誓R3罪,晚R1頃5}70(四烤)注循疫環(huán)結(jié)餅構(gòu)在AR雕M匯編宵中,懇沒有優(yōu)專門繞的指豈令用六來實(shí)歸現(xiàn)循皮環(huán),川一般盆通過艇跳轉(zhuǎn)鄉(xiāng)豐指令釀加條丹件碼略的形蠅式來分實(shí)現(xiàn)估??上褚圆深D用比谷較指剝令CM業(yè)P或者堂減法穗指令SU鋒B等實(shí)出現(xiàn)。庸參看雹下面騙的指脖令段謠:LO包OPAD聰D億R4孟,帝R4暴,葬R0AD揀D殼R0丸,廊R0紫,巨#1CM鄉(xiāng)豐P井R0吳,欠R1BL伙E梁LO混OP海;密R攏0小于君等于R1場合束跳轉(zhuǎn)在做漢完了摘兩次回加法久操作瞧后,償比較R0,R1的值切,影修響條襪件標(biāo)搜志。方最后齒的條潮件跳滋轉(zhuǎn)語腦句根能據(jù)CM譜P指令念執(zhí)行爛的結(jié)際果來付決定籃是否其進(jìn)行嫌循環(huán)手。71(五辭)紀(jì)調(diào)用AR避M匯編發(fā)語言慶子程粱序在AR倉M匯編漸語言鳴中,數(shù)子程濕序調(diào)申用是疲通過BL指令淹完成倉的。BL指令粱的語懷法格利式如伐下:BLsu串bn帆am型e其中毀,su緩bn述am嶺e是調(diào)斗用的仆子程讓序的停名稱享。BL指令包完成譜兩個(gè)牙操作流:將青子程欄序的摧返回爺?shù)刂妨穹旁贚R寄存劍器中角,同朵時(shí)將PC寄存夜器值場設(shè)置耕成目別標(biāo)子宇程序圈的第示一條補(bǔ)指令蠶地址睬。在子盆程序圈返回極時(shí)可抗以通他過將LR寄存幕器的叮值傳民送到PC寄存永器中以來實(shí)謠現(xiàn)。子程竭序調(diào)廟用時(shí)底通常膀使用限寄存哨器R0懼~R注3來傳比遞參安數(shù)和跡返回吩結(jié)果嗚。72調(diào)用歌匯編希子程局序舉季例子程遺序DO照AD贏D完成綱加法逗運(yùn)算濟(jì),操匪作數(shù)裳放在R0和R1寄存曲器中薯,結(jié)溉果放在R0中。AR厚EA瓶EX榮AM懲PL濱E2嚴(yán),煉CO煙DE迷,狡RE篇AD格ON徑LYEN夫TR泥Yst炊ar盆t楊MO全V俱r猶0,幣#索10童;圍R0設(shè)置舊輸入微參數(shù)MO設(shè)V行r硬1,楚#桂3型;醒R1設(shè)置奶輸入雹參數(shù)BLdo歐ad燒d;調(diào)用雀子程堪序do垮ad橫d…do寧ad尺dAD偽D沉r增0,楊r0配,庸r鴿1躁;子程崗序?qū)嵠D體…MO饑V歲pc,lr;從子墻程序冒中返夸回EN色D73(六懇)高遺效率弄程序妥分支設(shè)有C語言疼程序In搬t(yī)c_綁sw測it良ch屠(i秧nti){sw制it廈ch軋(i櫻){ca道se森0:磚r篇et齒ur隸n追me巾th從od劫0(惹);ca濾se幸1:美r泥et沒ur毯n閥me鋤th矛od干1(奶):ca讀se贊2:跑r跪et唐ur利n伍me居th蔥od毅2(蘇):ca禿se扶3:步r按et蒸ur夕n譜me威th慕od熊3(磨):ca塊se剛4:既r蹄et便ur嗽n器me陰th睛od度4(詞):de捷fa秤ul位t:禍r蟻et宋ur鞏n網(wǎng)me征th冰od桑()茄;}}可有沃匯編攜與之?dāng)彻δ苤莸葍r(jià)Ar春m_圣sw街it棟hcm剛pr0往,#墻5ad蝴dl聾tpc惡,p弟c,地r0暑,l征sl么#2B抄me偶th續(xù)odB跳me布th顆od劇0B膏m賓et物ho珠d1B浙me網(wǎng)th亞od倒2B貌me泥th相od章3B博me溪th深od互474(七牧)億數(shù)步據(jù)塊月復(fù)制掠示范份程序本程咬序?qū)⒅鄶?shù)據(jù)朱從源使數(shù)據(jù)付區(qū)復(fù)響制到治目標(biāo)斥數(shù)據(jù)皺區(qū)復(fù)制悼時(shí),噸以8個(gè)字要為單脂位進(jìn)邊行。對于滋最后儉所剩名不足8個(gè)字宰的數(shù)蓮據(jù),冊以字京為單仁位進(jìn)意行復(fù)捆制,平這時(shí)房誠程序澇跳轉(zhuǎn)籍到co丸py哈wo咳rd肺s處執(zhí)舞行。在進(jìn)結(jié)行以8個(gè)字豪為單希位的織數(shù)據(jù)猜復(fù)制盤時(shí),方保存釋了所沿用的8個(gè)工控作寄萌存器晶。程祖序清夕單如案下面圖所示脈。75數(shù)據(jù)釣塊復(fù)百制示造范程追序(1)AR衡EA軋B襲lo查ck須,誕CO惕DE稱,鑼RE勁AD鉆ON辨LY;設(shè)柱置段唉名稱底及屬旦性nu樹m努E牽QU綿20;設(shè)孟置將虛要復(fù)擾制的濫字?jǐn)?shù)EN魔TR即Y;標(biāo)晉識(shí)程認(rèn)序入摸口點(diǎn)St豪ar賞tLD樣R嶼r狗0,=sr爸c;r0寄存瞎器指棋向源萄數(shù)據(jù)樣區(qū)sr紀(jì)cLD紀(jì)R肚r施1,=ds洞t;r1寄存慨器指猴向目董標(biāo)數(shù)晴據(jù)區(qū)ds屑t76數(shù)據(jù)現(xiàn)塊復(fù)萄制示章范程出序(2)MO隊(duì)V筐r河2,#n拐um;r2指定炕將要斬復(fù)制堂的字坑數(shù)MO倒V姿s煙p,#0猴x4閣00;設(shè)階置數(shù)向據(jù)棧呈指針(r方13之),用輪于保滅存工召作寄孟存器數(shù)攤值bl栗oc待kc紙op撥y;進(jìn)邊行以8個(gè)字慮為單網(wǎng)位的適數(shù)據(jù)玻復(fù)制MO曾VS延r攝3,剩r2葛,L鬼SR趴#3;需錘要進(jìn)割行的嫁以8個(gè)字蹦為單疼位的艦復(fù)制貫次數(shù)BE松Qco西py斑wo廳rd膛s;對磁于剩全下不鬧足8個(gè)字醒的數(shù)巷據(jù),揉跳轉(zhuǎn)墨到co削py橋wo家rd恨s,以停字為遣單位膽復(fù)制ST序MF決D俊s賴p!圣,{詳r4犯~r禍11孫};保味存工翁作寄末存器固,壓蓋棧oc舞tc景op噸yLD嶼MI勵(lì)A(yù)鳳r書0!,{r云4-股r1賭1};從倚源數(shù)仆據(jù)區(qū)形讀取8個(gè)字核的數(shù)泄據(jù),蛛放到8個(gè)寄存器筐中,摘并更改新目鑄標(biāo)數(shù)六據(jù)區(qū)脹指針r0ST飼MI調(diào)A冰r搖1!,{r稅4-雷r1住1};將蠢這8個(gè)字咐數(shù)據(jù)幟寫入蓄到目榮標(biāo)數(shù)噸據(jù)區(qū)混中,倍并更新癢目標(biāo)減數(shù)據(jù)獻(xiàn)區(qū)指證針r1SU茅BS竿r3,r3,#1;將努塊復(fù)炊制次霉數(shù)減1BN扔Eoc墾tc無op耕y;循億環(huán),防直到宿完成鏈以8個(gè)字捆為單焦位的較塊復(fù)浪制LD譽(yù)MF游D炒s遙p!,{r竄4-島r1哲1};恢督復(fù)工息作寄煤存器鞋值,充出棧77數(shù)據(jù)粱塊復(fù)異制示勁范程掠序(3)co獄py深wo栗rd撒sAN袋DS喇r2,r2,#7;剩沖下不途足8個(gè)字罷的數(shù)斑據(jù)的愛字?jǐn)?shù)BE補(bǔ)Q領(lǐng)s勻to手p;數(shù)灶據(jù)復(fù)嫂制完設(shè)成wo竹rd腥co編pyLD奮R夜r慌3,[r屑0],#4;從補(bǔ)源數(shù)靠據(jù)區(qū)羅讀取1個(gè)字笛的數(shù)噸據(jù),放到r3寄存棗器中師,并目更新高目標(biāo)暗數(shù)據(jù)區(qū)重指針r0,后苦索引腹偏移ST天R瓶r付3,[r切1],#4;將腐這r3中數(shù)罪據(jù)寫著入到傍目標(biāo)旅數(shù)據(jù)區(qū)中率,并突更新餅?zāi)繕?biāo)廊數(shù)據(jù)箏區(qū)指仰針r1,后責(zé)索引才偏移78數(shù)據(jù)劈燕塊復(fù)此制示掙范程彼序(4)SU第BS掀r2,r2,#l;將攪字?jǐn)?shù)瘦減1BN寶Ewo逃rd甲co寒py;循遲環(huán),籃直到如完成抵以字不為單萍位的臣數(shù)據(jù)把復(fù)制ST游OPAR恰EABl鴿oc癥kD恭at納a,DA捆TA,RE摸AD簡WR樸IT碑E;定傷義數(shù)魚據(jù)區(qū)Bl帽oc扯kD使at搏asr漠cDC裕D核1,2,3,4,5,6,7,8,1,\2,3,4,5,6,7,8,1,2,3,4ds艦tDC宿D(zhuǎn)唇0,0,0,0,0,0,0,0,0,\0,0,0,0,0,0,0,0,0,0,0;定機(jī)義源育數(shù)據(jù)歷區(qū)sr偽c及目老標(biāo)數(shù)據(jù)區(qū)ds乒tEN柴D;結(jié)相束匯澆編79課后渠練習(xí)1、請妄指出此以下諒程序煙中的掀錯(cuò)誤2、將迷以面喬的C分支莊程序存改為窄功能推相同即的匯蟲編程處序AR遭EA漸RRo蝦ut裁in該eA涂,C成od煌e,慎RE停AD紛ON嘉LYMO冊V湯R1仁0,補(bǔ)#0傷XF交F0宋0SU番B1窮MO市V茫R

溫馨提示

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

評論

0/150

提交評論