版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
微機大作業(yè)班級:學(xué)號:姓名:第一題:(上機題)編寫程序?qū)崿F(xiàn)下列5項功能,通過從鍵盤輸入1~5進行菜單式選擇:(1)按數(shù)字鍵“1”,完成將字符串中的小寫字母變換成大寫字母。用戶輸入由英文大小寫字母或數(shù)字0~9組成的字符串(以回車結(jié)束),變換后按下列格式在屏幕上顯示: <原字符串>例如:abcdgyt0092 <新字符串>ABCDGYT0092 按任一鍵重做;按Esc鍵返回主菜單。 (2)按數(shù)字鍵“2”0~9組成的字符串(以回車結(jié)束),找出最大值后按下列格式在屏幕上顯示: <原字符串>Themaximumis<最大值>. 按任一鍵重做;按Esc鍵返回主菜單。(3)按數(shù)字鍵“3”,完成輸入數(shù)據(jù)組的排序。用戶輸入一組十進制數(shù)值(小于255),然后變換成十六進制數(shù),并按遞增方式進行排序,按下列格式在屏幕上顯示: <原數(shù)值串> <新數(shù)值串> 按任一鍵重做;按Esc鍵返回主菜單。(4)按數(shù)字鍵“4”,完成時間的顯示。首先提示用戶對時,即改變系統(tǒng)的定時器HH:MM:SS(以冒號間隔,回車結(jié)束),然后在屏幕的右上角實時顯示出時間:HH:MM:SS。 按任一鍵重新對時;按Esc鍵返回主菜單。(5)按數(shù)字鍵“5”,結(jié)束程序的運行,返回操作系統(tǒng)。運行結(jié)果:首先進入的首頁:輸入1輸入字符串:安任意鍵后:Esc鍵返回菜單:輸入2:輸入字符串:安任意鍵后Ese鍵返回菜單輸入3輸入若干數(shù):按任意鍵:按Esc返回主菜單輸入4安1修改時間輸入修改時間:按任意鍵重做按Esc返回主菜單輸入5退出程序代碼:clear_screenmacroop1,op2,op3,op4;清屏宏定義movah,06h;當前顯示頁上卷moval,00h;AL=上卷行數(shù),0為清屏movbh,07h;BH=填充字符屬性movch,op1;CH/CL=上卷窗口左上角坐標movcl,op2;movdh,op3;DH/DL=上卷窗口右下角坐標movdl,op4;int10hmovah,02h;置光標位置movbh,00h;BH=顯示頁movdh,00h;DH=行movdl,00h;DL=列int10hendmmenumacroop1,op2,op3;菜單顯示宏定義movah,02h;置光標位置movbh,00h;BH=顯示頁movdh,op1;DH=行movdl,op2;DL=列int10hmovah,09h;向屏幕顯示一串字符以leadx,op3;入口地址int21hendmdatasegmentSTRING11DB'請輸入字符串:$'STRING12DB'結(jié)果:$'STRING22DB'最大值:$'STRING31DB'請輸入0到255之間的若干數(shù):$'STRING32DB'新字符串:$'STRING33DB'輸入錯誤$'STRING41DB'請驗證時間……調(diào)整時間請按1$'STRING42DB'請輸入正確時間$'STRING43DB'調(diào)整完畢$'STRING1DB'1.Changelowercasetouppercase$'STRING2DB'2.Findthemaxmum$'STRING3DB'3.Rankthearrayincrementally$'STRING4DB'4.Displaytime$'STRING5DB'5.returntooperatingsystem$'STRINGDB'輸入任意鍵,重新操作,Esc鍵退出$'KEY1DB100DB?DB100DUP(?)NUMBUFDB100DB?DB100DUP(?)VARDB100DUP(?)GAODB0CIGAODB0DIWEIDB0SHUDB0dataendsstacksegmentDW100HDUP(?);inputstacksegmentcodehereTOPLABELWORDstackendscodesegmentassumecs:code,ds:data,es:data,ss:stackstart:movax,datamovds,axmoves,axmovax,stackmovss,axL1:leasp,TOP;inputcodesegmentcodehereclear_screen00d,00d,24d,79dmenu07h,15d,STRING1;輸出主菜menu09d,15d,STRING2menu11d,15d,STRING3menu13d,15d,STRING4menu15d,15d,STRING5;movah,02h;設(shè)置光標位置movbh,00hmovdh,17dmovdl,15dint10h;movah,01h;從鍵盤輸入任意字符int21hCMPAL,31HJZL2CMPAL,32HJZL3CMPAL,33HJZL4CMPAL,34HJZL5CMPAL,35HJZL6L2:CALLCHLTOU;11111111movah,01h;從鍵盤輸入任意字符int21hCMPAL,1BHJZL1JMPL2L3:CALLFINDMAX;22222222movah,01h;從鍵盤輸入任意字符int21hCMPAL,1BHJZL1JMPL3L4:CALLRANK;33333333movah,01h;從鍵盤輸入任意字符int21hCMPAL,1BHJZL1JMPL4L5:CALLDISPLAY;44444444movah,01h;從鍵盤輸入任意字符int21hCMPAL,1BHJZL1JMPL5L6:movah,4chint21hCHLTOUPROCNEARPUSHAXPUSHCXPUSHDXPUSHSIclear_screen0d,0d,23d,78d;清屏宏調(diào)用movah,02h;設(shè)置光標位movbh,00hmovdh,01hmovdl,0hint10hMOVAH,09HLEADX,STRING11;顯示STRING11INT21HMOVAH,0AH;輸入字符LEADX,KEY1INT21HLEASI,KEY1+1XORCX,CXMOVCL,[SI]INCSIL12:MOVAL,[SI]CMPAL,41HJBL11CMPAL,60HJBL11SUBAL,20HMOV[SI],ALL11:INCSILOOPL12MOV[SI+1],'$'CALLDISPCRMOVAH,09HLEADX,STRING12INT21HMOVAH,09HMOVDX,OFFSETKEY1+2INT21HCALLDISPCRCALLDISPCRMOVAH,09H;顯示LEADX,STRINGINT21HPOPSIPOPDXPOPCXPOPAXRETCHLTOUENDPFINDMAXPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIclear_screen0d,0d,23d,78d;清屏宏調(diào)用movah,02h;設(shè)置光標位movbh,00hmovdh,01hmovdl,0hint10hMOVAH,09HLEADX,STRING11INT21HMOVAH,0AHLEADX,KEY1INT21HLEASI,KEY1+1XORCX,CXMOVCL,[SI]INCSIDECCXMOVBL,[SI]L22:CMPBL,[SI+1]JAL21XCHGBL,[SI+1]L21:INCSILOOPL22CALLDISPCRMOVAH,09HLEADX,STRING22INT21HMOVDL,BLMOVAH,02HINT21HCALLDISPCRCALLDISPCRMOVAH,09H;顯示LEADX,STRINGINT21HPOPSIPOPDXPOPCXPOPBXPOPAXRETFINDMAXENDPRANKPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIRESORT:clear_screen0d,0d,23d,78d;清屏宏調(diào)用movah,02h;設(shè)置光標位movbh,00hmovdh,01hmovdl,0hint10hMOVAH,09H;顯示LEADX,STRING31INT21HcallDISPCRMOVAH,0AH;輸入數(shù)據(jù)LEADX,KEY1INT21HcallDISPCR CALLCIN_INT ;字符串轉(zhuǎn)換成數(shù)據(jù)串 CMPAL,0 JZRESORT ;判斷數(shù)據(jù)串是否有錯 CMPNUMBUF,0 JZRESORT ;判斷數(shù)據(jù)串是否為空MOVAH,09H;顯示LEADX,STRING32INT21HcallDISPCRCALLFARPTRMPSORT ;數(shù)據(jù)組排序 CALLFARPTRINT_OUT ;數(shù)據(jù)組的輸出callDISPCRMOVAH,09H;顯示LEADX,STRINGINT21HPOPDIPOPSIPOPDXPOPCXPOPBXPOPAXRETRANKENDPCIN_INT PROCNEAR ;讀入整型數(shù);入口參數(shù):無;出口參數(shù)為:AL(有無錯誤標志,0為有,1為無) MOVCL,KEY1+1 LEASI,KEY1+2 MOVCH,0 ;數(shù)據(jù)組數(shù)據(jù)個數(shù)置0 MOVDH,10 MOVAL,0 ;當前數(shù)據(jù)x=0 MOVDL,0 ;有無數(shù)據(jù)標志置0,即無數(shù)據(jù)FNDNUM: CMPBYTEPTR[SI],'' JZADDNUM ;判斷當前字符是否為空格 CMPBYTEPTR[SI],'0' JBERRNUM CMPBYTEPTR[SI],'9' JAERRNUM ;判斷當前字符是否在'0'-'9'之間 MOVDL,1 ;有無數(shù)據(jù)標志置1,即有數(shù)據(jù) MULDH XORBH,BH MOVBL,[SI] ADDAX,BX SUBAX,'0' ;計算出當前數(shù)據(jù)x CMPAH,0 JAERRNUM ;判斷x是否越界 JMPNEXTADDNUM: CMPDL,1 JNZNEXT ;判斷是否有數(shù)據(jù) INCCH ;數(shù)據(jù)組數(shù)據(jù)個數(shù)加1 CALLADDNEW MOVDL,0 MOVAL,0 ;清零NEXT: INCSI DECCL CMPCL,0 JNZFNDNUM ;依次檢查各字符 CMPDL,1 JNZTOTAL ;判斷是否有未加入的數(shù)據(jù) INCCH CALLADDNEWTOTAL: MOVNUMBUF,CH ;置數(shù)據(jù)組數(shù)據(jù)個數(shù) MOVAL,1 ;輸入數(shù)據(jù)無錯誤 JMPCRTNUMERRNUM: MOVAL,0 ;輸入數(shù)據(jù)有錯誤CRTNUM: RETCIN_INTENDPADDNEW PROCNEAR ;增加新數(shù);入口參數(shù):CH(數(shù)據(jù)組數(shù)據(jù)個數(shù))、AL(當前數(shù)據(jù)x);出口參數(shù):無 PUSHAX LEABX,NUMBUF MOVAL,CH CBW ADDBX,AX POPAX MOV[BX],AL RETADDNEW ENDPMPSORT PROCFAR ;數(shù)據(jù)組排序 MOVAL,NUMBUF CMPAL,1 JBENOSORT ;若只有一個元素,停止排序 CBW MOVCX,AX LEASI,NUMBUF ;SI指向數(shù)據(jù)組首地址 ADDSI,CX ;SI指向數(shù)據(jù)組末地址 DECCX ;外循環(huán)次數(shù)LP1: ;外循環(huán)開始 PUSHCX PUSHSI MOVDL,0 ;交換標志置0LP2: ;內(nèi)循環(huán)開始 MOVAL,[SI] CMPAL,[SI-1] JAENOXCHG XCHGAL,[SI-1] ;交換操作 MOV[SI],AL MOVDL,1 ;交換標志置1NOXCHG: DECSI LOOPLP2 POPSI POPCX CMPDL,1 JNZNOSORT ;判斷交換標志 LOOPLP1NOSORT:RETMPSORT ENDPINT_OUT PROCFAR ;輸出數(shù)據(jù)組 MOVAL,NUMBUF CBW MOVCX,AX MOVBL,10H LEASI,NUMBUF+1PRINT: MOVAL,[SI] CALLOUTNUM INCSI MOVAH,2 MOVDL,'' INT21H LOOPPRINT RETINT_OUTENDPOUTNUM PROCNEAR ;將十進制數(shù)以十六進制輸出;入口參數(shù):AL(待轉(zhuǎn)換的數(shù)據(jù)),BL(轉(zhuǎn)換進制數(shù)16);出口參數(shù):無 MOVAH,0 DIVBL PUSHAX CMPAH,10 JBPNUM ADDAH,7PNUM: ADDAH,30H MOVDL,AH POPAX PUSHDX CMPAL,0 JZOUTN CALLOUTNUMOUTN: POPDX MOVAH,2 INT21H RETOUTNUM ENDPDISPLAYPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIclear_screen0d,0d,23d,78d;清屏宏調(diào)用movah,02h;設(shè)置光標位movbh,00hmovdh,01hmovdl,0hint10hMOVAH,09H;顯示LEADX,STRING41INT21HCALLDISPLAY1CALLDISPCRMOVAH,01HINT21HCMPAL,31HJZL41JMPL42L41:movah,02h;設(shè)置光標位movbh,00hmovdh,02hmovdl,0hint10hMOVAH,09HLEADX,STRING42INT21HMOVAH,0AHLEADX,KEY1INT21HMOVBL,10 MOVAL,KEY1+2 SUBAL,30H SHLAL,1 SHLAL,1 SHLAL,1 SHLAL,1 ADDAL,KEY1+3 SUBAL,30H CMPAL,0 JBL42 CMPAL,24 JAEL42 ;判斷時有效性 MOVCH,AL MOVAL,KEY1+5 SUBAL,30H SHLAL,1 SHLAL,1 SHLAL,1 SHLAL,1 ADDAL,KEY1+6 SUBAL,30H CMPAL,0 JBL42 CMPAL,60 JAEL42 ;判斷分有效性 MOVCL,AL MOVAL,KEY1+8 SUBAL,30H SHLAL,1 SHLAL,1 SHLAL,1 SHLAL,1 ADDAL,KEY1+9 SUBAL,30H CMPAL,0 JBL42 CMPAL,60 JAEL42 ;判斷秒有效性 MOVDH,AL MOVDL,0 MOVAH,03H;置系統(tǒng)時間INT1AHmovah,02h;設(shè)置光標位movbh,00hmovdh,03hmovdl,0hint10hMOVAH,09HLEADX,STRING43INT21HCALLDISPCRCALLDISPCRMOVAH,09H;顯示LEADX,STRINGINT21HL42:CALLDISPLAY1POPSIPOPDXPOPCXPOPBXPOPAXRETDISPLAYENDPDISPLAY1PROCNEAR;顯示系統(tǒng)時鐘PUSHAXPUSHBXPUSHCXPUSHDX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DISPI:MOVAH,2xorbh,bhMOVDX,0045H;DX=CURSOR=45h,表示光標定位在1行70列INT10H;int10子功能02設(shè)置光標位置MOVAH,2INT1AHPUSHDXPUSHCXPOPBX;小時分鐘數(shù)給BXPUSHBXCALLSHOWBYTE;調(diào)用子程序顯示小時,小時在bh中CALLSHOWCOLON;調(diào)用子程序顯示時間分隔符":"POPBXXCHGBH,BL;分鐘給bhCALLSHOWBYTE;調(diào)用子程序顯示分鐘,bh是分鐘數(shù)CALLSHOWCOLON;調(diào)用子程序顯示時間分隔符":"POPBX;秒數(shù)給bhCALLSHOWBYTE;調(diào)用子程序顯示秒?movah,02h;設(shè)置光標位movbh,00hmovdh,05hmovdl,0hint10hMOVBX,0018HRE:MOVCX,0FFFFHREA:LOOPREADECBXJNZREMOVAH,0BHINT21HCMPAL,0JZDISPIPOPDXPOPCXPOPBXPOPAXRETDISPLAY1ENDPSHOWBYTEPROCNEAR;BCD值顯示子程序,BCD值在BH中BHCBWPUSHBX;壓棧BX值,以防沖掉MOVCL,4;以下代碼BH中BCD十位值轉(zhuǎn)ASCLL碼MOVAL,BHSHRAL,CLADDAL,30HCALLSHOW;調(diào)用子程序顯示AL,當前AL為時間值十位上的數(shù)值CALLCURMOVE;調(diào)用子程序后移光標POPBX;還原BX值MOVAL,BH;以下代碼BH中BCD個位值轉(zhuǎn)ASCLL碼ANDAL,0FHADDAL,30HCALLSHOW;調(diào)用子程序顯示AL,當前AL為時間值個位上的數(shù)值CALLCURMOVE;調(diào)用子程序后移光標RETSHOWBYTEENDPSHOWCOLONPROCNEAR;顯示字符":"子程序,用于時間分隔符MOVAL,':'CALLSHOW;調(diào)用子程序顯示":"CALLCURMOVE;調(diào)用子程序后移光標RETSHOWCOLONENDPCURMOVEPROCNEAR;光標后移子程序PUSHAXPUSHBXPUSHCXPUSHDXMOVAH,3MOVBH,0INT10H;取光標位置INCDL;光標列位置加1MOVAH,2INT10H;設(shè)光標位置POPDXPOPCXPOPBXPOPAXRETCURMOVEENDPSHOWPROCNEAR;顯示一個ASCLL字符子程序,AL為所顯字符ALPUSHAXPUSHBXPUSHCXMOVAH,09HMOVBX,002fh;BH/BL=字符背景色/字符顏
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職(工業(yè)分析技術(shù))食品成分檢驗綜合測試試題及答案
- 2025年大學(xué)通識選修(藝術(shù)鑒賞)試題及答案
- 2025年高職建筑工程技術(shù)(模板支護工藝)試題及答案
- 2025年高職航空裝備類(航空裝備基礎(chǔ))試題及答案
- 2025年高職水路運輸與海事管理(海事管理實務(wù))試題及答案
- 2025 小學(xué)四年級思想品德下冊公共場合優(yōu)化禮儀學(xué)習(xí)效果反饋課件
- 養(yǎng)老院老人心理健康制度
- 養(yǎng)老院康復(fù)設(shè)備管理制度
- 2026年學(xué)生檔案管理崗位面試指南含答案
- 2026年鄉(xiāng)村醫(yī)生信息化小測含答案
- 《合理利用網(wǎng)絡(luò)》(優(yōu)質(zhì)課件)
- 中深度鎮(zhèn)靜紅外線全身熱療方法課件
- 第四單元地理信息技術(shù)的應(yīng)用課件 【高效課堂+精研精講】高中地理魯教版(2019)必修第一冊
- 魯科版高中化學(xué)必修一教案全冊
- 管理養(yǎng)老機構(gòu) 養(yǎng)老機構(gòu)的服務(wù)提供與管理
- 提高隧道初支平整度合格率
- 2022年環(huán)保標記試題庫(含答案)
- 2023年版測量結(jié)果的計量溯源性要求
- 建筑能耗與碳排放研究報告
- GB 29415-2013耐火電纜槽盒
- 中國古代經(jīng)濟試題
評論
0/150
提交評論