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

下載本文檔

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

文檔簡介

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

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

3、一鍵,重新對(duì)時(shí),按ESC鍵,返回主菜單。 (5)按下“5”鍵,結(jié)束程序運(yùn)行,返回系統(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,

4、 '$'STRING3DB '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

5、, less than 60 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

6、 'Sorted 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

7、, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV SP, OFFSET TOPMAIN:CALL FAR PTR MENU; 設(shè)置顯示器AGAIN:MOV AH, 2MOV BH, 0; 頁號(hào)MOV DL, 41; 列號(hào)MOV DH, 10; 行號(hào)INT 10H; 光標(biāo)位置設(shè)置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 B

8、X, AXJMP WORD 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 F

9、AR; 顯示主界面;設(shè)置顯示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號(hào)MOV DL, 5; 列號(hào)MOV DH, 5; 行號(hào)INT 10H; 光標(biāo)位置設(shè)置MOV AH, 9LEA DX, STRING1INT 21HMOV AH, 2MOV DL, 5; 列號(hào)MOV DH, 6; 行號(hào)INT 10H; 光標(biāo)位置設(shè)置MOV AH, 9LEA DX, STRING2INT 21HMOV AH, 2MOV DL, 5; 列號(hào)MOV DH, 7; 行號(hào)INT 10H; 光標(biāo)位置設(shè)置MOV AH, 9LEA DX, S

10、TRING3INT 21HMOV AH, 2MOV DL, 5; 列號(hào)MOV DH, 8; 行號(hào)INT 10H; 光標(biāo)位置設(shè)置MOV AH, 9LEA DX, STRING4INT 21HMOV AH, 2MOV DL, 5; 列號(hào)MOV DH, 9; 行號(hào)INT 10H; 光標(biāo)位置設(shè)置MOV AH, 9LEA DX, STRING5INT 21HMOV AH, 2MOV DL, 5; 列號(hào)MOV DH, 10; 行號(hào)INT 10H; 光標(biāo)位置設(shè)置MOV AH, 9LEA DX, STRINGNINT 21HRETMENUENDPCHGLTRPROC FAR; 將輸入字符串中小寫字母便換成大寫

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

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

13、 BYTE PTR BX, 0DFHNOCHG:INC BXLOOP LCHG; 將字符串中小寫字母轉(zhuǎn)換成大寫字母MOV AH, 2MOV BH, 0; 頁號(hào)MOV DL, 5; 列號(hào)MOV DH, 8; 行號(hào)INT 10H; 新字符串提示光標(biāo)位置設(shè)置MOV AH, 9LEA DX, NEWSTRINT 21H; 輸出新字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 輸出新字符串MOV AH, 2MOV BH, 0; 頁號(hào)MOV DL, 5; 列號(hào)MOV DH, 9; 行號(hào)INT 10H; 提示信息光標(biāo)位置設(shè)置MOV AH, 9LEA DX, HINTSTRI

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

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

16、 AH, 2MOV BH, 0; 頁號(hào)MOV DL, 5; 列號(hào)MOV DH, 8; 行號(hào)INT 10H; 新字符串提示光標(biāo)位置設(shè)置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; 頁號(hào)MOV DL, 5; 列號(hào)MOV DH, 9; 行號(hào)INT 10H; 提示信息光標(biāo)

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

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

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

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

21、; 判斷x是否越界JMP NEXTADDNUM:CMP DL, 1JNZ NEXT; 判斷是否有數(shù)據(jù)INC CH; 數(shù)據(jù)組數(shù)據(jù)個(gè)數(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ù)個(gè)數(shù)MOV AL, 1; 輸入數(shù)據(jù)無錯(cuò)誤JMP CRTNUMERRNUM:MOV AL, 0; 輸入數(shù)據(jù)有錯(cuò)誤CRTNUM:RET CIN_INT ENDPA

22、DDNEWPROC NEAR; 增加新數(shù); 入口參數(shù):CH(數(shù)據(jù)組數(shù)據(jù)個(gè)數(shù))、AL(當(dāng)前數(shù)據(jù)x); 出口參數(shù):無PUSH AXLEA BX, NUMBUFMOV AL, CHCBWADD BX, AXPOP AXMOV BX, ALRETADDNEWENDPMPSORTPROC FAR; 數(shù)據(jù)組排序MOV AL, NUMBUFCMP AL, 1JBE NOSORT; 若只有一個(gè)元素,停止排序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

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

24、NC SIMOV AH, 2MOV DL, ' 'INT 21HLOOP PRINTRETINT_OUT ENDPOUTNUMPROC NEAR; 將十進(jìn)制數(shù)以十六進(jìn)制輸出; 入口參數(shù):AL(待轉(zhuǎn)換的數(shù)據(jù)),BL(轉(zhuǎn)換進(jìn)制數(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、 設(shè)定并顯示時(shí)間;設(shè)置顯示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV BH, 0; 頁號(hào)MOV DL, 5; 列號(hào)MOV DH, 6; 行號(hào)INT 10H; 設(shè)置提示光標(biāo)位置設(shè)置MOV AH, 9LEA DX, IN_TIMINT 21H; 時(shí)間串提示MOV AH, 0AHLEA DX, KEYBUFINT 21H; 輸入時(shí)間串MOV BL, 10MOV AL, KEYBUF + 2SUB AL, '0'MUL BLADD AL, KEYBUF + 3SUB AL, '0'CMP AL, 0JB

26、 INVALIDCMP AL, 24JAE INVALID; 判斷 時(shí) 有效性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, 60JA

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論