华工微机原理实验四子程序设计实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档