版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
3.1實(shí)訓(xùn)概要程序是一系列有序指令的集合。單片機(jī)通過執(zhí)行程序完成相應(yīng)的任務(wù)。程序設(shè)計(jì)的任務(wù)就是根據(jù)任務(wù)的要求,給出解決問題的步驟和算法,編制程序的過程。學(xué)習(xí)完指令系統(tǒng)后,就具備了程序設(shè)計(jì)的基礎(chǔ)。匯編語言程序設(shè)計(jì)不但技巧性強(qiáng),而且還有軟硬件結(jié)合的特點(diǎn)。設(shè)計(jì)出的程序質(zhì)量好壞,直接關(guān)系到單片機(jī)應(yīng)用系統(tǒng)的特性和運(yùn)行效率。為了能夠編制出高質(zhì)量的程序,必須從一個(gè)個(gè)程序模塊的學(xué)習(xí)開始,通過熟讀多練,反復(fù)上機(jī)訓(xùn)練,才能逐步掌握程序設(shè)計(jì)的方法和技巧。
第3章匯編語言程序設(shè)計(jì)實(shí)訓(xùn)內(nèi)容:順序程序設(shè)計(jì)。分支程序設(shè)計(jì)。循環(huán)程序設(shè)計(jì)。子程序設(shè)計(jì)。預(yù)備知識: 匯編語言程序設(shè)計(jì)的一般步驟:分析問題。根據(jù)給出的問題,熟悉和明確問題的要求,明確已知條件及對運(yùn)算和控制的要求,建立數(shù)學(xué)模型。確定解題算法。根據(jù)實(shí)際問題的要求和指令系統(tǒng)的特點(diǎn),選擇解決問題的方法。算法是程序設(shè)計(jì)的依據(jù),它決定了程序的正確性和程序的質(zhì)量。畫出程序流程圖。程序流程圖就是用各種規(guī)定的圖形、流程線和簡潔的文字表達(dá)解題步驟的一種圖形。它直觀、清晰地體現(xiàn)了程序設(shè)計(jì)思路,是程序的邏輯設(shè)計(jì)過程。資源分配。算法確定后,要為每一個(gè)變量、各種指針、計(jì)數(shù)器等分配工作單元,定義數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)。根據(jù)程序流程圖及資源分配情況,寫出匯編語言源程序。上機(jī)調(diào)試。匯編語言源程序的一般結(jié)構(gòu):在程序設(shè)計(jì)中將會(huì)遇到各種類型的程序,但不論程序如何復(fù)雜,都可以分為如下基本結(jié)構(gòu):順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)子程序結(jié)構(gòu)
其中順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)為三中基本結(jié)構(gòu)。其結(jié)構(gòu)流程如圖3-1所示。入口MNP出口入口MN滿足條件?出口入口滿足條件?M改變條件?出口3.2實(shí)訓(xùn)9順序程序設(shè)計(jì)訓(xùn)練3.2.1實(shí)訓(xùn)目的
通過本節(jié)實(shí)訓(xùn),主要學(xué)習(xí)下面內(nèi)容:順序程序的結(jié)構(gòu)。順序程序設(shè)計(jì)的編程方法。順序結(jié)構(gòu)程序的調(diào)試方法。3.2.2實(shí)訓(xùn)要求 1.雙字求和。設(shè)有兩個(gè)四字節(jié)二進(jìn)制數(shù),分別存放在片內(nèi)RAM30H和40H開始的單元中,先存低字節(jié)。求兩數(shù)之和,并將和存于50H開始的單元中。 2.雙字節(jié)二進(jìn)制無符號數(shù)乘法。3.2.3實(shí)訓(xùn)預(yù)習(xí)預(yù)習(xí)內(nèi)容(1)掌握順序程序的結(jié)構(gòu)。(2)復(fù)習(xí)片內(nèi)數(shù)據(jù)存儲(chǔ)器地址范圍。(3)復(fù)習(xí)數(shù)據(jù)傳送指令和二進(jìn)制加法指令的功能。(4)復(fù)習(xí)乘法指令的功能。
程序設(shè)計(jì)基本思路(1)雙字求和
編寫程序前要掌握片內(nèi)RAM的結(jié)構(gòu)。MCS-51單片機(jī)片內(nèi)RAM一個(gè)存儲(chǔ)單元為一個(gè)字節(jié),以字節(jié)為單位編址。因此,每個(gè)加數(shù)和結(jié)果各占四個(gè)字節(jié)。按照加法的相加思路,先做低字節(jié)相加,然后做高位字節(jié)相加。 例如:
進(jìn)行多字節(jié)加法運(yùn)算時(shí),低字節(jié)應(yīng)選擇不帶進(jìn)位加法指令A(yù)DD。其它字節(jié)相加時(shí)應(yīng)選擇帶進(jìn)位加法指令A(yù)DDC,將低位的進(jìn)位值加入。(2)雙字節(jié)二進(jìn)制無符號數(shù)乘法雙字節(jié)二進(jìn)制無符號數(shù)乘法的運(yùn)算過程類似于一般十進(jìn)制運(yùn)算。首先進(jìn)行資源分配:設(shè)被乘數(shù)存放在工作寄存器R2、R3中,乘數(shù)存放在R6、R7中。乘積存放在R2、R3、R4和R5中。然后進(jìn)行運(yùn)算,先算低字節(jié),并保存中間和,再計(jì)算高字節(jié),將中間和累加。
3.2.4實(shí)訓(xùn)器材
MCS-51單片機(jī)開發(fā)系統(tǒng)3.2.5實(shí)訓(xùn)程序1.多字節(jié)加法實(shí)訓(xùn)程序如表3-1所示。
存儲(chǔ)地址機(jī)器碼行號源程序?qū)ぶ贩绞?0001ORG2000H2000E5302MOVA,30H200225403ADDA,40H2004F5504MOV50H,A2006E5315MOVA,31H200835416ADDCA,41H200AF5517MOV51H,A200CE5328MOVA,32H
200E35429ADDCA,42H2010F55210MOV52H,A2012E53311MOVA,33H2014354312ADDCA,43H2016F55313MOV53H,A2018920014MOV00H,C201A53200115ANL20H,#01H201D85205416MOV54H,20H17END2.雙字節(jié)乘法實(shí)訓(xùn)程序如表3-2所示。
存儲(chǔ)地址機(jī)器碼行號源程序?qū)ぶ贩绞?0001ORG2000H2000EB2MOVA,R320018FF03MOVB,R72003A44MULAB2004ACF05MOVR4,B2006FD6MOVR5,A2007EB7MOVA,R3
20088EF08MOVB,R6200AA49MULAB200B2C10ADDA,R4200CFC11MOVR4,A200DE412CLRA200E35F013ADDCA,B2010FB14MOVR3,A2011EA15MOVA,R220128FF016MOVB,R7
2014A417MULAB20152C18ADDA,R42016FC19MOVR4,A2017EB20MOVA,R3201835F021ADDCA,B201AFB22MOVR3,A201BE423CLRA201C3324RLCA201DCA25XCHA,R2
201E8EF026MOVB,R62020A427MULAB20212B28ADDA,R32022FB29MOVR3,A2023EA30MOVA,R2202435F031ADDCA,B2026FA32MOVR2,A33END3.2.6實(shí)訓(xùn)步驟(1)閱讀并理解程序,并畫出兩個(gè)程序的流程圖。(2)將機(jī)器碼送入單片機(jī)系統(tǒng)中,并檢查是否正確。(3)對于多字節(jié)加法實(shí)訓(xùn)程序,運(yùn)行程序前,將兩個(gè)四字節(jié)數(shù)據(jù)分別送入30H和40H開始的單元中。
(4)單步執(zhí)行程序,并將運(yùn)行結(jié)果記錄在表3-3中。 12345678H+23456789H=? ABCDEF01H+94398271H=? 2A3B4C5DH+3F4E5D6CH=?(5)對于雙字節(jié)乘法實(shí)訓(xùn)程序,運(yùn)行程序前,將被乘數(shù)和乘數(shù)分別送入工作寄存器R2、R3和R6、R7中,執(zhí)行程序,并記錄結(jié)果。程序運(yùn)行結(jié)果表格請讀者自行設(shè)計(jì)。
程序運(yùn)行前程序運(yùn)行后30H40H50H31H41H51H32H42H52H33H43H53H54H3.2.7思考與討論1.如何將程序改成十字節(jié)加法運(yùn)算,編寫程序并上機(jī)驗(yàn)證。2.編寫四字節(jié)減法程序,要求被減數(shù)和減數(shù)分別存放在片內(nèi)RAM30H和50H開始的單元中,差存放在60H開始的單元。上機(jī)驗(yàn)證。3.使用減法指令時(shí)應(yīng)注意什么問題?提示:多字節(jié)癢加法實(shí)牙訓(xùn)程序聾可以考戶慮用循漆環(huán)結(jié)構(gòu)幕完成,添通過固唯定次數(shù)嶄循環(huán)實(shí)路現(xiàn)多字木節(jié)相加寄。雙字節(jié)瘋乘法程劫序由于習(xí)要保護(hù)津中間和膠,占用骨的片內(nèi)疼RAM推單元較急多,可擇考慮使殲用堆棧四,但不尋能和工瞎作寄存云器組發(fā)怨生沖突沒。3.富3拒實(shí)訓(xùn)漏10眉分支東程序設(shè)松計(jì)訓(xùn)練3.3野.1役實(shí)訓(xùn)目災(zāi)的通過本浴節(jié)實(shí)訓(xùn)富,主要聲學(xué)習(xí)下剝面內(nèi)容卡:分支程略序的結(jié)錦構(gòu)。分支程序喂設(shè)計(jì)的編綿程方法。分支結(jié)顯構(gòu)程序米的調(diào)試晝方法。通過散隸轉(zhuǎn)指令宮實(shí)現(xiàn)多桐分支程緩序設(shè)計(jì)咱方法。3.3.俗2實(shí)訓(xùn)下要求設(shè)單片機(jī)脆片內(nèi)數(shù)據(jù)炭存儲(chǔ)器2案0H單元知存放00萍H~03膚H四個(gè)不栽同的數(shù)。房誠根據(jù)20野H中存放詠數(shù)據(jù)的不丹同,在L倉ED七段乓顯示器上戚顯示循環(huán)纖左移的數(shù)阻字0、1繩、2、3第。即:3.3.錘3實(shí)訓(xùn)浪預(yù)習(xí)JMP綁@A+D夏PTR總是一條散雹轉(zhuǎn)指令。仇它常用于銹多分支選售擇程序中牛。數(shù)據(jù)指糊針DPT弦R作為基婦址寄存器模,決定多竟分支程序忠的首地址稅,用累加羽器ACC備作為變址非寄存器來購動(dòng)態(tài)地選腸擇某一分職支,來實(shí)主現(xiàn)多分支稱轉(zhuǎn)移。該楊指令采用鑄基址寄存悄器加變址脖寄存器間置接尋址方潑式,將D叼PTR和腰ACC內(nèi)顛容相加作攤為地址,窯該地址傳完送到程序白計(jì)數(shù)器P侵C中。為了在單奸片機(jī)開發(fā)閱系統(tǒng)上顯堤示數(shù)字,潤必須了解黨所使用的慈單片機(jī)開虜發(fā)系統(tǒng)的墳顯示器控鍛制接口,震通常用多尾功能接口威芯片81惹55控制困鍵盤和顯森示器。了蠟解其字形集口和字位阿口地址。缺(本系統(tǒng)語字形口地因址為0F令F22H饒,字位口呢地址為0削FF21兄H)。同時(shí),還忌應(yīng)了解所萌用單片機(jī)就開發(fā)系統(tǒng)羞的LED葵顯示器是讀共陰極型病還是共陽蜻極型。以膝便給出其參不同的字橡形碼。不提同類型L熔ED字形著碼如表3汁-4所示菠。本系統(tǒng)曠采用共陽四極型LE召D。表3-4助七段L待ED字形澡碼字符共陽字形碼共陰字形碼字符共陽字形碼共陰字形碼0C0H3FHCC6H39H1F9H06HDA1H5EH2A4H5BHE86H79H3B0H4FHF8EH71H499H66HP8CH73H592H6DHY91H6EH682H7DHUC1H3EH7F8H07HH89H76H880H7FHLC7H38H990H6FH﹣BFH40HA88H77H“滅”FFH00HB83H7CH………3.3.稍4實(shí)訓(xùn)奧器材MCS納-51晉單片機(jī)隔開發(fā)系剝統(tǒng)
3款.3.啟5程促序流程探及實(shí)訓(xùn)賓參考程摸序?qū)嵱?xùn)程誼序流程代如圖3堪-2所庫示。實(shí)則訓(xùn)參考凱程序如念表3-氣5所示原。開始(A)+散轉(zhuǎn)地址(A)←(20H)0字循環(huán)1字循環(huán)2字循環(huán)3字循環(huán)存儲(chǔ)地址機(jī)器碼行號源程序注釋20001ORG2000H2000E5202MOVA,20H索引20029020103MOVDPTR,#KK轉(zhuǎn)移指令表首地址2005234RLA2006735JMP@A+DPTR20106ORG2010H2010
7KK:AJMPA0轉(zhuǎn)移指令表2012011E8AJMPA1201401249AJMPA22016012A10AJMPA320187520C011A0:MOV20H,#0C0H“0”字形碼201B02203012LJMPBB201E7520F913A1:MOV20H,#0F9H“1”字形碼202102203014LJMPBB20247520A415A2:MOV20H,#0A4H“2”字形碼202702203016LJMPBB202A7520B017A3:MOV20H,#0B0H“3”字形碼202D02203018LJMPBB2030E52019BB:MOVA,20H2032782220MOVR0,#22H8155字位口地址2034792121MOVR1,#21H8155字形口地址2036F222MOVX@R0,A2037740123MOVA,#01H位置號2039F324BB1:MOVX@R1,A203A12205025LCALLDELY延時(shí)203D2326RLA203E80F927SJMPBB1205028ORG2050H20507D0429DELY:MOVR5,#4延時(shí)子程序20527EFA30L3:MOVR6,#25020547F6431L2:MOVR7,#10020560032L1:NOP20570033NOP20580034NOP2059
35DJNZR7,L1205BDEF736DJNZR6,L2205DDDF337DJNZR5,L3205F2238RET39END3.3.膨6實(shí)訓(xùn)堅(jiān)步驟(1)理翻解程序,功弄清程序慚執(zhí)行過程踢。(2)康將機(jī)器判碼送入最單片機(jī)闊系統(tǒng)中晌,并檢黎查是否份正確。(3)運(yùn)寺行程序前懸,將00袖H~03兇H四個(gè)數(shù)窯中任意一橡個(gè)數(shù)送入進(jìn)20H單足元中。(4)單臟步執(zhí)行程合序,逐條思分析指令籌,看轉(zhuǎn)移窗指令的條殊件是否滿撓足,判斷員是否轉(zhuǎn)移境或不轉(zhuǎn)。(5)觀伙察數(shù)字在碰LED顯驚示器上的細(xì)移動(dòng)方向福,說明是定程序中哪線條指令控筋制轉(zhuǎn)移的沒方向。3.3.紋7思考欄與討論1.第4騎行指令定RL公A的作辯用是什么姑?它和哪血一條指令徒相關(guān)聯(lián)?2.設(shè)三單片機(jī)次晶振頻苗率為6丸MHz匙,試計(jì)豆算延時(shí)跌子程序摟的延時(shí)狼時(shí)間。胡修改延儲(chǔ)時(shí)時(shí)間睡對數(shù)字叛顯示會(huì)豪有什么死影響?3.第7連行指令首AJMP筍A0條的轉(zhuǎn)移范斬圍是多少融?將其翻奇譯成機(jī)器惕碼。4.將程傻序修改成勸十個(gè)分支挑程序,在翠顯示器上箭分別顯示傳0~9十幼個(gè)數(shù)字。5.分裕析第2抖5行指量令L雷CAL糖L粗DEL稠Y的即堆棧使雄用情況床。6.第瓶35行案指令柳DJN約Z抽R7,言L1的降轉(zhuǎn)移條深件是什防么?將煩其翻譯肚成機(jī)器吸碼。冰提示:曲執(zhí)行本先程序,掀應(yīng)仔細(xì)屯分析每崖一條指直令的執(zhí)釘行過程甘。枕結(jié)合駝共陰極搞型和共啄陽極型匆LED青七段顯趙示器,加分析字談形碼形炮成過程撿。3.4司實(shí)峰訓(xùn)11姻循環(huán)程逝序設(shè)計(jì)訓(xùn)飯練3.4讀.1厲實(shí)訓(xùn)目癥的通過本節(jié)殲實(shí)訓(xùn),主剖要學(xué)習(xí)下范面內(nèi)容:循環(huán)程警序的結(jié)桂構(gòu)。循環(huán)程演序設(shè)計(jì)臘的編程派方法。循環(huán)結(jié)規(guī)構(gòu)程序敲的調(diào)試譜方法。固定次享數(shù)循環(huán)悼和非固扯定次數(shù)仍循環(huán)程僵序的實(shí)值現(xiàn)。3.4.端2實(shí)訓(xùn)作要求1.編辜制將片鹽內(nèi)RA錦M從3姓0H開窩始的五傘十個(gè)單泉元置數(shù)吐?lián)?8溪H的程旦序。乏2.編插制數(shù)組鞏排序程援序:將矮片內(nèi)R侍AM5轎0H單爆元開始柳的十個(gè)休單元內(nèi)舍數(shù)據(jù)從斜小到大范排序。升3.頑4.3排實(shí)訓(xùn)嘆預(yù)習(xí)進(jìn)行循灰環(huán)程序革設(shè)計(jì),巡壽要掌握茫循環(huán)程盼序的結(jié)廣構(gòu)。其逗結(jié)構(gòu)一雖般包括糠以下四罰個(gè)部分良:
1鄉(xiāng)豐.循環(huán)網(wǎng)的初始漆化:燦這樹是循環(huán)生的準(zhǔn)備蓬部分。崇用于循兩環(huán)過程券的工作姓單元,兼在這一偉部分設(shè)跟置初始焰值。秤2.循夸環(huán)的工爽作體:轎它是完施成處理禍任務(wù)的偉核心部附分。隨圈具體問讀題而定攻。
3陽.循環(huán)撈的修改翅部分:每進(jìn)行粱一次循促環(huán),循恨環(huán)的工唯作體部廟分都要腿作相應(yīng)喇的修改協(xié)。為使裙循環(huán)的謊操作對策象按要撤求改變霸,應(yīng)對盟每次循換環(huán)的控殖制變量忠進(jìn)行必內(nèi)要修改檢,以便彩為下次捕循環(huán)處爽理做好暈準(zhǔn)備。4.循欠環(huán)的控澇制部分逝:這一部顏分判別俱和控制咸循環(huán)的歐結(jié)束與綢否。3.4?。?毛實(shí)訓(xùn)器監(jiān)材MCS-射51單片減機(jī)開發(fā)系謊統(tǒng)3.4.筐5實(shí)訓(xùn)竊參考程序1.將寧片內(nèi)R漫AM3移0H開愧始的五饞十個(gè)單鵝元置數(shù)對據(jù)88凍H程序他見表3幼-6所骨示。存儲(chǔ)地址機(jī)器碼行號源程序注釋
1ORG2000H20007F322MOVR7,#50200278303MOVR0,#30H200474884MOVA,#88H2006F65A1:MOV@R0,A2007086INCR02008DFFC7DJNZR7,A18END2.將最片內(nèi)R裳AM5效0H單催元開始夏的十個(gè)迷單元內(nèi)款數(shù)據(jù)從箏小到大抽排序。缺實(shí)訓(xùn)程薦序見表婚3-7塊所示。存儲(chǔ)地址機(jī)器碼行號源程序注釋
1ORG3000H3000C2D52STA:CLRF030027B093MOVR3,#9300478504MOVR0,#50H3006E65MOVA,@R03007086A1:INCR03008F97MOVR1,A3009968SUBBA,@R0300AE99MOVA,R1300B400610JCA2300DD2D511SETBF0300FC612XCHA,@R030101813DECR03011C614XCHA,@R030120815INCR03013E616A2:MOVA,@R03014DBF117DJNZR3,A1301620D5E718JBF0,STA3019011919AJMP$20END3.4.盆6實(shí)訓(xùn)嘆步驟(1)對申于表3-術(shù)6實(shí)訓(xùn)程幣序給每條蜻指令加穿注釋,捐填入實(shí)握訓(xùn)表中脂。根據(jù)程脹序畫出成程序流偶程圖。將程序修披改成對片錦內(nèi)RAM推從30H臂開始的三影個(gè)單元置恰數(shù)操作,吧用單步執(zhí)招行命令仔蠢細(xì)檢查每路步運(yùn)行結(jié)謙果,各寄壓存器及地嗎址變化情爆況。將程序騾還原,吹用連續(xù)川執(zhí)行命蛋令執(zhí)行齊程序,者檢查結(jié)蕩果。(2)詠對于表融3-7筒實(shí)訓(xùn)程躬序給每條斃指令加鞏注釋,昏填入實(shí)傲訓(xùn)表中斷。根據(jù)程加序畫出小程序流顧程圖。用單步并執(zhí)行命岔令仔細(xì)盯檢查每歐步運(yùn)行代結(jié)果,值各寄存隆器及地割址變化損情況。茄填入表電3-8雞中。用連續(xù)劉執(zhí)行命濕令執(zhí)行弄程序,誦檢查結(jié)皇果。在50H短~59H武中任意給補(bǔ)出一組數(shù)供據(jù),執(zhí)行羨程序進(jìn)行逮排序,并情檢查結(jié)果擋。運(yùn)行前運(yùn)行后地址內(nèi)容地址內(nèi)容地址內(nèi)容地址內(nèi)容50H2AH55H68H50H55H51H11H56H20H51H56H52H57H57H97H52H57H53H83H58H55H53H58H54H29H59H13H54H59H3.4.煌7思考圖與討論1.編形寫將片膏外RA助M5掏000狗H開始券的20欲0個(gè)單扇元清零央程序。2.將魔上例數(shù)拳組排序側(cè)程序改叼為從大熊到小排沈列。提示:通過對表資3-6實(shí)穴訓(xùn)程序的府學(xué)習(xí)可知倆,對于固潛定次數(shù)的黎循環(huán),可張以預(yù)先設(shè)恐置循環(huán)計(jì)箱數(shù)初始值依,存放在繪一個(gè)工作結(jié)寄存器中伍,作為計(jì)粗?jǐn)?shù)器,然匯后用減1季非零轉(zhuǎn)移本指令DJ硬NZ實(shí)現(xiàn)悔循環(huán)。對于表3普-7實(shí)訓(xùn)釘程序,屬紡于無固定肌次數(shù)的循椒環(huán)。這是濁一個(gè)雙重飲循環(huán),在分內(nèi)層循環(huán)鉆中,雖然冶知道十個(gè)析數(shù)要循環(huán)牌比較九次攜,但不知聾道所給數(shù)礦組的數(shù)據(jù)匯排列情況狼,外層循裁環(huán)預(yù)先不潑知道要循遷環(huán)多少遍日??刹捎锰幵O(shè)置標(biāo)志飾位的辦法遲。如本程雁序使用P顯SW的用賞戶標(biāo)志位腐F0,開歪始清“0碧”F0,逃若有數(shù)據(jù)迷互相換位蔥,則置位獄F0,當(dāng)躲最后數(shù)組醬順序已排獲好后,重藏新執(zhí)行一嘉遍程序,酬則不會(huì)出月現(xiàn)數(shù)據(jù)換坐位現(xiàn)象,范F0仍然既為0,序弦已排好,尾程序結(jié)束鉆。3.累5零實(shí)訓(xùn)委12攝子程于序設(shè)計(jì)脾訓(xùn)練3.5撒.1貝實(shí)訓(xùn)目裝的通過本差節(jié)實(shí)訓(xùn)土,主要彩學(xué)習(xí)下廈面內(nèi)容結(jié):子程序擾的結(jié)構(gòu)羨。子程序脹設(shè)計(jì)的短編程方貴法。子結(jié)構(gòu)扮程序的壞調(diào)試方雙法。主程序調(diào)職用子程序處及子程序縣返回主程砍序的過程摩。3.5危.2灶實(shí)訓(xùn)要箏求將片內(nèi)R坦AM30芒H存放的高壓縮BC惕D碼轉(zhuǎn)換隊(duì)成ASC做II碼,召存放到5夢0H起始頌的內(nèi)存單綢元(50溪H為高位席)。試編答程實(shí)現(xiàn)。3.5階.3雞實(shí)訓(xùn)預(yù)釘習(xí)子程序截是程序苗設(shè)計(jì)的樓重要方剖法之一叼。在程息序設(shè)計(jì)好中經(jīng)常舒遇到重掙復(fù)出現(xiàn)師的程序辮段,如競果每次譽(yù)都把這拖種程序飯段抄寫作一遍,修不僅會(huì)者使程序獨(dú)冗長,披也不易煩閱讀和羅調(diào)試。叔這時(shí)候偶可采用何子程序總的設(shè)計(jì)射方法。1.子掩程序相落關(guān)指令涂:(1)樂調(diào)用指走令:該促指令放碰在主程恥序中,掏用于主臟程序調(diào)凈用子程鋼序。LCA外LL置ad循dr1駝6:長三調(diào)用。撓調(diào)用時(shí)附,將本側(cè)指令下徒一條指啄令的地適址推入純堆棧保那護(hù)起來尾,然后屠將子程她序的入拋口地址惡送入程撐序計(jì)數(shù)犁器PC憐中。該扯指令可亦在64元KB程冤序存儲(chǔ)甩器范圍悅內(nèi)任意欣調(diào)用。ACA旗LL喚ad鍛dr1褲1:短評調(diào)用。碧功能與吃長調(diào)用膏指令類以似,只灑是調(diào)用澤范圍在融一頁(刷2KB額)范圍狀內(nèi)。(2)返武回指令:稱該指令放監(jiān)在子程序紅最后,用泥于子程序瓜返回子程噸序。RET尖:返回年指令?;螌⒍褩9沃斜Wo(hù)待的調(diào)用摩指令下廚條指令甚的地址悔彈到程鋒序計(jì)數(shù)使器PC布中。以茄返回?cái)嗤c(diǎn)出繼扛續(xù)執(zhí)行童主程序效。2.子攪程序設(shè)啦計(jì)步驟(1)遲確定子躺程序的組名稱(躺即入口休處的標(biāo)另號)。(2)劣確定子偵程序的像入口參乒數(shù)及出擁口參數(shù)斗。(3)確填定所使用桌的寄存器淘和存儲(chǔ)單籍元及其使甘用目的。(4)確嗽定子程序萬的算法,萍編寫源程遲序。3.5宰.4咽實(shí)訓(xùn)器常材單片機(jī)筒開發(fā)系胡統(tǒng)3.5析.5皇實(shí)訓(xùn)參驕考程序主程序中及子程恒序?qū)嵱?xùn)隆參考程賞序見表幟3-9襪所示。存儲(chǔ)地址機(jī)器碼行號源程序注釋00301BCDEQU30H00502ASCIIEQU50H20003ORG2000H2000E5304START:MOVA,BCD主程序2002C45SWAPA2003C0E06PUSHACC20051220127LCALLA12008D0508POPASCII200AC0309PUSHBCD200C
10ACALLA1200ED05111POPASCII+1201080FE12SJMP$2012158113A1:DECSP子程序2014158114DECSP2016D0E015POPACC2018540F16ANLA,#0FH201A90202517MOVDPTR,#ASCTAB201D9318MOVCA,@A+DPTR201EC0E019PUSHACC2020058120INCSP2022058121INCSP20242222RET2025302C312C23ASCTAB:DB'0,1,2,3,4'2029322C332C202D34202E352C362C24DB'5,6,7,8,9'2032372C382C20363925END3.5揮.6為實(shí)訓(xùn)步觀驟(1)奧給每條災(zāi)指令加拆注釋,澡填入實(shí)止訓(xùn)表中掏。(2)根絲式據(jù)程序畫爐出程序流菜程圖。(3)檢平查長調(diào)用師指令LC葉ALL執(zhí)律行之前堆斗棧的使用傷情況。(4)檢偷查調(diào)用指促令執(zhí)行之稱后堆棧的舊使用情況鍬。(5)計(jì)冠算短調(diào)用依指令A(yù)C葛ALL的快機(jī)器碼,孝并填入實(shí)材訓(xùn)程序表畢中。(6)檢釘查返回指拉令RET大執(zhí)行之前梢堆棧的使痰用情況。(7)檢梯查返回指績令RET派執(zhí)行之后峽堆棧的使套用情況。提示:在編制打主程序續(xù)和子程渣序的程綢序設(shè)計(jì)床中,要飼考慮參屈數(shù)傳遞顯。所謂美參數(shù)傳鋤遞,即板主程序馬先把有城關(guān)參數(shù)牌放在某初些約定鋼的位置六,如工癥作寄存償器R0胖、R7煉中、特齊殊功能半寄存器俯或堆棧愛中,子蜻程序運(yùn)賺行時(shí)可董以從這良些約定種位置得調(diào)到相應(yīng)蚊的入口減參數(shù)??缱映绦驓W結(jié)束運(yùn)誕行前,物也要把出運(yùn)算結(jié)夕果送到去約定位將置,以漂便返回緒主程序融后,主辟程序能騙夠從這怪些地方夫得到所翁需要的邁結(jié)果。必這就是晚“參數(shù)舉傳遞”勞。主程序調(diào)野用子程序煎時(shí),要注僵意選擇調(diào)胳用指令,殺注意調(diào)用罷指令的調(diào)叔用范圍。同一個(gè)呀應(yīng)用系霞統(tǒng)中,舉可能有銜多個(gè)子杜程序,領(lǐng)每個(gè)子慨程序都照應(yīng)有唯某一的入戲口。子程序諸應(yīng)具有榮通用性粥。子程賠序的操物作對象繭通常采屬用寄存鍛器或寄菜存器間摧接尋址版方式,凝不采用心立即尋失址方式閉。子程序應(yīng)忠具有浮動(dòng)昏性。(即巨子程序放施在任何存脈儲(chǔ)空間都酷能正確運(yùn)金行)。若南子程序中擁有轉(zhuǎn)移指洗令,應(yīng)使達(dá)用相對轉(zhuǎn)廳移指令,聞不用絕對我轉(zhuǎn)移指令犁。習(xí)擋題3.1密分析乳下面順團(tuán)序程序疲的執(zhí)行唯結(jié)果ORG貫200湖0HMOV羞D券PTR革,#2蛛000蔥HMOVX剪A,商@DPT獨(dú)RMOV奧R0,運(yùn)ASWAP膊AANL扇A,#室0FHINC尸DPT桶RMOVX信@D
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- IPv4課件教學(xué)課件
- 2026四川西昌市人民醫(yī)院招聘8人備考題庫及答案詳解(易錯(cuò)題)
- 跨境電商獨(dú)立站2025支付外包協(xié)議
- 初級牙醫(yī)考試題及答案
- 2025-2026人教版小學(xué)三年級語文測試卷
- 預(yù)防接種多選試題及答案
- 2025-2026人教版初中七年級數(shù)學(xué)上學(xué)期期末測試卷
- 2025-2026人教版二年級科學(xué)期末卷
- 2025-2026七年級上學(xué)期道德與法治
- 廣元市衛(wèi)生監(jiān)督管理制度
- 2026年甘肅省公信科技有限公司面向社會(huì)招聘80人(第一批)筆試模擬試題及答案解析
- 文獻(xiàn)檢索與論文寫作 課件 12.1人工智能在文獻(xiàn)檢索中應(yīng)用
- 艾滋病母嬰傳播培訓(xùn)課件
- 公司職務(wù)犯罪培訓(xùn)課件
- 運(yùn)營團(tuán)隊(duì)陪跑服務(wù)方案
- 北京中央廣播電視總臺2025年招聘124人筆試歷年參考題庫附帶答案詳解
- 工業(yè)鍋爐安全培訓(xùn)課件
- 2026中國單細(xì)胞測序技術(shù)突破與商業(yè)化應(yīng)用前景報(bào)告
- 叉車初級資格證考試試題與答案
- 2025至2030中國新癸酸縮水甘油酯行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報(bào)告
- 剪映完整課件
評論
0/150
提交評論