西电微机原理上机作业第三 下载本文

微机上机作业三

内容:

编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为:

(1) 按下“1”键,完成字符串小写字母变成大写字母。 (2) 按下“2”键,完成找最大值(二选一)。 (3) 按下“3”键,完成排序(二选一)。 (4) 按下“4”键,显示时间。

(5) 按下“5”键,结束程序运行,返回系统提示符。 汇编程序:

STACK TOP STACK DATA TABLE

SEGMENT STACK LABEL WORD ENDS SEGMENT

DW G1, G2, G3, G4, G5

DB 256 DUP(?)

STRING0 DB' Form the school ID is 02111460 Li Cheng',0DH,0AH,'$'

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 PRESTR

DB 'Input the string (including letters & numbers, less than 60 letters) :', 0DH, 0AH, '$'

DB 'Original string : $'

NEWSTR DB 'New string : $' OUT_STR DB 'The string is $' MAXCHR DB 'The maximum is $' IN_NUM OUT_NUM IN_TIM

DB 'Input the numbers (0 - 255, no more than 20 numbers) : ', 0DH, 0AH, '$' DB 'Sorted numbers : ', 0DH, 0AH, '$' 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 (?) DB 20 DUP (?) ENDS

NUMBUF DB ? DATA

CODE START:

SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, OFFSET TOP

CALL FAR PTR MENU

; 设置显示器

MAIN: AGAIN: G1: G2: G3:

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' SHL AL, 1 CBW

LEA BX, TABLE ADD BX, AX JMP WORD PTR [BX] CALL FAR PTR CHGLTR MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G1

CALL FAR PTR MAXLTR MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G2

CALL FAR PTR SORTNUM MOV AH, 8

; N-1 ; (N-1)*2 ; AL->AX

; 页号 ; 列号 ; 行号

; 光标位置设置

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, STRING0 INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 6 INT 10H

MOV AH, 9 LEA DX, STRING1

INT 21H MOV AH, 2 MOV DL, 5 MOV DH, 7 INT 10H

MOV AH, 9 LEA DX, STRING2 INT 21H

MOV AH, 2

; 显示主界面

;设置显示器方式; 清屏

; 页号 ; 列号 ; 行号

; 光标位置设置

; 列号 ; 行号

; 光标位置设置

; 列号 ; 行号

; 光标位置设置