




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)5子程序?qū)嶒?yàn)一. 實(shí)驗(yàn)?zāi)康? 掌握主程序與子程序之間的調(diào)用關(guān)系及調(diào)用方法;2掌握子程序調(diào)用過(guò)程中近程調(diào)用與遠(yuǎn)程調(diào)用的區(qū)別;3掌握通過(guò)堆棧轉(zhuǎn)送參數(shù)的方法。4.掌握多模塊程序設(shè)計(jì)方法二. 實(shí)驗(yàn)內(nèi)容1.將BUF開(kāi)始的10個(gè)單元中的二進(jìn)制數(shù)轉(zhuǎn)換成兩位十六進(jìn)制數(shù)的ASCIl碼,在屏幕上顯示出來(lái)。要求碼型轉(zhuǎn)換通過(guò)子程序HEXAC實(shí)現(xiàn),在轉(zhuǎn)換過(guò)程中,通過(guò)子程序 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)用子程序語(yǔ)句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:;移位語(yǔ)句ROL BL,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,9JBE PRINTADD DL,07HPRINT:MOV AH,02H;顯示語(yǔ)句INT 21HDEC CHJNZ MOVEMOV DL,MOV AH,02HINT 21HRETDISP ENDPCODES ENDSEND STARTD = SmaSH5 .01 -exe07 21 22 03 05 82 93 24 E2 S22 編寫(xiě)一個(gè)主程序,從鍵盤(pán)接收若干個(gè)字符,然后用遠(yuǎn)調(diào)用的方法,調(diào)用子程序統(tǒng)計(jì)字符 串中字符的個(gè)數(shù)子程序的參數(shù)是字符串的首地址TABLE,字符串長(zhǎng)度
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請(qǐng)編寫(xiě)一個(gè)程序來(lái)實(shí)現(xiàn)簡(jiǎn)單的程序菜單顯示。(采用多模塊程序設(shè)計(jì)方法)顯示一個(gè)菜單要求用戶(hù)從下表中選擇:(1)HEXAC GAME(對(duì)應(yīng)程序1)(2)CHAR STATISTICS PROGRAM(對(duì)應(yīng)程序2)(3)PRESS “ E
7、SC”TO QUIT用戶(hù)作出選擇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) ”要求用戶(hù)從鍵盤(pán)鍵入字符,若是“ Y”鍵,則繼續(xù)程序的執(zhí)行,若是“ N”鍵,則返回到菜單。若用戶(hù)選擇3,要求程序顯示提示信息PIeaSe PreSS ESC key to exit!” ,并能按要求正確退出。DATAS SEGMENTOPT DW YIDW
8、 ERmenu DB ODH,OAH,THE MENU:;顯示菜單DB 0DH,0AH,(1)HEXAC GAME;對(duì)應(yīng)一一 程序 1DB 0DH,0AH,(2)CHARSTATISTICS PROGRAM;對(duì)應(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;顯示回車(chē)movah,2int21hMOVDL,0AH;顯示換行MOVAH,2INT21HMOVAH,1;輸入選項(xiàng)INT21HCMPAL,1JEYICMPAL,2JEERCMPAL,3JEQUITYI:MOVDI,0Ieadx,str1m
11、ovah,9int21hMOVCL,10LEASI,BUFCALLHEXACLOOP1:;調(diào)用子程序語(yǔ)句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中為字符串長(zhǎng)度;Sl指向串首址TABLE;AX中為待查字符;參數(shù)送堆棧;統(tǒng)計(jì)個(gè)數(shù)在AL中;顯示結(jié)果;顯示統(tǒng)計(jì)個(gè)數(shù);退出的子程序;按ESC退出;用戶(hù)是否繼續(xù)執(zhí)行當(dāng)前程序;按y繼續(xù),按n退出,不需區(qū)分大小寫(xiě)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;顯示子程序;移位語(yǔ)句;顯示語(yǔ)句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 陽(yáng)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)過(guò)程中可以從堆棧的內(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 ,串的長(zhǎng)度N及待統(tǒng)計(jì)的字符“ b”)順序壓如堆棧,在子程序調(diào)用后
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織團(tuán)日活動(dòng)方案
- 公司熒光夜跑活動(dòng)方案
- 公司疫情理發(fā)活動(dòng)方案
- 公司溫情環(huán)節(jié)活動(dòng)方案
- 公司激勵(lì)經(jīng)銷(xiāo)商活動(dòng)方案
- 公司新年娛樂(lè)活動(dòng)方案
- 公司活動(dòng)創(chuàng)新活動(dòng)方案
- 公司線上中秋節(jié)活動(dòng)方案
- 公司紀(jì)念畫(huà)冊(cè)策劃方案
- 2025年職業(yè)病防治與安全管理調(diào)研試題及答案
- 醫(yī)學(xué)高級(jí)職稱(chēng)評(píng)審答辯報(bào)告PPT模板
- 《緩解新入園幼兒焦慮策略的研究》課題結(jié)題材料(開(kāi)題報(bào)告、中期報(bào)告、結(jié)題報(bào)告、調(diào)查問(wèn)卷、課題論文)
- 健康生活方式基本的知識(shí)講座
- 消防管理檢查評(píng)分表
- 制造執(zhí)行系統(tǒng)SMT MES解決方案
- 高二區(qū)域地理 撒哈拉以南的非洲課件
- 數(shù)字化精密加工車(chē)間項(xiàng)目可行性研究報(bào)告建議書(shū)
- 2022年《內(nèi)蒙古自治區(qū)建設(shè)工程費(fèi)用定額》取費(fèi)說(shuō)明
- Q∕GDW 10799.6-2018 國(guó)家電網(wǎng)有限公司電力安全工作規(guī)程 第6部分:光伏電站部分
- 寧波市建設(shè)工程資料統(tǒng)一用表(2022版)1 通用分冊(cè)
- 危險(xiǎn)化學(xué)品安全技術(shù)說(shuō)明書(shū)MSDS—汽油
評(píng)論
0/150
提交評(píng)論