微機原理上機答案(西電)_第1頁
微機原理上機答案(西電)_第2頁
微機原理上機答案(西電)_第3頁
微機原理上機答案(西電)_第4頁
微機原理上機答案(西電)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理上機答案(西電)上機作業(yè)(三)編寫如下程序,并在機器上調(diào)試成功。程序采用菜單式選擇,可以接收用戶從鍵盤輸入的五個命令(1-5),各命令功能分別為: (1)按下“1”鍵,完成字符串小寫字母變成大寫字母。用戶輸入一由英文大小寫字母或數(shù)字0-9組成的字符串(以回車結束),程序逐個檢查字符串中各字符,將原串中小寫字母變成大寫字母,其他字符不變,并在屏幕上顯示。用戶按任一鍵,重做,按ESC鍵,返回主菜單。(2)按下“2”鍵,完成找最大值(二選一)。 a.接收用戶輸入的可顯示字符串(以回車結束),程序?qū)⑵渲蠥SCII碼值最大的字符顯示出來; b.接收用戶輸入若干個無符號8位數(shù)(以空格或逗號為分隔符

2、,以回車結束),程序?qū)⑵渲凶畲蟮臄?shù)顯示出來。用戶按任一鍵,重做,按ESC鍵,返回主菜單。(3)按下“3”鍵,完成排序(二選一)。 a.接收用戶輸入的可顯示字符串,以回車結束。程序按ASCII碼值大小由大到小排序并輸出顯示; b.接收用戶輸入若干個有符號8位數(shù)(以空格或逗號為分隔符,以回車結束),程序?qū)⑵渲凶畲蟮臄?shù)顯示出來。用戶按任一鍵,重做,按ESC鍵,返回主菜單。(4)按下“4”鍵,顯示時間。 首先提示用戶對時,即用戶輸入時、分、秒(以空格或逗號為分隔符,以回車結束),然后,在屏幕上不斷顯示時間,格式為: XX(時): XX(分): XX(秒)最好定點顯示。用戶按任一鍵,重新對時,按ESC鍵

3、,返回主菜單。 (5)按下“5”鍵,結束程序運行,返回系統(tǒng)提示符。程序代碼:STACKSEGMENT STACKDB 256 DUP(?)TOPLABEL WORDSTACKENDSDATASEGMENTTABLEDW G1, G2, G3, G4, G5STRING1DB '1. Change small letters into capital letters of string;', 0DH, 0AH, '$'STRING2DB '2. Find the maximum of string;', 0DH, 0AH, '$'S

4、TRING3DB '3. Sort for datas;', 0DH, 0AH, '$'STRING4DB '4. Show Time;', 0DH, 0AH, '$'STRING5DB '5. Exit.', 0DH, 0AH, '$'STRINGNDB 'Input the number you select (1-5) : $'IN_STRDB 'Input the string (including letters & numbers, less than 6

5、0 letters) :', 0DH, 0AH, '$'PRESTRDB 'Original string : $'NEWSTRDB 'New string : $'OUT_STRDB 'The string is $'MAXCHRDB 'The maximum is $'IN_NUMDB 'Input the numbers (0 - 255, no more than 20 numbers) : ', 0DH, 0AH, '$'OUT_NUMDB 'Sorted

6、numbers : ', 0DH, 0AH, '$'IN_TIMDB 'Correct the time (HH:MM:SS) : $'HINTSTRDB 'Press ESC, go back to the menu; or press any key to play again!$'KEYBUFDB 61DB ?DB 61 DUP (?)NUMBUFDB ?DB 20 DUP (?)DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART:MOV AX, DATAMOV DS,

7、 AXMOV AX, STACKMOV SS, AXMOV SP, OFFSET TOPMAIN:CALL FAR PTR MENU; 設置顯示器AGAIN:MOV AH, 2MOV BH, 0; 頁號MOV DL, 41; 列號MOV DH, 10; 行號INT 10H; 光標位置設置MOV AH, 1INT 21HCMP AL, '1'JB AGAINCMP AL, '5'JA AGAINSUB AL, '1' N-1SHL AL, 1; (N-1)*2CBW; AL->AXLEA BX, TABLEADD BX, AXJMP WORD

