




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
計(jì)算機(jī)接口技術(shù)
(匯編與接口)第四章匯編語言程序設(shè)計(jì)4微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第1頁!主要內(nèi)容:匯編語言源程序的結(jié)構(gòu)匯編語言語句格式偽指令功能調(diào)用匯編語言程序設(shè)計(jì)微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第2頁!第4章:4.6子程序設(shè)計(jì)把功能相對(duì)獨(dú)立的程序段單獨(dú)編寫和調(diào)試,作為一個(gè)相對(duì)獨(dú)立的模塊供程序使用,就形成子程序子程序可以實(shí)現(xiàn)源程序的模塊化,可簡化源程序結(jié)構(gòu),可以提高編程效率主程序(調(diào)用程序)需要利用CALL指令調(diào)用子程序(被調(diào)用程序)子程序需要利用RET指令返回主程序微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第3頁!第4章:子程序編寫注意事項(xiàng)⑴子程序要利用過程定義偽指令聲明⑵子程序最后利用RET指令返回主程序,主程序執(zhí)行CALL指令調(diào)用子程序⑶子程序中對(duì)堆棧的壓入和彈出操作要成對(duì)使用,保持堆棧的平衡⑷子程序開始應(yīng)該保護(hù)使用到的寄存器內(nèi)容,子程序返回前相應(yīng)進(jìn)行恢復(fù)⑸子程序應(yīng)安排在代碼段的主程序之外,最好放在主程序執(zhí)行終止后的位置(返回DOS后、匯編結(jié)束END偽指令前),也可以放在主程序開始執(zhí)行之前的位置微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第4頁!第4章:例4.15源程序SsesegmentstackDb30dup(?)SseendsCodesegmentAssumecs:code,ss:ssestart:movax,23h
movdl,‘?’;主程序提供顯示字符
calldpchar
;調(diào)用子程序
movax,4c00h int21h主程序部分本程序不需要數(shù)據(jù)段微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第5頁!第4章:子程序編寫注意事項(xiàng)(續(xù))⑹子程序允許嵌套和遞歸⑺子程序可以與主程序共用一個(gè)數(shù)據(jù)段,也可以使用不同的數(shù)據(jù)段(注意修改DS),還可以在子程序最后設(shè)置數(shù)據(jù)區(qū)(利用CS尋址)⑻子程序的編寫可以很靈活,例如具有多個(gè)出口(多個(gè)RET指令)和入口,但一定要保證堆棧操作的正確性⑼處理好子程序與主程序間的參數(shù)傳遞問題⑽提供必要的子程序說明信息(子程序名,入口參數(shù),出口參數(shù),功能,程序)微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第6頁!第4章:例4.16子程序;子程序dpstri:顯示DS:SI指向的字符串(以0結(jié)尾)
dpstri proc pushaxdps1: movdl,[si] ;取顯示字符
incsi cmpdl,0 ;是結(jié)尾,則顯示結(jié)束
jzdps2
calldpchar
;調(diào)用字符顯示子程序
jmpdps1dps2: popax
retdpstri endp;子程序dpchar:入口參數(shù):寄存器DS:SI,傳地址出口參數(shù):無微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第7頁!第4章:多出口子程序;子程序HTOASC:十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼HTOASC proc andal,0fh cmpal,9 jbehtoasc1 addal,37h ;是A~F,加37H ret ;子程序返回htoasc1: addal,30h ;是0~9,加30H
ret ;子程序返回HTOASC endp微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第8頁!第4章:4.6.2用寄存器傳遞參數(shù)最簡單和常用的參數(shù)傳遞方法是通過寄存器,只要把參數(shù)存于約定的寄存器中就可以了由于通用寄存器個(gè)數(shù)有限,這種方法對(duì)少量數(shù)據(jù)可以直接傳遞數(shù)值,而對(duì)大量數(shù)據(jù)只能傳遞地址采用寄存器傳遞參數(shù),注意帶有出口參數(shù)的寄存器不能保護(hù)和恢復(fù),帶有入口參數(shù)的寄存器可以保護(hù)、也可以不保護(hù),但最好能夠保持一致dpchardpstriHTOASC微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第9頁!第4章:4.6.4用堆棧傳遞參數(shù)參數(shù)傳遞還可以通過堆棧這個(gè)臨時(shí)存儲(chǔ)區(qū)。主程序?qū)⑷肟趨?shù)壓入堆棧,子程序從堆棧中取出參數(shù);子程序?qū)⒊隹趨?shù)壓入堆棧,主程序彈出堆棧取得它們采用堆棧傳遞參數(shù)是程式化的,它是編譯程序處理參數(shù)傳遞、以及匯編語言與高級(jí)語言混合編程時(shí)的常規(guī)方法微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第10頁!第4章:1.宏定義宏定義由一對(duì)宏匯編偽指令MACRO和ENDM來完成,格式如下:
宏名
MACRO[形參表]
……
;宏定義體
ENDM其中宏名是符合語法的標(biāo)識(shí)符,同一源程序中該名字定義唯一。宏定義體中不僅可以是硬指令序列,還可以是偽指令語句序列可選的形參表給出了宏定義中用到的形式參數(shù),每個(gè)形式參數(shù)之間用逗號(hào)分隔微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第11頁!第4章:宏的實(shí)例1dispchar macrochar ;;宏定義
movah,2 ;;宏定義體
movdl,char int21h
endm
… dispchar‘?’ ;宏調(diào)用(宏指令)
…
1
movah,2 ;宏展開
1
movdl,’?’1 int21h微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第12頁!第4章:宏與子程序的比較比較僅是源程序級(jí)的簡化:宏調(diào)用在匯編時(shí)進(jìn)行程序語句的展開,不需要返回;不減小目標(biāo)程序,執(zhí)行速度沒有改變通過形參、實(shí)參結(jié)合實(shí)現(xiàn)參數(shù)傳遞,簡捷直觀、靈活多變還是目標(biāo)程序級(jí)的簡化:子程序調(diào)用在執(zhí)行時(shí)由CALL指令轉(zhuǎn)向、RET指令返回;形成的目標(biāo)代碼較短,執(zhí)行速度減慢需要利用寄存器、存儲(chǔ)單元或堆棧等傳遞參數(shù)宏子程序微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第13頁!第4章:教學(xué)要求掌握常量表達(dá)、變量定義及應(yīng)用、變量和標(biāo)號(hào)的屬性及操作符掌握匯編語言源程序的編輯、匯編、連接和調(diào)試的開發(fā)方法掌握基本偽指令和操作符:EQU/=;+-*/;DB/DW/DD、?/DUP;ORG/$、OFFSET/SEG/PTR;END;PROC/ENDP微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第14頁!XLAT指令的功能微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第15頁!第4章:4.6.1過程定義和子程序編寫匯編語言中,子程序要用一對(duì)過程偽指令PROC和ENDP聲明,格式如下:
過程名
PROC[NEAR|FAR]
……
;過程體
過程名
ENDP可選的參數(shù)指定過程的調(diào)用屬性。沒有指定過程屬性,則采用默認(rèn)屬性NEAR屬性(段內(nèi)近調(diào)用)的過程只能被相同代碼段的其他程序調(diào)用FAR屬性(段間遠(yuǎn)調(diào)用)的過程可以被相同或不同代碼段的程序調(diào)用微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第16頁!第4章:例4.15用dos功能調(diào)用輸出一個(gè)字符的子程序
;主程序
movdl,‘?’
;主程序提供顯示字符
calldpchar
;調(diào)用子程序
;子程序:顯示AL中的字符dpchar proc
;過程定義,過程名為dpchar
pushax
;順序入棧,保護(hù)寄存器
pushbx movah,02h ;輸出一個(gè)字符功能
int21h
popbx
;逆序出棧,恢復(fù)寄存器
popax
ret
;子程序返回dpchar endp
;過程結(jié)束微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第17頁!第4章:例4.15源程序(續(xù))dpchar proc
;過程定義,過程名為dpchar pushax ;順序入棧,保護(hù)寄存器
movah,02h ;輸出一個(gè)字符功能
int21h
popax;逆序出棧,恢復(fù)寄存器
ret
;子程序返回dpchar endp
;過程結(jié)束
endstart子程序安排在主程序執(zhí)行終止后的位置入口參數(shù):寄存器DL,傳數(shù)值出口參數(shù):無微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第18頁!第4章:例4.16顯示以“0”結(jié)尾字符串的嵌套子程序
;數(shù)據(jù)段msg db'Well,Imadeit!',0
;代碼段(主程序)
movsi,offsetmsg
;主程序提供顯示字符串
calldpstri
;調(diào)用子程序微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第19頁!第4章:含數(shù)據(jù)區(qū)的子程序;子程序HTOASC:十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼HTOASC proc pushbx movbx,offsetASCII andal,0fh xlatCS:ASCII;換碼:AL←CS:[BX+AL] popbx
ret;數(shù)據(jù)區(qū)ASCII db30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db41h,42h,43h,44h,45h,46hHTOASC endp入口參數(shù):寄存器AL,傳數(shù)值出口參數(shù):寄存器AL,傳數(shù)值微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第20頁!第4章:參數(shù)傳遞主程序與子程序間一個(gè)主要問題是參數(shù)傳遞入口參數(shù)(輸入?yún)?shù)):主程序調(diào)用子程序時(shí),提供給子程序的參數(shù)出口參數(shù)(輸出參數(shù)):子程序執(zhí)行結(jié)束返回給主程序的參數(shù)參數(shù)的具體內(nèi)容傳數(shù)值:傳送數(shù)據(jù)本身傳地址:傳送數(shù)據(jù)的主存地址常用的參數(shù)傳遞方法寄存器共享變量(存儲(chǔ)單元)堆棧微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第21頁!第4章:4.6.3用共享變量傳遞參數(shù)子程序和主程序使用同一個(gè)變量名存取數(shù)據(jù)就是利用共享變量進(jìn)行參數(shù)傳遞如果主程序還要利用原來的變量值,則需要保護(hù)和恢復(fù)利用共享變量傳遞參數(shù),子程序的通用性較差,但特別適合在多個(gè)程序段間、尤其在不同的程序模塊間傳遞數(shù)據(jù)微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第22頁!第4章:4.7宏(Macro)匯編宏是具有宏名的一段匯編語句序列宏需要先定義,然后在程序中進(jìn)行宏調(diào)用由于形式上類似其他指令,所以常稱其為宏指令宏指令實(shí)際上是一段代碼序列的縮寫;在匯編時(shí),匯編程序用對(duì)應(yīng)的代碼序列替代宏指令因?yàn)槭窃趨R編過程中實(shí)現(xiàn)的宏展開,所以常稱為宏匯編微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第23頁!第4章:2.宏調(diào)用宏定義之后就可以使用它,即宏調(diào)用:
宏名
[實(shí)參表]宏調(diào)用的格式同一般指令一樣:在使用宏指令的位置寫下宏名,后跟實(shí)體參數(shù);如果有多個(gè)參數(shù),應(yīng)按形參順序填入實(shí)參,也用逗號(hào)分隔在匯編時(shí),宏指令被匯編程序用對(duì)應(yīng)的代碼序列替代,這就是宏展開宏展開的具體過程是:當(dāng)匯編程序掃描源程序遇到已有定義的宏調(diào)用時(shí),即用相應(yīng)的宏定義體完全替代源程序的宏指令,同時(shí)用位置匹配的實(shí)參對(duì)形參進(jìn)行取代微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第24頁!第4章:宏的實(shí)例2dispmsg macromessage ;;宏定義
movah,9 ;;宏定義體
leadx,message int21h
endm
… dispmsgstring ;宏調(diào)用(宏指令)
…
1
movah,9 ;宏展開
1
leadx,string1 int21h微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第25頁!第4章:宏與子程序的比較結(jié)論宏與子程序具有各自的特點(diǎn),程序員應(yīng)該根據(jù)具體問題選擇使用那種方法通常,當(dāng)程序段較短或要求較快執(zhí)行時(shí),應(yīng)選用宏;當(dāng)程序段較長或?yàn)闇p小目標(biāo)代碼時(shí),要選用子程序比較
結(jié)論宏子程序微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第26頁!第4章:教學(xué)要求(續(xù))掌握基本的順序、分支、循環(huán)和子程序設(shè)計(jì)方法熟悉常見程序設(shè)計(jì)問題:多精度運(yùn)算,查表(查代碼、特定值等)、ASCII和BCD代碼轉(zhuǎn)換;數(shù)據(jù)范圍判斷(0~9、A~Z、a~z)、字母大小寫轉(zhuǎn)換;字符串傳送、比較等操作、求最小最大值、數(shù)據(jù)求和、統(tǒng)計(jì)字符個(gè)數(shù)微機(jī)原理第04章4子程序共28頁,您現(xiàn)在瀏覽的是第27頁!大小寫字母的比較和轉(zhuǎn)換‘A’=41H=01000001B‘B’=42H…
‘Z’=5A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學(xué)級(jí)抗敏舒緩霜行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 科技企業(yè)如何運(yùn)用社交媒體增強(qiáng)品牌形象
- 2025年大型袋式除塵器項(xiàng)目發(fā)展計(jì)劃
- 出口鞋類企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 想象性群際接觸對(duì)大學(xué)生合作行為的實(shí)證研究-內(nèi)隱職業(yè)偏見的中介作用
- 防水防漏材料企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 酰胺類除草劑原藥企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 水獺皮帽企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 售房委托合同范本
- 鈹?shù)V企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 水環(huán)境綜合治理服務(wù)方案(技術(shù)標(biāo))
- 【原創(chuàng)】頭腦特工隊(duì)開的那些心理學(xué)腦洞
- 美甲藝術(shù)全套教學(xué)課件
- 中國古代餐具
- 施工日志模板
- Agilent7820A氣相色譜儀操作規(guī)程知識(shí)講解
- 400字作文稿紙(方格)A4打印模板
- 不領(lǐng)證的夫妻離婚協(xié)議書
- 鋁型材企業(yè)組織架構(gòu)及部門職能
- 華為BEM戰(zhàn)略解碼體系完整版
- Python商務(wù)數(shù)據(jù)分析與實(shí)戰(zhàn)PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論