實驗報告-子程序設計實驗_第1頁
實驗報告-子程序設計實驗_第2頁
實驗報告-子程序設計實驗_第3頁
實驗報告-子程序設計實驗_第4頁
實驗報告-子程序設計實驗_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

實驗報告子程序設計實驗實驗報告-子程序設計實驗實驗報告子程序設計實驗實驗5子程序?qū)嶒炓?實驗目的1.掌握主程序與子程序之間的調(diào)用關系及調(diào)用方法;2.掌握子程序調(diào)用過程中近程調(diào)用與遠程調(diào)用的區(qū)別;3.掌握通過堆棧轉(zhuǎn)送參數(shù)的方法。4、掌握多模塊程序設計方法二.實驗內(nèi)容1.將BUF開始的10個單元中的二進制數(shù)轉(zhuǎn)換成兩位十六進制數(shù)的ASCII碼,在屏幕上顯示出來。要求碼型轉(zhuǎn)換通過子程序HEXAC實現(xiàn),在轉(zhuǎn)換過程中,通過子程序DISP實現(xiàn)顯示。DATASSEGMENT BUFDB00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,00100100B,11100010B,01010010BCANDB$-BUF;定義常量CANDATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASMAINPROCFAR;主程序塊START:MOVAX,DATASMOVDS,AXMOVCL,10LEASI,BUFLOOP1:;調(diào)用子程序語句callHEXACcallDISPDECCANJNZLOOP1EXIT:MOVAH,4CHINT21HMAINENDPHEXACPROCNEAR;二進制轉(zhuǎn)換成十六進制子程序MOVBL,[SI]INCSIRETHEXACENDP實驗報告-子程序設計實驗全文共9頁,當前為第1頁。DISPPROCNEAR;顯示子程序?qū)嶒瀳蟾?子程序設計實驗全文共9頁,當前為第1頁。MOVCL,4MOVCH,2MOVE:;移位語句ROLBL,CLMOVDL,BLANDDL,0FHADDDL,30HCMPDL,'9'JBEPRINTADDDL,07HPRINT:MOVAH,02H;顯示語句INT21HDECCHJNZMOVEMOVDL,''MOVAH,02HINT21HRETDISPENDPCODESENDSENDSTART2.編寫一個主程序,從鍵盤接收若干個字符,然后用遠調(diào)用的方法,調(diào)用子程序統(tǒng)計字符串中字符’b’的個數(shù)、子程序的參數(shù)就是字符串的首地址TABLE,字符串長度N及字符”b”、子程序返回字符"b”的個數(shù)、參數(shù)傳送采用堆棧實現(xiàn)、主程序在子程序返回后,顯示字符”b”及其個數(shù)(設為一位十六進制數(shù))。DATASEGMENTSTR1DB0ah,0dh,'PLEASEINPUTYOURSTRING:$'STR2DB0ah,0dh,'THENUMBEROFbis:$'TABLEDB50,?,50DUP(?),'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,STR1MOVAH,9INT21HLEADX,TABLEMOVAH,0AH實驗報告-子程序設計實驗全文共9頁,當前為第2頁。INT21H實驗報告-子程序設計實驗全文共9頁,當前為第2頁。LEASI,TABLEMOVCL,[SI+1]MOVCH,0INCSIINCSIMOVAL,'b'MOVAH,0PUSHSIPUSHCXPUSHAXCALLFARPTRCHECKPOPAXMOVCL,ALLEADX,STR2MOVAH,9INT21HMOVDL,CLANDDL,0FHCMPDL,9JBECANADDDL,7CAN:ADDDL,30HMOVAH,2INT21HEXIT:MOVAH,4CHINT21HCODEENDSSCODESEGMENTASSUMECS:SCODECHECKPROCFARPUSHBPMOVBP,SPMOVSI,[BP+10]MOVCX,[BP+8]MOVAX,[BP+6]XORAH,AHAGAIN:CMPAL,[SI]JNECAN1INCAHCAN1:實驗報告-子程序設計實驗全文共9頁,當前為第3頁。INCSI實驗報告-子程序設計實驗全文共9頁,當前為第3頁。LOOPAGAINMOVAL,AHMOV[BP+10],AXPOPBPRET4CHECKENDPSCODEENDSENDSTART3、請編寫一個程序來實現(xiàn)簡單的程序菜單顯示。(采用多模塊程序設計方法)顯示一個菜單要求用戶從下表中選擇:(1) HEXACGAME(對應-->程序1)(2) CHARSTATISTICSPROGRAM(對應-->程序2)(3) PRESS“ESC”TOQUIT用戶作出選擇1~3時,顯示輸出要執(zhí)行操作的名字,如“Yourselectionis1,theprogramwillexecuteHEXACNUMBERGAME!”然后轉(zhuǎn)向相應的程序去執(zhí)行,執(zhí)行結(jié)束前進行退出的判斷,顯示一個提示信息“willyoucontinueprogramreally?(Y:N)”要求用戶從鍵盤鍵入字符,若就是“Y”鍵,則繼續(xù)程序的執(zhí)行,若就是“N”鍵,則返回到菜單。若用戶選擇3,要求程序顯示提示信息“PleasepressESCkeytoexit!”,并能按要求正確退出。DATASSEGMENT OPTDWYI DWERmenuDB0DH,0AH,'THEMENU:';顯示菜單DB0DH,0AH,'(1)HEXACGAME';對應-->程序1 DB0DH,0AH,'(2)CHARSTATISTICSPROGRAM';對應-->程序2 DB0DH,0AH,'(3)PRESS"ESC"TOQUIT$' BUFDB00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,00100100B,11100010B,01010010BCANDB$-BUF;定義常量CANstr1DB0DH,0AH,'Yourselectionis1,theprogramwillexecuteHEXACGAME!$'str2DB0dh,0ah,'Yourselectionis2,theprogramwillexecuteCHARSTATISTICSPROGRAM!$'str3DB0DH,0AH,'willyoucontinueprogramreally?(Y:N)$'str4DB0DH,0AH,'PleasepressESCkeytoexit!$'TABLEDB50,?,50DUP(?),'$'char1db0ah,0dh,'PLEASEINPUTYOURSTRING:$'char2db0ah,0dh,'THENUMBEROFbis:$'DATASENDSCODESSEGMENTMAINPROCFARASSUMECS:CODES,DS:DATAS實驗報告-子程序設計實驗全文共9頁,當前為第4頁。START:實驗報告-子程序設計實驗全文共9頁,當前為第4頁。MOVAX,DATASMOVDS,AXXORDI,DIsubbx,bxxorsi,siLEADX,menu;顯示主菜單MOVAH,9INT21Hmovdl,0dh;顯示回車movah,2int21hMOVDL,0AH;顯示換行MOVAH,2INT21HMOVAH,1;輸入選項INT21HCMPAL,'1'JEYICMPAL,'2'JEERCMPAL,'3'JEQUITYI:MOVDI,0leadx,str1movah,9int21hMOVCL,10LEASI,BUFCALLHEXACLOOP1:;調(diào)用子程序語句callHEXACcallDISPDECCANJNZLOOP1JMPCONTINUEER:MOVDI,02Hleadx,str2movah,9int21hLEADX,char1MOVAH,9INT21HLEADX,TABLE實驗報告-子程序設計實驗全文共9頁,當前為第5頁。MOVAH,0AH;輸入字符串實驗報告-子程序設計實驗全文共9頁,當前為第5頁。INT21HLEASI,TABLEMOVCL,[SI+1]MOVCH,0;CX中為字符串長度INCSIINCSI;SI指向串首址TABLEMOVAL,'b'MOVAH,0;AX中為待查字符PUSHSIPUSHCXPUSHAX;參數(shù)送堆棧CALLCHECKPOPAX;統(tǒng)計個數(shù)在AL中MOVCL,ALLEADX,char2;顯示結(jié)果MOVAH,9INT21HMOVDL,CLANDDL,0FHCMPDL,9JBECAN3ADDDL,7CAN3:ADDDL,30HMOVAH,2INT21H;顯示統(tǒng)計個數(shù)JMPCONTINUEQUIT:LEADX,str4;退出的子程序MOVAH,9INT21HMOVAH,1INT21HCMPAL,1BH;按ESC退出JEEXITCONTINUE:LEADX,str3;用戶就是否繼續(xù)執(zhí)行當前程序MOVAH,9INT21HMOVAH,1INT21HCMPAL,'Y';按y繼續(xù),按n退出,不需區(qū)分大小寫JEYESCMPAL,'y'實驗報告-子程序設計實驗全文共9頁,當前為第6頁。JEYES實驗報告-子程序設計實驗全文共9頁,當前為第6頁。CMPAL,'N'JESTARTCMPAL,'n'JESTARTYES:JMPopt[DI];繼續(xù)運行當前子程序EXIT:MOVAH,4CH;退出INT21HMAINENDPCODESENDSHEXACCODESSEGMENTASSUMECS:HEXACCODESHEXACPROCFAR;二進制轉(zhuǎn)換成十六進制子程序MOVBL,[SI]INCSIRETHEXACENDPHEXACCODESENDSDISPCODESSEGMENTASSUMECS:DISPCODESDISPPROCFAR;顯示子程序MOVCL,4MOVCH,2MOVE:;移位語句ROLBL,CLMOVDL,BLANDDL,0FHADDDL,30HCMPDL,'9'JBEPRINTADDDL,07HPRINT:MOVAH,02H;顯示語句INT21HDECCHJNZMOVEMOVDL,''MOVAH,02HINT21HRETDISPENDPDISPCODESENDSCHARCODESEGMENT實驗報告-子程序設計實驗全文共9頁,當前為第7頁。ASSUMECS:CHARCODE;子程序部分實驗報告-子程序設計實驗全文共9頁,當前為第7頁。CHECKPROCFARPUSHBPMOVBP,SPMOVSI,[BP+10]MOVCX,[BP+8]MOVAX,[BP+6]XORAH,AHAGAIN:CMPAL,[SI]JNECAN1INCAHCAN1:INCSILOOPAGAINMOVAL,AHMOV[BP+10],AXPOPBPRET4CHECKENDPCHARCODEENDSENDSTART實驗報告-子程序設計實驗全文共9頁,當前為第8頁。實驗報告-子程序設計實驗全文共9頁,當前為第8頁。三.實驗要求1.第一個實驗程序用子程序的近程調(diào)用實現(xiàn)。由于在調(diào)用HEXASC子程序時,子程序又調(diào)用了DISP子程序,這叫子程序的嵌套調(diào)用。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論