华工微机原理实验四子程序设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华南理工大学微机原实验四:子程序设计
一.实验目的
1、学习子程序的定义和调用方法。
2、掌握子程序、子程序嵌套的结构。
3、掌握子程序的程序设计、编制及调试方法。
二.实验内容
程序采用菜单式选择,可接收用户输入的命令(1~5),各命令如下:
按1键完成字符串小写字母变大写字母
用户输入一由英文大小写字母或数字0~9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其它字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。
按2键完成找最大值(二选一)
1、接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。
2、接收用户输入若干无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。
按3键完成排序(二选一)
1、接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示。
2、接收用户输入若干个有符号8位数(以空格逗号为分隔符,以回车结束)。程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。
按4键显示时间
首先提示用户对时,即用户输入时,分,秒(以空格或冒号分隔,以回车结束),然后,在屏幕上不断显示时间,格式为:××(时):××(分):××(秒),最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。
按5键,结束程序运行,返回系统提示符。
三.程序与流程图
主程序的简略流程
子程序一的简略流程图子程序二的简略流程图
子程序三的简略流程图子程序4,显示时间流程图
四、源程序代码
DATA SEGMENT
ORG9999H
MENU DB0DH,0AH,'Programed by Deng Tengfei Class Electronic Material Grade 09',0DH,0AH,;菜单
DB'Please input1~5to choose service',0DH,0AH,
DB'1:Convert a small letter to a big letter',0DH,0AH,
DB'2:Seek the bigest number',0DH,0AH,
DB'3:Put the character string in order',0DH,0AH,
DB'4:Set time and check time',0DH,0AH,
DB'5:End the program$'
MEG0DB'Please choose function$';提示信息MEG0~MEG8
MEG1DB'You have choose the function1.',0DH,0AH,'Please input the character string you want to convert:$'
MEG2DB'You have choose the function2.',0DH,0AH,'Please input the character string:$'
MEG3DB'You have choose the function3.',0DH,0AH,'Please input the character string you want to sort$'
MEG4DB'You have choose the function4.',0DH,0AH,'Please input the time you want to set in format like:xx:xx:xx$'
MEG5DB'The program is end$'
MEG6DB'Sorry.you have chosen a undefined function.Please input a correct function number$' MEG7DB'Fail to set time$'
MEG8DB'Press any key to do again or press the ESC key to return to the main menu$'
FLAG DB-1;冒泡排序中使用的标志
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC NEAR;主程序
MOV AX,DATA
MOV DS,AX
CIN:LEA DX,MENU;输出提示信息
MOV AH,09H
INT21H
CALL ENT;输出回车换行
LEA DX,MEG0
MOV AH,09H
INT21H
CALL ENT
MOV AH,01H
INT21H
CMP AL,30H;判断功能号
JLE EOR
CMP AL,31H
JE F1
CMP AL,32H
JE F2
CMP AL,33H
JE F3
CMP AL,34H
JE F4
CMP AL,35H
JE F5
EOR:CALL ENT
LEA DX,MEG6;输出出错信息
MOV AH,09H
INT21H
JMP CIN
F1:CALL ENT;功能1
LEA DX,MEG1
MOV AH,09H
INT21H
CALL ENT
CALL FUN1;调用子程序1
MOV AH,01H
INT21H
CMP AL,1BH
JNE F1
JMP CIN
F2:CALL ENT;功能2
LEA DX,MEG2
MOV AH,09H
INT21H
CALL ENT
CALL FUN2;调用子程序2
MOV AH,01H
INT21H
CMP AL,1BH
JNE F2
JMP CIN
F3:CALL ENT;功能3
LEA DX,MEG3
MOV AH,09H
INT21H
CALL ENT
CALL FUN3;调用子程序3
MOV AH,01H
INT21H
CMP AL,1BH
JNE F3
JMP CIN
F4:CALL ENT;功能4
LEA DX,MEG4
MOV AH,09H
INT21H
CALL ENT
CALL FUN4;调用子程序4
MOV AH,01H
INT21H
CMP AL,1BH
JNE F4
JMP CIN
F5:MOV AH,4CH;功能5,终止程序INT21H
FUN1PROC NEAR;子程序1
PUSH AX
PUSH CX
PUSH DX
PUSH SI
MOV AH,0AH;字符串输入
INT21H
CALL ENT
MOV SI,DX
INC SI
MOV CL,[SI];设定循环次数
MOV CH,0
JIK:INC SI
MOV AL,[SI]
CMP AL,0DH;判断字符ASCII码
JE KL
CMP AL,61H
JB JK
CMP AL,7AH
JA JK
SUB AL,20H;小写转大写
JK:MOV DL,AL;输出字符
MOV AH,02H
INT21H
LOOP JIK
CALL ENT
LEA DX,MEG8
MOV AH,09H
INT21H
KL:POP SI
POP DX
POP CX
POP AX
RET
FUN1ENDP
FUN2PROC NEAR;子程序2
PUSH AX
PUSH CX
PUSH DX
PUSH SI