![第十三次課 4-7子程序說(shuō)明文件(微機(jī)原理)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-9/3/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e1.gif)
![第十三次課 4-7子程序說(shuō)明文件(微機(jī)原理)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-9/3/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e2.gif)
![第十三次課 4-7子程序說(shuō)明文件(微機(jī)原理)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-9/3/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e3.gif)
![第十三次課 4-7子程序說(shuō)明文件(微機(jī)原理)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-9/3/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e4.gif)
![第十三次課 4-7子程序說(shuō)明文件(微機(jī)原理)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-9/3/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e/51d2fc5f-cba7-4b9c-9913-d85fe01d7a9e5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.3 匯編語(yǔ)言程序設(shè)計(jì)的基本方法一、程序設(shè)計(jì)步驟一、程序設(shè)計(jì)步驟二、源程序的匯編、連接與調(diào)試二、源程序的匯編、連接與調(diào)試三、三、IBM PC 匯編語(yǔ)言程序源程序的完整結(jié)構(gòu)及偽指令匯編語(yǔ)言程序源程序的完整結(jié)構(gòu)及偽指令四、順序結(jié)構(gòu)四、順序結(jié)構(gòu)五、分支結(jié)構(gòu)五、分支結(jié)構(gòu)六、循環(huán)結(jié)構(gòu)六、循環(huán)結(jié)構(gòu)七、子程序七、子程序八、八、DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用九、字符串處理九、字符串處理十、宏指令十、宏指令七、七、 子程序子程序1 1、過(guò)程定義、過(guò)程定義六、六、 子程序子程序概念:概念:子程序?yàn)楣δ艽_定、且獨(dú)立的程序段。子程序?yàn)楣δ艽_定、且獨(dú)立的程序段。優(yōu)點(diǎn):優(yōu)點(diǎn):可以將任何一段獨(dú)立的程序歸整為一個(gè)子程序,可
2、以將任何一段獨(dú)立的程序歸整為一個(gè)子程序,當(dāng)需要該段程序時(shí),只需調(diào)用子程序即可,調(diào)當(dāng)需要該段程序時(shí),只需調(diào)用子程序即可,調(diào)用后會(huì)自動(dòng)返回到調(diào)用指令的下一條指令。因用后會(huì)自動(dòng)返回到調(diào)用指令的下一條指令。因此采用子程序設(shè)計(jì)時(shí),可以簡(jiǎn)化程序設(shè)計(jì)。此采用子程序設(shè)計(jì)時(shí),可以簡(jiǎn)化程序設(shè)計(jì)。1.1. 從調(diào)試程序的角度,由于原本在多處出現(xiàn)的程從調(diào)試程序的角度,由于原本在多處出現(xiàn)的程序段,縮減為子程序調(diào)用指令,使調(diào)試程序更序段,縮減為子程序調(diào)用指令,使調(diào)試程序更加方便。加方便。缺點(diǎn):缺點(diǎn):采用子程序設(shè)計(jì)后。由于調(diào)用子程序和從子程序采用子程序設(shè)計(jì)后。由于調(diào)用子程序和從子程序中返回需要執(zhí)行指令,并且為保護(hù)某些寄存器的
3、中返回需要執(zhí)行指令,并且為保護(hù)某些寄存器的內(nèi)容,需要進(jìn)行壓入堆棧和彈出堆棧的操作,因內(nèi)容,需要進(jìn)行壓入堆棧和彈出堆棧的操作,因此會(huì)使程序執(zhí)行速度受到一定的影響。此會(huì)使程序執(zhí)行速度受到一定的影響。 六、六、 子程序子程序?qū)崿F(xiàn):實(shí)現(xiàn):子程序調(diào)用是通過(guò)自動(dòng)修改(子程序調(diào)用是通過(guò)自動(dòng)修改(IPIP)和)和/ /或(或(CSCS)的內(nèi)容實(shí)現(xiàn)的。的內(nèi)容實(shí)現(xiàn)的。為了確保子程序調(diào)用后能夠返回到調(diào)用指令之后,為了確保子程序調(diào)用后能夠返回到調(diào)用指令之后,CALLCALL指令會(huì)自動(dòng)保存返回地址(指令會(huì)自動(dòng)保存返回地址(IPIP和和/ /或或CSCS),),而而RETRET指令會(huì)自動(dòng)返回到指令會(huì)自動(dòng)返回到CALLCA
4、LL指令的下一條指令。指令的下一條指令。 六、六、 子程序子程序2 2、調(diào)用和返回指令、調(diào)用和返回指令CALLCALL指令:指令:段內(nèi)調(diào)用段內(nèi)調(diào)用段間調(diào)用段間調(diào)用段內(nèi)直接調(diào)用段內(nèi)直接調(diào)用段內(nèi)間接調(diào)用段內(nèi)間接調(diào)用段間直接調(diào)用段間直接調(diào)用段間間接調(diào)用段間間接調(diào)用六、六、 子程序子程序(IP)(cs)段內(nèi)調(diào)用段內(nèi)調(diào)用子過(guò)程與原調(diào)用程序在同一代碼子過(guò)程與原調(diào)用程序在同一代碼段,在調(diào)用之前會(huì)自動(dòng)把斷點(diǎn)的段,在調(diào)用之前會(huì)自動(dòng)把斷點(diǎn)的偏移地址壓棧(偏移地址壓棧(調(diào)用指令的下一調(diào)用指令的下一條指令的地址條指令的地址)斷點(diǎn)斷點(diǎn)入口入口地址地址CALL TIMERCALL TIMERCALL WORD PTR S
5、ICALL WORD PTR SI六、六、 子程序子程序段間調(diào)用段間調(diào)用子過(guò)程與原調(diào)用程序不在同一代碼段,在調(diào)用子過(guò)程與原調(diào)用程序不在同一代碼段,在調(diào)用之前會(huì)自動(dòng)把斷點(diǎn)的段基地址和偏移地址壓棧。之前會(huì)自動(dòng)把斷點(diǎn)的段基地址和偏移地址壓棧。先將斷點(diǎn)的先將斷點(diǎn)的CSCS壓棧,再壓入壓棧,再壓入IPIP。CALL FAR PTR TIMERCALL DWORD PTR SI六、六、 子程序子程序返回指令返回指令格式:格式: RET RET RETF RETF近返回:從棧頂彈出兩個(gè)字節(jié)內(nèi)容送近返回:從棧頂彈出兩個(gè)字節(jié)內(nèi)容送IPIP, SPSP內(nèi)容加內(nèi)容加2 2遠(yuǎn)返回:從棧頂彈出四個(gè)字節(jié)內(nèi)容分別遠(yuǎn)返回:從
6、棧頂彈出四個(gè)字節(jié)內(nèi)容分別 送送CSCS和和IPIP,SPSP內(nèi)容加內(nèi)容加4 4從堆棧中彈出斷點(diǎn)地址,返回源程序。從堆棧中彈出斷點(diǎn)地址,返回源程序。段內(nèi)返回(近返回)段內(nèi)返回(近返回)段間返回(遠(yuǎn)返回)段間返回(遠(yuǎn)返回)斷點(diǎn)斷點(diǎn)入口入口地址地址六、六、 子程序子程序3 3、主程序和子程序間的參數(shù)傳遞、主程序和子程序間的參數(shù)傳遞入口參數(shù):將主程序給子程序提供的初始數(shù)據(jù)或入口參數(shù):將主程序給子程序提供的初始數(shù)據(jù)或獲得初始數(shù)據(jù)的信息稱(chēng)為子程序的入口參數(shù)。獲得初始數(shù)據(jù)的信息稱(chēng)為子程序的入口參數(shù)。出口參數(shù):子程序返回給主程序的結(jié)果稱(chēng)為子程出口參數(shù):子程序返回給主程序的結(jié)果稱(chēng)為子程序的出口參數(shù)。序的出口參數(shù)
7、。參數(shù)傳遞可用以下參數(shù)傳遞可用以下3 3種方法完成種方法完成 :* *利用寄存器利用寄存器* *利用內(nèi)存單元(變量)傳遞參數(shù)。利用內(nèi)存單元(變量)傳遞參數(shù)。* *利用堆棧利用堆棧六、六、 子程序子程序4 4、子程序說(shuō)明文件、子程序說(shuō)明文件六、六、 子程序子程序5 5、過(guò)程的嵌套、遞歸調(diào)用、過(guò)程的嵌套、遞歸調(diào)用過(guò)程的嵌套過(guò)程的嵌套六、六、 子程序子程序遞歸調(diào)用遞歸調(diào)用 當(dāng)子程序嵌套時(shí),若某子程序要調(diào)用的子程序就是其本身,則稱(chēng)為遞歸調(diào)用。例例1 1 子程序設(shè)計(jì),編寫(xiě)子程序?qū)崿F(xiàn)統(tǒng)計(jì)子程序設(shè)計(jì),編寫(xiě)子程序?qū)崿F(xiàn)統(tǒng)計(jì)一個(gè)字(一個(gè)字(AXAX)中)中“1 1”的個(gè)數(shù)。的個(gè)數(shù)。解:利用移位指令或循環(huán)移位指令,
8、每次解:利用移位指令或循環(huán)移位指令,每次對(duì)對(duì)CFCF位進(jìn)行檢測(cè):位進(jìn)行檢測(cè):p當(dāng)當(dāng)CF=1CF=1時(shí),則總個(gè)數(shù)加時(shí),則總個(gè)數(shù)加1 1;p當(dāng)當(dāng)CF=0CF=0時(shí),則總個(gè)數(shù)不變。時(shí),則總個(gè)數(shù)不變。這種操作可以采用有條件轉(zhuǎn)移指令來(lái)實(shí)現(xiàn),這種操作可以采用有條件轉(zhuǎn)移指令來(lái)實(shí)現(xiàn),也可采用方便的也可采用方便的ADCADC指令實(shí)現(xiàn)。子程序如指令實(shí)現(xiàn)。子程序如下:下: 六、六、 子程序子程序COUNTER1 PROC NEARCOUNTER1 PROC NEAR PUSH AX PUSH AX MOV CX,16 MOV CX,16 XOR BL,BL XOR BL,BLCOU1:COU1: SHR AX,1
9、SHR AX,1 ADC BL,0 ADC BL,0 LOOP COU1 LOOP COU1 POP AX POP AX RET RETCOUNTER1 ENDP COUNTER1 ENDP 六、六、 子程序子程序例例1 1 子程序應(yīng)用。利用上例設(shè)計(jì)的子程序,統(tǒng)子程序應(yīng)用。利用上例設(shè)計(jì)的子程序,統(tǒng)計(jì)字型變量計(jì)字型變量VAR1VAR1中中1 1的個(gè)數(shù)。的個(gè)數(shù)。解:在數(shù)據(jù)段中定義變量解:在數(shù)據(jù)段中定義變量VAR1VAR1和和CounterVar1CounterVar1:VAR1VAR1DWDW1234H1234HCounterVar1 CounterVar1 DB ?DB ?則可在代碼段中編寫(xiě)程序
10、:則可在代碼段中編寫(xiě)程序:MOV AX, VAR1MOV AX, VAR1CALL COUNTER1CALL COUNTER1MOVMOV CounterVar1,BL CounterVar1,BL執(zhí)行后,結(jié)果單元執(zhí)行后,結(jié)果單元CounterVar1CounterVar1的值為的值為5 5,說(shuō)明,說(shuō)明1234H1234H中包含有中包含有5 5個(gè)個(gè)“1 1”。 六、六、 子程序子程序例例2 2 編寫(xiě)程序,完成將一組編寫(xiě)程序,完成將一組BCD BCD 數(shù)轉(zhuǎn)換成數(shù)轉(zhuǎn)換成16 16 位二進(jìn)制數(shù)。位二進(jìn)制數(shù)。(BCD BCD 數(shù)轉(zhuǎn)換成數(shù)轉(zhuǎn)換成16 16 位二進(jìn)制數(shù)用子程序?qū)崿F(xiàn))位二進(jìn)制數(shù)用子程序?qū)崿F(xiàn))BCD BCD 數(shù)轉(zhuǎn)換成數(shù)轉(zhuǎn)換成16 16 位二進(jìn)制數(shù)的算法步驟為:位二進(jìn)制數(shù)的算法步驟為:DX=0;DX=0;(用(用DX DX 存
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年屏蔽電磁波玻璃合作協(xié)議書(shū)
- 2025年中成藥制藥生產(chǎn)線(xiàn)合作協(xié)議書(shū)
- 景區(qū)直播流程
- 三年級(jí)下冊(cè)口算練習(xí)題
- 三年級(jí)數(shù)學(xué)下冊(cè)除法口算估算練習(xí)
- 《海底世界》公開(kāi)課一等獎(jiǎng)創(chuàng)新教案+(表格式共24張)
- 9《 黃山奇石》+公開(kāi)課一等獎(jiǎng)創(chuàng)新教案(共55張)
- 山東藥品食品職業(yè)學(xué)院《廣告實(shí)務(wù)(實(shí)踐)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青海衛(wèi)生職業(yè)技術(shù)學(xué)院《農(nóng)藥生物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧機(jī)電職業(yè)技術(shù)學(xué)院《人力資源管理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 建設(shè)工程工作總結(jié)報(bào)告
- 脾破裂術(shù)后健康宣教課件
- 三廢環(huán)保管理培訓(xùn)
- 財(cái)務(wù)管控的間接成本
- 藏族唐卡藝術(shù)特色分析
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告
- 護(hù)士團(tuán)隊(duì)的協(xié)作和領(lǐng)導(dǎo)力培養(yǎng)培訓(xùn)課件
- QFD模板含計(jì)算公式計(jì)分標(biāo)準(zhǔn)說(shuō)明模板
- 醫(yī)院護(hù)理培訓(xùn)課件:《早產(chǎn)兒姿勢(shì)管理與擺位》
- 人工智能在生物醫(yī)學(xué)倫理與法律中的基因編輯與生命倫理問(wèn)題研究
- 《論文的寫(xiě)作技巧》課件
評(píng)論
0/150
提交評(píng)論