微机原理课后第39题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

39.(上机题)编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择:

(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示:<原字符串>例如:abcdgyt0092

<新字符串> ABCDGYT0092

按任一键重做;按Esc键返回主菜单。

(2)按数字键“2”,完成在字符串中找最大值。用户输入由英文大小写字母或数字0~9 组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示:

<原字符串> The maximum is <最大值>.

按任一键重做;按Esc键返回主菜单。

(3)按数字键“3”,完成输入数据组的排序。用户输入一组十进制数值(小于255),然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示:

<原数值串>

<新数值串>

按任一键重做;按Esc键返回主菜单。

(4)按数字键“4”,完成时间的显示。首先提示用户对时,即改变系统的定时器HH:MM:SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时

间:HH:MM:SS。

按任一键重新对时;按Esc键返回主菜单。

(5)按数字键“5”,结束程序的运行,返回操作系统。

解:

※主程序的编程思路:

四、程序代码

STACK SEGMENT STACK

DB 256 DUP(?)

TOP LABELWORD

STACK ENDS

DATA 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 (?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK

START:

MOVAX, DATA

MOV DS, AX

MOVAX, STACK

MOV SS, AX

MOV SP, OFFSET TOP

MAIN: CALL FAR PTR MENU ; 设置显示器

AGAIN:

MOVAH, 2

MOV BH, 0 ; 页号

MOV DL, 41 ; 列号

MOV DH, 10 ; 行号

INT 10H ; 光标位置设置

MOVAH, 1

INT 21H

CMPAL, '1'

JB AGAIN

CMPAL, '5'

JAAGAIN

SUB AL, '1' ; N-1

SHLAL, 1 ; (N-1)*2

CBW ; AL->AX

LEA BX, TABLE

ADD BX, AX

JMPWORD PTR [BX]

G1:

CALL FAR PTR CHGLTR

MOVAH, 8

INT 21H

CMPAL, 1BH

JZ MAIN

JMP G1

G2:

CALL FAR PTR MAXLTR

MOVAH, 8

INT 21H

CMPAL, 1BH

JZ MAIN

JMP G2

G3:

CALL FAR PTR SORTNUM MOVAH, 8

INT 21H

CMPAL, 1BH

JZ MAIN

JMP G3

G4:

CALL FAR PTR TIMCHK MOVAH, 8

INT 21H

CMPAL, 1BH

JZ MAIN

JMP G4

G5:

MOVAH, 4CH

INT 21H

MENU PROC FAR ; 显示主界面;设置显示器方式

MOVAH, 0

MOVAL, 3;

MOV BL, 0;

INT 10H ; 清屏

MOVAH, 2

MOV BH, 0 ; 页号

MOV DL, 5 ; 列号

MOV DH, 5 ; 行号

INT 10H ; 光标位置设置MOVAH, 9

LEA DX, STRING1

INT 21H

MOVAH, 2

MOV DL, 5 ; 列号

MOV DH, 6 ; 行号

INT 10H ; 光标位置设置MOVAH, 9

LEA DX, STRING2

INT 21H

MOVAH, 2

MOV DL, 5 ; 列号

相关文档
最新文档