實(shí)驗(yàn)報(bào)告子程序設(shè)計(jì)實(shí)驗(yàn)_第1頁(yè)
實(shí)驗(yàn)報(bào)告子程序設(shè)計(jì)實(shí)驗(yàn)_第2頁(yè)
實(shí)驗(yàn)報(bào)告子程序設(shè)計(jì)實(shí)驗(yàn)_第3頁(yè)
實(shí)驗(yàn)報(bào)告子程序設(shè)計(jì)實(shí)驗(yàn)_第4頁(yè)
實(shí)驗(yàn)報(bào)告子程序設(shè)計(jì)實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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 編寫一個(gè)主程序,從鍵盤接收若干個(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)編寫一個(gè)程序來(lái)實(shí)現(xiàn)簡(jiǎn)單的程序菜單顯示。(采用多模塊程序設(shè)計(jì)方法)顯示一個(gè)菜單要求用戶從下表中選擇:(1)HEXAC GAME(對(duì)應(yīng)程序1)(2)CHAR STATISTICS PROGRAM(對(duì)應(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;對(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;顯示回車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退出;用戶是否繼續(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;顯示子程序;移位語(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)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論