單元 匯編語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
單元 匯編語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
單元 匯編語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
單元 匯編語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
單元 匯編語(yǔ)言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單元 匯編語(yǔ)言程序設(shè)計(jì)第1頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)子程序的概念 通常把這些基本操作功能編制為程序段作為獨(dú)立的子程序, 以供不同程序或同一程序反復(fù)調(diào)用。在程序中需要執(zhí)行這種操作的地方放置一條調(diào)用指令, 當(dāng)程序執(zhí)行到調(diào)用指令, 就轉(zhuǎn)到子程序中完成規(guī)定的操作, 并返回到原來(lái)的程序繼 續(xù)執(zhí)行下去。子程序結(jié)構(gòu)能供調(diào)用的子程序,其結(jié)構(gòu)應(yīng)具備:必須標(biāo)明子程序的入口地址,又稱(chēng)首地址,以便程序調(diào)用必須以返回指令RET結(jié)束子程序。 第2頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)參數(shù)傳遞在使用調(diào)

2、用指令不附帶任何參數(shù)時(shí),參數(shù)的互相傳遞要由設(shè)計(jì)者通過(guò)程序安排。一般可采用以下方法:傳遞數(shù)據(jù)。將需傳遞的參數(shù)通過(guò)工作寄存器Rn或累加器A傳遞給子程序。即在主程序調(diào)用子程序前將參數(shù)差額主選定的工作寄存器組R0R7、累加器A中,供子程序讀取或者將參數(shù)在調(diào)用前先壓入堆棧,進(jìn)入子程序后再?gòu)亩褩V凶x出。傳遞地址。將要傳遞的參數(shù)存放在數(shù)據(jù)存儲(chǔ)器中,將其地址通過(guò)工作寄存器R0、R1或數(shù)據(jù)指針DPTR傳遞,供子程序讀取參數(shù)。 第3頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)現(xiàn)場(chǎng)保護(hù)主程序的現(xiàn)場(chǎng)保護(hù)和恢復(fù)。子程序(包括中斷服務(wù)程序)是個(gè)獨(dú)立的程序段,在子程序執(zhí)行過(guò)

3、程中常需用到通用單元,例如:工作寄存器R0R7、累加器A、數(shù)據(jù)指針DPTR,以及有關(guān)標(biāo)志、狀態(tài)位等。而這個(gè)單元中的原內(nèi)容在調(diào)用子程序結(jié)束之后 的主程序中仍有用,需進(jìn)行保護(hù),稱(chēng)現(xiàn)場(chǎng)保護(hù)。在執(zhí)行完子程序并返回繼續(xù)執(zhí)行主程序前應(yīng)恢復(fù)其原內(nèi)容,稱(chēng)現(xiàn)場(chǎng)恢復(fù)。一般有兩種現(xiàn)場(chǎng)保護(hù)/恢復(fù)方式:第4頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)調(diào)用前保護(hù)、返回后恢復(fù)。這種方式是在主程序邏輯的調(diào)節(jié)器用指令前進(jìn)行現(xiàn)場(chǎng)保護(hù),在調(diào)用指令之后,即返回原斷點(diǎn)處進(jìn)行恢復(fù)現(xiàn)場(chǎng)。其程序結(jié)構(gòu)如下所示: 主程序PUSH PSW ;將PSW、A、DPTR等入棧保護(hù)PUSH APUSH B

4、PUSH DPL PUSH DPH PUSH PSW,#10H ;選用工作寄存器組2,將0組保護(hù)第5頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)LCALL addr16 ;調(diào)用子程序addr16POP DPH ;出棧POP DPLPOP BPOP APOP PSW這種結(jié)構(gòu)靈活,可根據(jù)實(shí)際需要實(shí)現(xiàn)現(xiàn)場(chǎng)保護(hù)/恢復(fù)。調(diào)用后保護(hù)、返回前恢復(fù)。這種結(jié)構(gòu)是在子程序的開(kāi)始部分進(jìn)行現(xiàn)場(chǎng)保護(hù),而在子程序的結(jié)束部分、返回指令前恢復(fù)。其程序結(jié)構(gòu)如下所示: 第6頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí) ;子程序AD

