版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單元匯編語言程序設(shè)計第一頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識子程序的概念通常把這些基本操作功能編制為程序段作為獨立的子程序,以供不同程序或同一程序反復調(diào)用。在程序中需要執(zhí)行這種操作的地方放置一條調(diào)用指令,當程序執(zhí)行到調(diào)用指令,就轉(zhuǎn)到子程序中完成規(guī)定的操作,并返回到原來的程序繼續(xù)執(zhí)行下去。子程序結(jié)構(gòu)能供調(diào)用的子程序,其結(jié)構(gòu)應具備:必須標明子程序的入口地址,又稱首地址,以便程序調(diào)用必須以返回指令RET結(jié)束子程序。
第二頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識參數(shù)傳遞在使用調(diào)用指令不附帶任何參數(shù)時,參數(shù)的互相傳遞要由設(shè)計者通過程序安排。一般可采用以下方法:傳遞數(shù)據(jù)。將需傳遞的參數(shù)通過工作寄存器Rn或累加器A傳遞給子程序。即在主程序調(diào)用子程序前將參數(shù)差額主選定的工作寄存器組R0~R7、累加器A中,供子程序讀取或者將參數(shù)在調(diào)用前先壓入堆棧,進入子程序后再從堆棧中讀出。傳遞地址。將要傳遞的參數(shù)存放在數(shù)據(jù)存儲器中,將其地址通過工作寄存器R0、R1或數(shù)據(jù)指針DPTR傳遞,供子程序讀取參數(shù)。
第三頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識現(xiàn)場保護主程序的現(xiàn)場保護和恢復。子程序(包括中斷服務程序)是個獨立的程序段,在子程序執(zhí)行過程中常需用到通用單元,例如:工作寄存器R0~R7、累加器A、數(shù)據(jù)指針DPTR,以及有關(guān)標志、狀態(tài)位等。而這個單元中的原內(nèi)容在調(diào)用子程序結(jié)束之后的主程序中仍有用,需進行保護,稱現(xiàn)場保護。在執(zhí)行完子程序并返回繼續(xù)執(zhí)行主程序前應恢復其原內(nèi)容,稱現(xiàn)場恢復。一般有兩種現(xiàn)場保護/恢復方式:第四頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識調(diào)用前保護、返回后恢復。這種方式是在主程序邏輯的調(diào)節(jié)器用指令前進行現(xiàn)場保護,在調(diào)用指令之后,即返回原斷點處進行恢復現(xiàn)場。其程序結(jié)構(gòu)如下所示:
主程序
PUSHPSW;將PSW、A、DPTR等入棧保護PUSHAPUSHBPUSHDPLPUSHDPHPUSHPSW,#10H;選用工作寄存器組2,將0組保護第五頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識LCALLaddr16;調(diào)用子程序addr16POPDPH;出棧POPDPLPOPBPOPAPOPPSW這種結(jié)構(gòu)靈活,可根據(jù)實際需要實現(xiàn)現(xiàn)場保護/恢復。調(diào)用后保護、返回前恢復。這種結(jié)構(gòu)是在子程序的開始部分進行現(xiàn)場保護,而在子程序的結(jié)束部分、返回指令前恢復。其程序結(jié)構(gòu)如下所示:
第六頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識;子程序ADDR:PUSHPSW 現(xiàn)場保護
PUSHAPUSHBPUSHDPLPUSHDPHMOVPSW,#08H;選用工作寄存器組1,0組保護;子程序主體
POPDPH現(xiàn)場恢復POPDPLPOPB第七頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識POPAPOPPSWRET;返回
這是子程序標準格式,現(xiàn)場保護/恢復內(nèi)容固定,但程序規(guī)范、清晰。上述兩種方式可由設(shè)計者任選。
第八頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識子程序特性隨著匯編語言程序設(shè)計技術(shù)的發(fā)展,子程序的應用越顯重要。因此,對子程序的設(shè)計具有較高要求,除通常在程序設(shè)計中應遵循的原則外,還應具備以下特性:通用性嚴格講,子程序有通用和專用兩種。前者如數(shù)制轉(zhuǎn)換、浮點運算等子程序可廣泛應用于同系列單片機的任何應用系統(tǒng),后者僅限用于同一個應用系統(tǒng)中。特別是前者,都應注意子程序的通用性。為了使子程序具有通用性,在設(shè)計中要解決的一個重要問題,就是確定哪些變量作為參量以及何傳遞參量。
第九頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識可浮動性可浮動性是指子程序段可安置在程序存儲器的任何區(qū)域。為此,在子程序中應避免選用絕對轉(zhuǎn)移地址??蛇f歸和可重入性子程序能自己調(diào)用自己和同時能被多個任務(或多個用戶程序)調(diào)用的特性,分別稱之為子程序的可遞歸性和可重入性。這類子程序常在龐大而復雜的程序中應用,在單片機應用程序設(shè)計中較少用到。
第十頁,共十九頁,2022年,8月28日
4.2
任務八 LED顯示電路
相關(guān)知識子程序說明文件對于通用子程序,為便于各種應用程序的選用,要求在子程序編制、調(diào)試完成后應提供一個說明文件。其內(nèi)容應包含以下內(nèi)容。子程序名。標明子程序功能的名稱。子程序功能。簡要說明子程序能完成的主要功能,包括重要算法、參量要求及有關(guān)存儲單元配置等。子程序調(diào)用。指明本子程序還需調(diào)用哪些子程序。附子程序流程圖及程序清單。由于子程序結(jié)構(gòu)在程序設(shè)計中應用極為普遍,因此,一般在指令集中均設(shè)有子程序調(diào)用指令。AT89S系列的指令集中,考慮到程序存儲器空間的限制和節(jié)省,特設(shè)置了絕對調(diào)用和長調(diào)兩條指令,供實際應用時選擇。
第十一頁,共十九頁,2022年,8月28日
4.4任務八 LED顯示電路相關(guān)知識
查表程序結(jié)構(gòu)查表程序是一種常用程序,它廣泛使用于LED顯示控制、打印機打印控制、數(shù)據(jù)補償、數(shù)值計算、轉(zhuǎn)換等功能程序中,這類程序具有簡單、執(zhí)行速度快等特點。所謂查表法,就是預先將滿足一定精度要求的表示變量與函數(shù)值之間關(guān)系的一張表求出,然后把這張表存于單片機的程序存儲器中,這時自變量值為單元地址,相應的函數(shù)值為該地址單元中的內(nèi)容。查表,就是根據(jù)變量X在表格中查找對應的函數(shù)值Y,使Y=f(X)。第十二頁,共十九頁,2022年,8月28日
4.4任務八 LED顯示電路相關(guān)知識兩條查表指令:
MOVCA,@A+PCMOVCA,@A+DPTR選用DPTR為首地址指針時表格參量可存放在64KB范圍內(nèi)的任何區(qū)段,可供無限次查表,選用PC當前值為首地址指針時表硌參量必須設(shè)置在緊跟查表指令(MOVC)之后,基本上只能一次性查表,編程時應根據(jù)實際情況進行選擇,一般以選擇DPTR為基址指針的查表指令靈活、方便,可省去一些麻煩。
第十三頁,共十九頁,2022年,8月28日
4.4任務八 LED顯示電路相關(guān)知識選用DPTR作為基地址的查表指令時,其操作可分3步進行:將待查表格的首地址置入DPTR基址寄存器;將待查的表格具體項數(shù)值置入變址寄存器A中;執(zhí)行指令
MOVCA,@A+DPTR將查表結(jié)果值讀入累加器A中。
第十四頁,共十九頁,2022年,8月28日
4.4任務八 LED顯示電路相關(guān)知識選用PC當前值作為基地址的查表指令時,由于PC的當前值正是查表指令的下一條指令的第一個字節(jié)的地址值,亦即表格數(shù)據(jù)串的首地址,當執(zhí)行完查表指令,讀取到表格數(shù)據(jù)后仍需從這個PC的當前值繼續(xù)往下執(zhí)行,顯然兩者發(fā)生重疊,為解決這個矛盾,勢必將表格下移若干個字節(jié),以便設(shè)置一條跳轉(zhuǎn)指令跳過表格串繼續(xù)安排順序往下執(zhí)行的程序。把表格串下移的字節(jié)數(shù)加到變址寄存器A中,即在查表指令前加一條指令。ADDA,#dataA中為經(jīng)動態(tài)運算得到的待查表格數(shù)的項數(shù)。Data為表格串下移的字節(jié)數(shù),亦即PC的當前值到下移后的表格串首地址的距離數(shù)。這個距離數(shù)顯然不宜太大,因為它將影響表格串的長度,兩者之和不能超過565B,這種表格一般屬一次性查找,因為PC的當前值隨程序的執(zhí)行而改變
第十五頁,共十九頁,2022年,8月28日
4.4任務八 LED顯示電路程序設(shè)計舉例【例4.8】4位BCD碼整數(shù)轉(zhuǎn)換成二進制整數(shù)入口參數(shù):BCD碼字節(jié)地址指針R0,位數(shù)存于R2中。出口參數(shù):二進制數(shù)存于R3R4中。算法:A=103a3+102-a2+10a1+a0程序流程如7.7所示。子程序清單如下:
BCDA:PUSHPSW;現(xiàn)場保護PUSHAPUSHBMOVPSW,#08HMOVR3,#00HMOVR2,#3;BCD碼D的位數(shù)MOVA,@R0;a0-R4第十六頁,共十九頁,2022年,8月28日
4.4任務八 LED顯示電路程序設(shè)計舉例MOVR4,ABCKB:MOVA,R3;(R3R4)×10
MOVB,#10;R4MULABMOVR4,AXCHA,BMOVB,#10XCHA,R3MULABADDA,R3XCHA,R4INCR0;(R0)+1-R0ADDA,@R0;(R3R4)-((R0))-RR3R4第十七頁,共十九頁,2022年,8月28日
4.4任務八 LED顯示電路程序設(shè)計舉例XCHA,R4ADDCA,#0MOVR3,ADJNZR2,BCDB;循環(huán)n-1次POPB;恢復現(xiàn)場PIPAPOPPSWRET;返回
上例中的R2內(nèi)容是BCD碼的位數(shù)n,本例中n=4,即兩個字節(jié)4位BCD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年湖南湘潭市公安局招聘30名留置看護巡邏警務輔助人員備考考試試題附答案解析
- 2026年度臺州玉環(huán)農(nóng)商銀行招聘備考考試題庫附答案解析
- 造林安全生產(chǎn)管理制度
- 車間級安全生產(chǎn)會議制度
- 獸藥生產(chǎn)工藝管理制度
- 周生產(chǎn)交班會制度
- 充電樁安全生產(chǎn)責任制度
- 紙巾廠生產(chǎn)規(guī)章制度
- 鎮(zhèn)安全生產(chǎn)值班制度
- 工業(yè)革命新生產(chǎn)制度
- 2025企業(yè)年會總結(jié)大會跨越新起點模板
- 旅游景區(qū)旅游安全風險評估報告
- GB/T 27728.1-2024濕巾及類似用途產(chǎn)品第1部分:通用要求
- 中建三局工程標準化施工手冊(安裝工程部分)
- FZ∕T 54007-2019 錦綸6彈力絲行業(yè)標準
- DZ∕T 0148-2014 水文水井地質(zhì)鉆探規(guī)程(正式版)
- 空調(diào)水系統(tǒng)設(shè)備的安裝
- 基于流行音樂元素的動畫電影娛樂性研究
- 讀書分享讀書交流會 《鄉(xiāng)村教師》劉慈欣科幻小說讀書分享
- iso9001質(zhì)量管理體系-要求培訓教材修訂
- 法人變更轉(zhuǎn)讓協(xié)議書范本
評論
0/150
提交評論