




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)5子程序?qū)嶒?yàn)一. 實(shí)驗(yàn)?zāi)康? 掌握主程序與子程序之間的調(diào)用關(guān)系及調(diào)用方法;2掌握子程序調(diào)用過程中近程調(diào)用與遠(yuǎn)程調(diào)用的區(qū)別;3掌握通過堆棧轉(zhuǎn)送參數(shù)的方法。4.掌握多模塊程序設(shè)計(jì)方法二. 實(shí)驗(yàn)內(nèi)容1.將BUF開始的10個(gè)單元中的二進(jìn)制數(shù)轉(zhuǎn)換成兩位十六進(jìn)制數(shù)的ASCIl碼,在屏幕上顯示出來。要求碼型轉(zhuǎn)換通過子程序HEXAC實(shí)現(xiàn),在轉(zhuǎn)換過程中,通過子程序 DISP實(shí)現(xiàn)顯示。DATAS SEGMENTBUF DB 00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,00100100B, 11100010B,010
2、10010BCAN DB $-BUF;定義常量 CANDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASMAIN PROC FAR;主程序塊START:MOVAX,DATASMOVDS,AXMOVCL,10LEASI,BUFLOOP1:;調(diào)用子程序語句Call HEXACCall DISPDEC CANJNZ LOOP1EXIT:MOV AH,4CHINT 21HMAIN ENDP;二進(jìn)制轉(zhuǎn)換成十六進(jìn)制子程序HEXAC PROC NEARMOV BL,SIINC SIRETHEXAC ENDPDlSP PRoC NEAR;顯示子程序MOV CL,4M
3、OV CH,2MOVE:;移位語句ROL BL,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,9JBE PRINTADD DL,07HPRINT:MOV AH,02H;顯示語句INT 21HDEC CHJNZ MOVEMOV DL,MOV AH,02HINT 21HRETDISP ENDPCODES ENDSEND STARTD = SmaSH5 .01 -exe07 21 22 03 05 82 93 24 E2 S22 編寫一個(gè)主程序,從鍵盤接收若干個(gè)字符,然后用遠(yuǎn)調(diào)用的方法,調(diào)用子程序統(tǒng)計(jì)字符 串中字符的個(gè)數(shù)子程序的參數(shù)是字符串的首地址TABLE,字符串長度
4、 N及字符” b子程序返回字符b”的個(gè)數(shù)參數(shù)傳送采用堆棧實(shí)現(xiàn)主程序在子程序返回后,顯示字符” b及其個(gè) 數(shù)(設(shè)為一位十六進(jìn)制數(shù))。DATA SEGMENTSTR1 DB Oah,Odh,PLEASE INPUT YOUR STRING:$ STR2 DB 0ah,0dh,THE NUMBER OF b is:$ TABLE DB 50, ? ,50 DUP(?),$DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOVAX,DATAMOVDS,AXLEADX,STR1MOVAH,9INT21HLEADX,TABLEMOVAH,0AHINT
5、21HLEASI , TABLEMOVCL, SI+1MOVCH, 0INCSIINCSIMOVAL,bMOVAH,0PUSHSIPUSHCXPUSHAXCALLFAR PTR CHECKPOPAXMOVCL,ALLEADX,STR2MOVAH,9INT21HMOVDL,CLANDDL, 0FHCMPDL,9JBECANADDDL,7ADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HENDSSEGMENTASSUMECS:SCODEPROCFARPUSHBPMOVBP,SPMOVSI,BP+10MOVCX, BP+8MOVAX, BP+6XORAH, AHCMPAL,S
6、IJNECAN1INCAHCAN:EXIT:CoDESCoDECHECKAGAIN:CAN1:INC SlLooP AGAINMoVAL, AHMOVBP+10,AXPOPBPRET4CHECK ENDPSCODE ENDSEND STARTPLEfiSE INPUT VoUFl STRlNG = ehbuIhfbda,Eh THE NIIHRFR OF h is詞3請編寫一個(gè)程序來實(shí)現(xiàn)簡單的程序菜單顯示。(采用多模塊程序設(shè)計(jì)方法)顯示一個(gè)菜單要求用戶從下表中選擇:(1)HEXAC GAME(對應(yīng)程序1)(2)CHAR STATISTICS PROGRAM(對應(yīng)程序2)(3)PRESS “ E
7、SC”TO QUIT用戶作出選擇13時(shí),顯示輸出要執(zhí)行操作的名字,如YoUr SeleCtion is 1,the ProgramWill execute HEXAC NUMBER GAME!”然后轉(zhuǎn)向相應(yīng)的程序去執(zhí)行,執(zhí)行結(jié)束前進(jìn)行退出的判斷,顯示一個(gè)提示信息will you ContinUe PrOgram really ? (Y:N) ”要求用戶從鍵盤鍵入字符,若是“ Y”鍵,則繼續(xù)程序的執(zhí)行,若是“ N”鍵,則返回到菜單。若用戶選擇3,要求程序顯示提示信息PIeaSe PreSS ESC key to exit!” ,并能按要求正確退出。DATAS SEGMENTOPT DW YIDW
8、 ERmenu DB ODH,OAH,THE MENU:;顯示菜單DB 0DH,0AH,(1)HEXAC GAME;對應(yīng)一一 程序 1DB 0DH,0AH,(2)CHARSTATISTICS PROGRAM;對應(yīng) 程序2DB 0DH,0AH,(3)PRESS ESC TO QUIT$BUFDB00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,00100100B,11100010B,01010010BCANDB $-BUF;定義常量 CANstr1 DB 0DH,0AH,Your SeIeCtiO n is
9、 1,the PrOgram will execute HEXAC GAME!$str2 DB 0dh,0ah,Your SeIeCtiOn is 2,the PrOgram will execute CHARSTATISTICS PROGRAM!$str3 DB 0DH,0AH,will you ContinUe PrOgram really?(Y:N)$str4 DB 0DH,0AH,Please PreSS ESC key to exit!$TABLE DB 50, ? ,50 DUP(?),$Char1 db 0ah,0dh,PLEASE INPUT YOUR STRING:$Char
10、2 db 0ah,0dh,THE NUMBER OF b is:$DATAS ENDSCODES SEGMENTMAIN PROC FARASSUME CS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXXORDI,DISUbbx,bxXorsi,siLEADX,me nu;顯示主采單MOVAH,9INT21Hmovdl,0dh;顯示回車movah,2int21hMOVDL,0AH;顯示換行MOVAH,2INT21HMOVAH,1;輸入選項(xiàng)INT21HCMPAL,1JEYICMPAL,2JEERCMPAL,3JEQUITYI:MOVDI,0Ieadx,str1m
11、ovah,9int21hMOVCL,10LEASI,BUFCALLHEXACLOOP1:;調(diào)用子程序語句callHEXACcallDISPDECCANJNZLOOP1JMPCONTINUEER:MOVDI,02Hleadx,str2movah,9int21hLEADX,char1MOVAH,9INT21HLEADX,TABLEMoVAH,0AHINT21HLEASI , TABLEMOVCL, SI+1MOVCH, 0INCSIINCSIMOVAL,bMOVAH,0PUSHSIPUSHCXPUSHAXCALLCHECKPOPAXMOVCL,ALLEADX,char2MOVAH,9INT21HM
12、OVDL,CLANDDL, 0FHCMPDL,9JBECAN3ADDDL,7CAN3:ADDDL,30HMOVAH,2INT21HJMPCONTINUEQUIT:LEADX,str4MOVAH,9INT21HMOVAH,1INT21HCMPAL,1BHJEEXITCONTINUE:LEADX,str3MOVAH,9INT21HMOVAH,1INT21HCMPAL,YJEYES;輸入字符串;CX中為字符串長度;Sl指向串首址TABLE;AX中為待查字符;參數(shù)送堆棧;統(tǒng)計(jì)個(gè)數(shù)在AL中;顯示結(jié)果;顯示統(tǒng)計(jì)個(gè)數(shù);退出的子程序;按ESC退出;用戶是否繼續(xù)執(zhí)行當(dāng)前程序;按y繼續(xù),按n退出,不需區(qū)分大小寫C
13、MPAL,yJEYESCMPAL,NJESTARTCMPAL, nJESTARTYES:JMPoptDIEXIT:MOVAH,4CH;退出INT21HMAIN ENDP;繼續(xù)運(yùn)行當(dāng)前子程序CoDES ENDSHEXACCoDES SEGMENTASSUME CS:HEXACCODES HEXAC PROC FARMOV BL,SIINC SIRETHEXAC ENDPHEXACCODES ENDSDISPCODES SEGMENTASSUME CS:DISPCODESDISP PROC FAR;二進(jìn)制轉(zhuǎn)換成十六進(jìn)制子程序MOVMOVCL,4CH,2MOVE:ROLBL,CLMOVDL,BLAN
14、DDL,0FHADDDL,30HCMPDL,9JBEPRINTADDDL,07HPRINT:MOVAH,02HINT21HDECCHJNZMOVEMOVDL,MOVAH,02HINT21HRET;顯示子程序;移位語句;顯示語句DlSP ENDPDlSPCoDES ENDSCHARCoDE SEGMENTASSUME CS: CHARCODE;子程序部分CHECK PROC FARPUSHBPMOVBP,SPMOVSI,BP+10MOVCX, BP+8MOVAX, BP+6XORAH, AHAGAIN:CMPAL,SIJNE CAN1INCAHCAN1:INCSILOOP AGAINMOVAL,
15、 AHMOVBP+10,AXPOPBPRET4CHECK ENDPCHARCODE ENDSEND STARTTME HEMtnHbXHC GfiHE(2CHftH STATISTICS PRoGRflPRtS *ESC,* To QUEI1VOllr SF IECt i IS 1 ,t lie PrOgrdn WiIl execute HEXAC GAnEt21 25 03 咅5 S2 93t 24 E: 52 01UiLI you COnC iuc PrCyMn Feal1 ?YTHE MFNtUHEXAC GArlECHAH STftTISTlcS PHOGAAMaPBESS dTSC
16、To QUIT2VlDUr eion i甲 2FthC prrdR WilI CKECUtC OtAR STATISTICS PRoGRMPLFASF IHPl)T 0iR STRlHGiMbfhhhhsrijfhTME NUMBtR OF h is=Wiil VaU CUntinUe IPrCyrcall)7V =H)THE HKNtl:HEXAC GAHECHftR STATISTlCS FTOGHfiHPRFSS -ESC TO QUtT3卩】UEUH nff:; ESG kc v t_ti xitF一C1HEXAC GAtlEJ)CMH ETfiTISTieS PROCBflrtOPP
17、RESS i,ESC,* TO QUITlQUr s1c1o is IthV PrGJJr*m WiII execute HEXAC GANE21 22 陽3 2 93 252 OaMlIL j/vu Ct InUE preyram rvallyTV :HnHE HENUiC1HEXAC GAHEPHESS ESC1* TO QUIT*ur 3flIACtiOn Li Rtbc prorfln WilI execute QlAR STATISTICS PROGRAH? PLFftSF IHPUT VOnF STKfHG:Mbfhhbb=djfhHE HIJnBER OF b icz1L you
18、 GOfltinDICrn *JLlyTlt聲:FHE HEMJ =C1HEXC GArlEuchh Etatistics PRQGHfiH3)PRESS i,ESC1i Jo QUn三. 實(shí)驗(yàn)要求1. 第一個(gè)實(shí)驗(yàn)程序用子程序的近程調(diào)用實(shí)現(xiàn)。由于在調(diào)用HEXASC子程序時(shí),子程序又調(diào)用了 DISP子程序,這叫子程序的嵌套調(diào)用。實(shí)驗(yàn)過程中可以從堆棧的內(nèi)容看到兩個(gè)子 程序的返回地址值。 由于是近調(diào)用,地址值只包括返回地址的段內(nèi)偏移量。在每個(gè)子程序的執(zhí)行中,檢查CS值是不變的。2第二個(gè)程序是利用遠(yuǎn)調(diào)用的方法調(diào)用子程序的。在遠(yuǎn)調(diào)用情況下,主程序與子程序 處在不同的邏輯代碼段中,可在子程序執(zhí)行中查看 CS值,它與主程序中的 CS值是不同的。子程序調(diào)用后,堆棧中保留了返回地址的段地址及段內(nèi)偏移量。3. 第二個(gè)程序中,主程序與子程序之間參數(shù)的傳送是由堆棧實(shí)現(xiàn)的。一段是將參數(shù)(此 處是串首址TABLE ,串的長度N及待統(tǒng)計(jì)的字符“ b”)順序壓如堆棧,在子程序調(diào)用后
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 28803.1-2025消費(fèi)品安全風(fēng)險(xiǎn)管理第1部分:導(dǎo)則
- GB/T 18204.5-2025公共場所衛(wèi)生檢驗(yàn)方法第5部分:集中空調(diào)通風(fēng)系統(tǒng)
- 郵政快遞智能技術(shù)專業(yè)教學(xué)標(biāo)準(zhǔn)(高等職業(yè)教育專科)2025修訂
- 2025年中國家用光脫毛器具行業(yè)市場全景分析及前景機(jī)遇研判報(bào)告
- 中國鞋面橫織機(jī)行業(yè)市場競爭格局及投資前景展望報(bào)告
- 中醫(yī)培訓(xùn)課件 哪些
- 2025年中國車床行業(yè)市場深度評(píng)估及投資策略咨詢報(bào)告
- 中國幕墻裝飾板市場規(guī)模預(yù)測及投資戰(zhàn)略咨詢報(bào)告
- 2025年 重慶市長壽區(qū)教育事業(yè)單位定向招聘考試筆試試題附答案
- 2025年 新疆鐵道職業(yè)技術(shù)學(xué)院招聘考試筆試試題附答案
- 《公司理財(cái)》期末考試題庫(附答案)
- 2023年宜城市中醫(yī)醫(yī)院醫(yī)護(hù)人員招聘筆試題庫及答案解析
- 醫(yī)學(xué)高級(jí)職稱評(píng)審答辯報(bào)告PPT模板
- 《緩解新入園幼兒焦慮策略的研究》課題結(jié)題材料(開題報(bào)告、中期報(bào)告、結(jié)題報(bào)告、調(diào)查問卷、課題論文)
- 健康生活方式基本的知識(shí)講座
- 制造執(zhí)行系統(tǒng)SMT MES解決方案
- 高二區(qū)域地理 撒哈拉以南的非洲課件
- 數(shù)字化精密加工車間項(xiàng)目可行性研究報(bào)告建議書
- 2022年《內(nèi)蒙古自治區(qū)建設(shè)工程費(fèi)用定額》取費(fèi)說明
- Q∕GDW 10799.6-2018 國家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 寧波市建設(shè)工程資料統(tǒng)一用表(2022版)1 通用分冊
評(píng)論
0/150
提交評(píng)論