8、 PTR BXG1:CALL FAR PTR CHGLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G1G2:CALL FAR PTR MAXLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G2G3:CALL FAR PTR SORTNUMMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G3G4:CALL FAR PTR TIMCHKMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G4G5:MOV AH, 4CHINT 21HMENUPROC FAR; 顯示主界面;設置顯

9、示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 5; 行號INT 10H; 光標位置設置MOV AH, 9LEA DX, STRING1INT 21HMOV AH, 2MOV DL, 5; 列號MOV DH, 6; 行號INT 10H; 光標位置設置MOV AH, 9LEA DX, STRING2INT 21HMOV AH, 2MOV DL, 5; 列號MOV DH, 7; 行號INT 10H; 光標位置設置MOV AH, 9LEA DX, STRING3INT 21H

10、MOV AH, 2MOV DL, 5; 列號MOV DH, 8; 行號INT 10H; 光標位置設置MOV AH, 9LEA DX, STRING4INT 21HMOV AH, 2MOV DL, 5; 列號MOV DH, 9; 行號INT 10H; 光標位置設置MOV AH, 9LEA DX, STRING5INT 21HMOV AH, 2MOV DL, 5; 列號MOV DH, 10; 行號INT 10H; 光標位置設置MOV AH, 9LEA DX, STRINGNINT 21HRETMENUENDPCHGLTRPROC FAR; 將輸入字符串中小寫字母便換成大寫字母RECHG:;設置顯示

11、器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 5; 行號INT 10H; 輸入提示光標位置設置MOV AH, 9LEA DX, IN_STRINT 21H; 輸入字符串提示MOV AH, 2MOV DL, 5; 列號MOV DH, 6; 行號INT 10H; 輸入字符串光標位置設置MOV AH, 0AHLEA DX, KEYBUFINT 21H; 輸入字符串CMP KEYBUF + 1, 0JZ RECHG ; 判斷輸入字符串是否為空串LEA BX, KEYBUF + 2M

12、OV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, '$' 在輸入字符串尾加結束標志$MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 7; 行號INT 10H; 源字符串提示光標位置設置MOV AH, 9LEA DX, PRESTRINT 21H; 輸出源字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 輸出源字符串LEA BX, KEYBUF + 2LCHG:CMP BYTE PTR BX, 61HJB NOCHGAND BYTE PTR BX,

13、 0DFHNOCHG:INC BXLOOP LCHG; 將字符串中小寫字母轉換成大寫字母MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 8; 行號INT 10H; 新字符串提示光標位置設置MOV AH, 9LEA DX, NEWSTRINT 21H; 輸出新字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 輸出新字符串MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 9; 行號INT 10H; 提示信息光標位置設置MOV AH, 9LEA DX, HINTSTRINT 21H; 輸出提示信

14、息RETCHGLTRENDPMAXLTRPROC FAR; 在輸入字符串中找出最大值REMAX:;設置顯示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 5; 行號INT 10H; 輸入提示光標位置設置MOV AH, 9LEA DX, IN_STRINT 21H; 輸入字符串提示MOV AH, 2MOV DL, 5; 列號MOV DH, 6; 行號INT 10H; 輸入字符串光標位置設置MOV AH, 0AHLEA DX, KEYBUFINT 21H; 輸入字符串CMP KE

15、YBUF + 1, 0JZ REMAX; 判斷輸入字符串是否為空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, '$' 在輸入字符串位加結束標志$MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 7; 行號INT 10H; 源字符串提示光標位置設置MOV AH, 9LEA DX, OUT_STRINT 21H; 輸出字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 輸出字符串MOV AH, 2MOV BH,

16、 0; 頁號MOV DL, 5; 列號MOV DH, 8; 行號INT 10H; 新字符串提示光標位置設置MOV AH, 9LEA DX, MAXCHRINT 21H; 輸出字符串中最大值提示MOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP BX, DLJB NOLCHGMOV DL, BXNOLCHG:INC BXLOOP LCMP; 找出字符串中最大字符,放入DLMOV AH, 2INT 21H; 輸出字符串中最大字符MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 9; 行號INT 10H; 提示信息光標位置設置MOV AH, 9

