版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
------------------------------------------------------------------------實驗報告子程序設(shè)計實驗實驗5子程序?qū)嶒炓唬畬嶒災(zāi)康?.掌握主程序與子程序之間的調(diào)用關(guān)系及調(diào)用方法;2.掌握子程序調(diào)用過程中近程調(diào)用與遠(yuǎn)程調(diào)用的區(qū)別;3.掌握通過堆棧轉(zhuǎn)送參數(shù)的方法。4.掌握多模塊程序設(shè)計方法二.實驗內(nèi)容1.將BUF開始的10個單元中的二進(jìn)制數(shù)轉(zhuǎn)換成兩位十六進(jì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;二進(jìn)制轉(zhuǎn)換成十六進(jìn)制子程序MOVBL,[SI]INCSIRETHEXACENDPDISPPROCNEAR;顯示子程序MOVCL,4MOVCH,2MOVE:;移位語句ROLBL,CLMOVDL,BLANDDL,0FHADDDL,30HCMPDL,'9'JBEPRINTADDDL,07HPRINT:MOVAH,02H;顯示語句INT21HDECCHJNZMOVEMOVDL,''MOVAH,02HINT21HRETDISPENDPCODESENDSENDSTART2.編寫一個主程序,從鍵盤接收若干個字符,然后用遠(yuǎn)調(diào)用的方法,調(diào)用子程序統(tǒng)計字符串中字符’b’的個數(shù).子程序的參數(shù)是字符串的首地址TABLE,字符串長度N及字符”b”.子程序返回字符"b”的個數(shù).參數(shù)傳送采用堆棧實現(xiàn).主程序在子程序返回后,顯示字符”b”及其個數(shù)(設(shè)為一位十六進(jìn)制數(shù))。DATASEGMENTSTR1DB0ah,0dh,'PLEASEINPUTYOURSTRING:$'STR2DB0ah,0dh,'THENUMBEROFbis:$'TABLEDB50,?,50DUP(?),'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,STR1MOVAH,9INT21HLEADX,TABLEMOVAH,0AHINT21HLEASI,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:INCSILOOPAGAINMOVAL,AHMOV[BP+10],AXPOPBPRET4CHECKENDPSCODEENDSENDSTART3.請編寫一個程序來實現(xiàn)簡單的程序菜單顯示。(采用多模塊程序設(shè)計方法)顯示一個菜單要求用戶從下表中選擇:(1) HEXACGAME(對應(yīng)-->程序1)(2) CHARSTATISTICSPROGRAM(對應(yīng)-->程序2)(3) PRESS“ESC”TOQUIT用戶作出選擇1~3時,顯示輸出要執(zhí)行操作的名字,如“Yourselectionis1,theprogramwillexecuteHEXACNUMBERGAME!”然后轉(zhuǎn)向相應(yīng)的程序去執(zhí)行,執(zhí)行結(jié)束前進(jìn)行退出的判斷,顯示一個提示信息“willyoucontinueprogramreally?(Y:N)”要求用戶從鍵盤鍵入字符,若是“Y”鍵,則繼續(xù)程序的執(zhí)行,若是“N”鍵,則返回到菜單。若用戶選擇3,要求程序顯示提示信息“PleasepressESCkeytoexit!”,并能按要求正確退出。DATASSEGMENT OPTDWYI DWERmenuDB0DH,0AH,'THEMENU:';顯示菜單DB0DH,0AH,'(1)HEXACGAME';對應(yīng)-->程序1 DB0DH,0AH,'(2)CHARSTATISTICSPROGRAM';對應(yīng)-->程序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:DATASSTART: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,TABLEMOVAH,0AH;輸入字符串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í)行當(dāng)前程序MOVAH,9INT21HMOVAH,1INT21HCMPAL,'Y';按y繼續(xù),按n退出,不需區(qū)分大小寫JEYESCMPAL,'y'JEYESCMPAL,'N'JESTARTCMPAL,'n'JESTARTYES:JMPopt[DI];繼續(xù)運行當(dāng)前子程序EXIT:MOVAH,4CH;退出INT21HMAINENDPCODESENDSHEXACCODESSEGMENTASSUMECS:HEXACCODESHEXACPROCFAR;二進(jìn)制轉(zhuǎn)換成十六進(jìn)制子程序MOVBL,[SI]INCSIRETHEXACENDPHEXACCODESENDSDISPCODESSEGMENTASSUMECS:DISPCODESDISPPROCFAR;顯示子程序MOVCL,4MOVCH,2MOVE:;移位語句ROLBL,CLMOVDL,BLANDDL,0FHADDDL,30HCMPDL,'9'JBEPRINTADDDL,07HPRINT:MOVAH,02H;顯示語句INT21HDECCHJNZMOVEMOVDL,''MOVAH,02HINT21HRETDISPENDPDISPCODESENDSCHARCODESEGMENTASSUMECS:CHARCODE;子程序部分CHECKPROCFARPUSHBPMOVBP,SPMOVSI,[BP+10]MOVCX,[BP+8]MOVAX,[BP+6]XORAH,AHAGAIN:CMPAL,[SI]JNECAN1INCAHCAN1:INCSILOOPAGAINMOVAL,AHMOV[BP+10],AXPOPBPRET4CHECKENDPCHARCODEENDSENDSTART三.實驗要求1.第一個實驗程序用子程序的近程調(diào)用實現(xiàn)。由于在調(diào)用HEXASC子程序時,子程序又
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 用藥指導(dǎo)與患者安全依從性
- 車間電工考試試題及答案
- 質(zhì)保監(jiān)察培訓(xùn)試題及答案
- 2025-2026五年級音樂期末測試卷上學(xué)期
- 2025-2026二科學(xué)上學(xué)期期末卷
- 1990高考語文作文題目及答案
- 針刀鏡護(hù)理人員操作指引
- 腸道微生物與腫瘤個體化防治新策略
- 肝轉(zhuǎn)移轉(zhuǎn)化治療的病理完全緩解預(yù)測
- 洗漱室衛(wèi)生管理制度
- 青年教師培訓(xùn):AI賦能教育的創(chuàng)新與實踐
- 2025年山東省中考統(tǒng)考數(shù)學(xué)模擬試卷(含答案)
- 廣東省東莞市2024-2025學(xué)年高一上學(xué)期1月期末英語試題【含答案解析】
- QC080000體系文件手冊
- GB/T 44233.2-2024蓄電池和蓄電池組安裝的安全要求第2部分:固定型電池
- DL∕T 612-2017 電力行業(yè)鍋爐壓力容器安全監(jiān)督規(guī)程
- 2024年國企行測題庫
- 煙囪技術(shù)在血管腔內(nèi)修復(fù)術(shù)中的應(yīng)用
- 崗位聘用登記表
- 2023年高鐵信號車間副主任述職報告
- 第3章 圓錐曲線的方程【精簡思維導(dǎo)圖梳理】高考數(shù)學(xué)高效備考 人教A版2019選擇性必修第一冊
評論
0/150
提交評論