微机原理大作业代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、程序代码
STACK SEGMENT STACK
DB 256 DUP(?)
TOP LABEL WORD
STACK ENDS
DA TA SEGMENT
TABLE DW G1, G2, G3, G4, G5
STRING1 DB '1. Change small letters into capital letters of string;', 0DH, 0AH, '$' STRING2 DB '2. Find the maximum of string;', 0DH, 0AH, '$'
STRING3 DB '3. Sort for datas;', 0DH, 0AH, '$'
STRING4 DB '4. Show Time;', 0DH, 0AH, '$'
STRING5 DB '5. Exit.', 0DH, 0AH, '$'
STRINGN DB 'Input the number you select (1-5) : $'
IN_STR DB 'Input the string (including letters & numbers, less than 60 letters) :', 0DH, 0AH, '$' PRESTR DB 'Original string : $'
NEWSTR DB 'New string : $'
OUT_STR DB 'The string is $'
MAXCHR DB 'The maximum is $'
IN_NUM DB 'Input the numbers (0 - 255, no more than 20 numbers) : ', 0DH, 0AH, '$' OUT_NUM DB 'Sorted numbers : ', 0DH, 0AH, '$'
IN_TIM DB 'Correct the time (HH:MM:SS) : $'
HINTSTR DB 'Press ESC, go back to the menu; or press any key to play again!$' KEYBUF DB 61
DB ?
DB 61 DUP (?)
NUMBUF DB ?
DB 20 DUP (?)
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
START:
MOV AX, DATA
MOV DS, AX
MOV AX, STACK
MOV SS, AX
MOV SP, OFFSET TOP
MAIN: CALL FAR PTR MENU ; 设置显示器
AGAIN:
MOV AH, 2
MOV BH, 0 ; 页号
MOV DL, 41 ; 列号
MOV DH, 10 ; 行号
INT 10H ; 光标位置设置
MOV AH, 1
INT 21H
CMP AL, '1'
JB AGAIN
CMP AL, '5'
JA AGAIN
SUB AL, '1' ; N-1
SHL AL, 1 ; (N-1)*2
CBW ; AL->AX
LEA BX, TABLE
ADD BX, AX
JMP WORD PTR [BX]
G1:
CALL FAR PTR CHGLTR
MOV AH, 8
INT 21H
CMP AL, 1BH
JZ MAIN
JMP G1
G2:
CALL FAR PTR MAXLTR
MOV AH, 8
INT 21H
CMP AL, 1BH
JZ MAIN
JMP G2
G3:
CALL FAR PTR SORTNUM
MOV AH, 8
INT 21H
CMP AL, 1BH
JZ MAIN
JMP G3
G4:
CALL FAR PTR TIMCHK
MOV AH, 8
INT 21H
CMP AL, 1BH
JZ MAIN
JMP G4
G5:
MOV AH, 4CH
INT 21H
MENU PROC FAR ; 显示主界面;设置显示器方式
MOV AH, 0
MOV AL, 3;
MOV BL, 0;
INT 10H ; 清屏
MOV AH, 2
MOV BH, 0 ; 页号
MOV DL, 5 ; 列号
MOV DH, 5 ; 行号
INT 10H ; 光标位置设置
MOV AH, 9
LEA DX, STRING1
INT 21H
MOV AH, 2
MOV DL, 5 ; 列号
MOV DH, 6 ; 行号
INT 10H ; 光标位置设置
MOV AH, 9
LEA DX, STRING2
INT 21H
MOV AH, 2
MOV DL, 5 ; 列号
MOV DH, 7 ; 行号
INT 10H ; 光标位置设置
MOV AH, 9
LEA DX, STRING3
INT 21H
MOV AH, 2
MOV DL, 5 ; 列号
MOV DH, 8 ; 行号
INT 10H ; 光标位置设置
MOV AH, 9
LEA DX, STRING4
INT 21H
MOV AH, 2
MOV DL, 5 ; 列号
MOV DH, 9 ; 行号
INT 10H ; 光标位置设置
MOV AH, 9
LEA DX, STRING5
INT 21H
MOV AH, 2
MOV DL, 5 ; 列号