17、LEA DX, HINTSTRINT 21H; 輸出提示信息RETMAXLTRENDPSORTNUMPROC FAR; 對輸入數(shù)據(jù)組排序RESORT:;設置顯示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 5; 行號INT 10H; 輸入提示光標位置設置MOV AH, 9LEA DX, IN_NUMINT 21HMOV AH, 2MOV DL, 5; 列號MOV DH, 6; 行號INT 10H; 輸入數(shù)據(jù)組光標位置設置MOV AH, 0AHLEA DX, KEYBUFIN

18、T 21H; 輸入數(shù)據(jù)組字符串CALL CIN_INT; 字符串轉換成數(shù)據(jù)串CMP AL, 0JZ RESORT; 判斷數(shù)據(jù)串是否有錯CMP NUMBUF, 0JZ RESORT; 判斷數(shù)據(jù)串是否為空MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 7; 行號INT 10H; 輸出提示光標位置設置MOV AH, 9LEA DX, OUT_NUMINT 21H; 輸出數(shù)據(jù)串提示MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 8; 行號INT 10H; 輸出數(shù)據(jù)組光標位置設置CALL FAR PTR MPSORT; 數(shù)據(jù)組排

19、序CALL FAR PTR INT_OUT; 數(shù)據(jù)組的輸出MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 9; 行號INT 10H; 提示信息光標位置設置MOV AH, 9LEA DX, HINTSTRINT 21H; 輸出提示信息RETSORTNUMENDPCIN_INTPROC NEAR; 讀入整型數(shù); 入口參數(shù):無; 出口參數(shù)為:AL(有無錯誤標志,0為有,1為無)MOV CL, KEYBUF + 1LEA SI, KEYBUF + 2MOV CH, 0; 數(shù)據(jù)組數(shù)據(jù)個數(shù)置0MOV DH, 10MOV AL, 0; 當前數(shù)據(jù)x=0MOV DL, 0;

20、 有無數(shù)據(jù)標志置0,即無數(shù)據(jù)FNDNUM:CMP BYTE PTR SI, ' 'JZ ADDNUM; 判斷當前字符是否為空格CMP BYTE PTR SI, '0'JB ERRNUMCMP BYTE PTR SI, '9'JA ERRNUM; 判斷當前字符是否在'0'-'9'之間MOV DL, 1; 有無數(shù)據(jù)標志置1,即有數(shù)據(jù)MUL DHXOR BH, BHMOV BL, SIADD AX, BXSUB AX, '0' 計算出當前數(shù)據(jù)xCMP AH, 0JA ERRNUM; 判斷x是否越界JMP

21、NEXTADDNUM:CMP DL, 1JNZ NEXT; 判斷是否有數(shù)據(jù)INC CH; 數(shù)據(jù)組數(shù)據(jù)個數(shù)加1CALL ADDNEWMOV DL, 0MOV AL, 0; 清零NEXT:INC SIDEC CLCMP CL, 0JNZ FNDNUM; 依次檢查各字符CMP DL, 1JNZ TOTAL; 判斷是否有未加入的數(shù)據(jù)INC CHCALL ADDNEWTOTAL:MOV NUMBUF, CH; 置數(shù)據(jù)組數(shù)據(jù)個數(shù)MOV AL, 1; 輸入數(shù)據(jù)無錯誤JMP CRTNUMERRNUM:MOV AL, 0; 輸入數(shù)據(jù)有錯誤CRTNUM:RET CIN_INT ENDPADDNEWPROC NEA

22、R; 增加新數(shù); 入口參數(shù):CH(數(shù)據(jù)組數(shù)據(jù)個數(shù))、AL(當前數(shù)據(jù)x); 出口參數(shù):無PUSH AXLEA BX, NUMBUFMOV AL, CHCBWADD BX, AXPOP AXMOV BX, ALRETADDNEWENDPMPSORTPROC FAR; 數(shù)據(jù)組排序MOV AL, NUMBUFCMP AL, 1JBE NOSORT; 若只有一個元素,停止排序CBWMOV CX, AXLEA SI, NUMBUF; SI指向數(shù)據(jù)組首地址ADD SI, CX; SI指向數(shù)據(jù)組末地址DEC CX; 外循環(huán)次數(shù)LP1:; 外循環(huán)開始PUSH CXPUSH SIMOV DL, 0; 交換標志置0