5、DR:PUSH PSW 現(xiàn)場(chǎng)保護(hù) PUSH A PUSH B PUSH DPL PUSH DPH MOV PSW,#08H ;選用工作寄存器組1,0組保護(hù) ;子程序主體 POP DPH 現(xiàn)場(chǎng)恢復(fù)POP DPL POP B第7頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八LED顯示電路 相關(guān)知識(shí)POP APOP PSWRET ;返回這是子程序標(biāo)準(zhǔn)格式,現(xiàn)場(chǎng)保護(hù)/恢復(fù)內(nèi)容固定,但程序規(guī)范、清晰。上述兩種方式可由設(shè)計(jì)者任選。 第8頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)子程序特性隨著匯編語(yǔ)言程序設(shè)計(jì)技術(shù)的發(fā)展,子程序的應(yīng)用越

6、顯重要。因此,對(duì)子程序的設(shè)計(jì)具有較高要求,除通常在程序設(shè)計(jì)中應(yīng)遵循的原則外,還應(yīng)具備以下特性:通用性嚴(yán)格講,子程序有通用和專(zhuān)用兩種。前者如數(shù)制轉(zhuǎn)換、浮點(diǎn)運(yùn)算等子程序可廣泛應(yīng)用于同系列單片機(jī)的任何應(yīng)用系統(tǒng),后者僅限用于同一個(gè)應(yīng)用系統(tǒng)中。特別是前者,都應(yīng)注意子程序的通用性。為了使子程序具有通用性,在設(shè)計(jì)中要解決的一個(gè)重要問(wèn)題,就是確定哪些變量作為參量以及何傳遞參量。 第9頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)可浮動(dòng)性可浮動(dòng)性是指子程序段可安置在程序存儲(chǔ)器的任何區(qū)域。為此,在子程序中應(yīng)避免選用絕對(duì)轉(zhuǎn)移地址??蛇f歸和可重入性子程序能自己調(diào)用自己和

7、同時(shí)能被多個(gè)任務(wù)(或多個(gè)用戶(hù)程序)調(diào)用的特性,分別稱(chēng)之為子程序的可遞歸性和可重入性。這類(lèi)子程序常在龐大而復(fù)雜的程序中應(yīng)用,在單片機(jī)應(yīng)用程序設(shè)計(jì)中較少用到。 第10頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.2 任務(wù)八 LED顯示電路 相關(guān)知識(shí)子程序說(shuō)明文件對(duì)于通用子程序,為便于各種應(yīng)用程序的選用,要求在子程序編制、調(diào)試完成后應(yīng)提供一個(gè)說(shuō)明文件。其內(nèi)容應(yīng)包含以下內(nèi)容。子程序名。標(biāo)明子程序功能的名稱(chēng)。子程序功能。簡(jiǎn)要說(shuō)明子程序能完成的主要功能,包括重要算法、參量要求及有關(guān)存儲(chǔ)單元配置等。子程序調(diào)用。指明本子程序還需調(diào)用哪些子程序。附子程序流程圖及程序清單。由于子程序結(jié)構(gòu)在程序設(shè)計(jì)中應(yīng)

8、用極為普遍,因此,一般在指令集中均設(shè)有子程序調(diào)用指令。AT89S系列的指令集中,考慮到程序存儲(chǔ)器空間的限制和節(jié)省,特設(shè)置了絕對(duì)調(diào)用和長(zhǎng)調(diào)兩條指令,供實(shí)際應(yīng)用時(shí)選擇。 第11頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí) 查表程序結(jié)構(gòu) 查表程序是一種常用程序, 它廣泛使用于 LED顯示控制、 打印機(jī)打印控制、數(shù)據(jù)補(bǔ)償、數(shù)值計(jì)算、轉(zhuǎn)換等功能程序中, 這類(lèi)程序具有簡(jiǎn)單、執(zhí)行速度快等特點(diǎn)。 所謂查表法, 就是預(yù)先將滿(mǎn)足一定精度要求的表示變量與函數(shù)值之間關(guān)系的一張表求出, 然后把這張表存于單片機(jī)的程序存儲(chǔ)器中, 這時(shí)自變量值為單元地址, 相應(yīng)的函數(shù)值為該地