23、LP2:; 內(nèi)循環(huán)開始MOV AL, SICMP AL, SI - 1JAE NOXCHGXCHG AL, SI - 1; 交換操作MOV SI, ALMOV DL, 1; 交換標志置1NOXCHG:DEC SILOOP LP2POP SIPOP CXCMP DL, 1JNZ NOSORT; 判斷交換標志LOOP LP1NOSORT:RETMPSORTENDPINT_OUTPROC FAR; 輸出數(shù)據(jù)組MOV AL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1PRINT:MOV AL, SICALL OUTNUMINC SIMOV AH,

24、2MOV DL, ' 'INT 21HLOOP PRINTRETINT_OUT ENDPOUTNUMPROC NEAR; 將十進制數(shù)以十六進制輸出; 入口參數(shù):AL(待轉換的數(shù)據(jù)),BL(轉換進制數(shù)16); 出口參數(shù):無MOV AH, 0DIV BLPUSH AXCMP AH, 10JB PNUMADD AH, 7PNUM:ADD AH, 30HMOV DL, AHPOP AXPUSH DXCMP AL, 0JZ OUTNCALL OUTNUMOUTN:POP DXMOV AH, 2INT 21HRETOUTNUMENDPTIMCHKPROC FAR; 設定并顯示時間;設置顯示

25、器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號MOV DL, 5; 列號MOV DH, 6; 行號INT 10H; 設置提示光標位置設置MOV AH, 9LEA DX, IN_TIMINT 21H; 時間串提示MOV AH, 0AHLEA DX, KEYBUFINT 21H; 輸入時間串MOV BL, 10MOV AL, KEYBUF + 2SUB AL, '0'MUL BLADD AL, KEYBUF + 3SUB AL, '0'CMP AL, 0JB INVALIDCMP A

26、L, 24JAE INVALID; 判斷 時 有效性MOV CH, ALMOV AL, KEYBUF + 5SUB AL, '0'MUL BLADD AL, KEYBUF + 6SUB AL, '0'CMP AL, 0JB INVALIDCMP AL, 60JAE INVALID; 判斷 分 有效性MOV CL, ALMOV AL, KEYBUF + 8SUB AL, '0'MUL BLADD AL, KEYBUF + 9SUB AL, '0'CMP AL, 0JB INVALIDCMP AL, 60JAE INVALID; 判斷

27、 秒 有效性MOV DH, ALMOV DL, 0MOV AH, 2DHINT 21H; 置系統(tǒng)時間INVALID:CALL TIMERETTIMCHKENDPTIMEPROC; 顯示時間子程序;設置顯示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號MOV DL, 10; 列號MOV DH, 9; 行號INT 10H; 提示信息光標位置設置MOV AH, 9LEA DX, HINTSTRINT 21H; 輸出提示信息DISP1:MOV AH, 2MOV BH, 0; 頁號MOV DL, 72; 列號MOV DH

28、, 0; 行號INT 10H; 提示光標位置設置MOV AH, 2CH; 取系統(tǒng)時間,CH,CL,DH分別存放時/分/秒INT 21HMOV AL, CH; 顯示 時CALL SHOWNUMMOV AH, 2MOV DL, ':'INT 21HMOV AL, CL; 顯示 分CALL SHOWNUMMOV AH, 2MOV DL, ':'INT 21HMOV AL, DH; 顯示 : 秒CALL SHOWNUMMOV AH,02H; 設置光標位置MOV DX,090AHMOV BH,0INT 10HMOV BX,0018HRE:MOV CX,0FFFFH; 延時REA:LOOP READEC BXJNZ REMOV AH, 0BH; 或MOV AH, 01HINT 21H; INT 16HCMP AL, 0; JE DISP1JZ DISP1; 檢查鍵盤狀態(tài)RETTIMEENDPSHOWNUM PROC; 把AL中的數(shù)字以十進制輸出; 入口參數(shù):AL(待顯示的數(shù)據(jù)); 出口參數(shù):無CBWPUSH CXPUSH DXMOV CL, 10DIV CL

溫馨提示

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

評論

0/150

提交評論