9、址單元中的內(nèi)容。查表, 就是根據(jù)變量 X在表格中查找對(duì)應(yīng)的函數(shù)值 Y, 使 Y=f(X)。 第12頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí)兩條查表指令: MOVC A, A+PC MOVC A, A+DPTR選用DPTR為首地址指針時(shí)表格參量可存放在64KB范圍內(nèi)的任何區(qū)段,可供無(wú)限次查表,選用PC當(dāng)前值為首地址指針時(shí)表硌參量必須設(shè)置在緊跟查表指令(MOVC)之后,基本上只能一次性查表,編程時(shí)應(yīng)根據(jù)實(shí)際情況進(jìn)行選擇,一般以選擇DPTR為基址指針的查表指令靈活、方便,可省去一些麻煩。 第13頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期

10、二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí)選用DPTR作為基地址的查表指令時(shí),其操作可分3步進(jìn)行:將待查表格的首地址置入DPTR基址寄存器;將待查的表格具體項(xiàng)數(shù)值置入變址寄存器A中;執(zhí)行指令MOVC A,A+DPTR將查表結(jié)果值讀入累加器A中。 第14頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路 相關(guān)知識(shí)選用PC當(dāng)前值作為基地址的查表指令時(shí),由于PC的當(dāng)前值正是查表指令的下一條指令的第一個(gè)字節(jié)的地址值,亦即表格數(shù)據(jù)串的首地址,當(dāng)執(zhí)行完查表指令,讀取到表格數(shù)據(jù)后仍需從這個(gè)PC的當(dāng)前值繼續(xù)往下執(zhí)行,顯然兩者發(fā)生重疊,為解決這個(gè)矛盾,勢(shì)必將表格下移若干個(gè)字節(jié),

11、以便設(shè)置一條跳轉(zhuǎn)指令跳過(guò)表格串繼續(xù)安排順序往下執(zhí)行的程序。把表格串下移的字節(jié)數(shù)加到變址寄存器A中,即在查表指令前加一條指令。ADD A,#dataA中為經(jīng)動(dòng)態(tài)運(yùn)算得到的待查表格數(shù)的項(xiàng)數(shù)。Data為表格串下移的字節(jié)數(shù),亦即PC的當(dāng)前值到下移后的表格串首地址的距離數(shù)。這個(gè)距離數(shù)顯然不宜太大,因?yàn)樗鼘⒂绊懕砀翊拈L(zhǎng)度,兩者之和不能超過(guò)565B,這種表格一般屬一次性查找,因?yàn)镻C的當(dāng)前值隨程序的執(zhí)行而改變 第15頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路程序設(shè)計(jì)舉例【例4.8 】 4位BCD碼整數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)入口參數(shù):BCD碼字節(jié)地址指針R0,位數(shù)存于R2

12、中。出口參數(shù):二進(jìn)制數(shù)存于R3R4中。算法:A=103a3+102a2+10a1+a0程序流程如7.7所示。子程序清單如下:BCDA:PUSH PSW ;現(xiàn)場(chǎng)保護(hù)PUSH APUSH BMOV PSW,#08HMOV R3,#00HMOV R2,#3 ;BCD碼D的位數(shù)MOV A,R0 ; a0-R4第16頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路程序設(shè)計(jì)舉例MOV R4,ABCKB:MOV A,R3 ;(R3R4)10 MOV B,#10 ;R4MUL ABMOV R4,AXCH A,BMOV B,#10XCH A,R3MUL ABADD A,R3XCH A,R4INC R0 ;(R0)+1-R0ADD A,R0 ;( R3R4)- (R0)-RR3R4第17頁(yè),共19頁(yè),2022年,5月20日,2點(diǎn)8分,星期二4.4 任務(wù)八 LED顯示電路程序設(shè)計(jì)舉例XCH A,R4ADDC A,#0MOV R3,ADJNZ R2,BCDB ;循環(huán)n-1次POP B ;恢復(fù)現(xiàn)場(chǎng)PIP APOP PSWRET ;返回上例中的R2內(nèi)容是BCD碼的位數(shù)n,本例中n=4,即兩個(gè)字節(jié)4位BCD碼,在程序中作為循環(huán)控制寄存器的計(jì)數(shù)值為n-1=4-1=3,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論