华工微机实验报告实验四子程序的调用.docx

上传人:b****2 文档编号:519822 上传时间:2022-10-10 格式:DOCX 页数:24 大小:208.57KB
下载 相关 举报
华工微机实验报告实验四子程序的调用.docx_第1页
第1页 / 共24页
华工微机实验报告实验四子程序的调用.docx_第2页
第2页 / 共24页
华工微机实验报告实验四子程序的调用.docx_第3页
第3页 / 共24页
华工微机实验报告实验四子程序的调用.docx_第4页
第4页 / 共24页
华工微机实验报告实验四子程序的调用.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

华工微机实验报告实验四子程序的调用.docx

《华工微机实验报告实验四子程序的调用.docx》由会员分享,可在线阅读,更多相关《华工微机实验报告实验四子程序的调用.docx(24页珍藏版)》请在冰豆网上搜索。

华工微机实验报告实验四子程序的调用.docx

华工微机实验报告实验四子程序的调用

实验报告

课程名称

微型计算机原理及其应用

实验项目

子程序设计

学生姓名

朱轲信

学生学号

8

专业/班级

信息工程冯秉铨实验班

实验成绩

电子与信息学院实验中心制

二〇一七年版

预习报告

一、实验目的

1、学习子程序的定义和调用方法。

2、掌握子程序、子程序嵌套的结构。

3、掌握子程序的程序设计、编制及调试方法。

二、实验设备

微机一台、TDS-MD微机一台

三、实验内容及步骤

程序采用菜单式选择,可接收用户输入的命令(1~5),各命令如下:

按1键完成字符串小写字母变大写字母

用户输入一由英文大小写字母或数字0~9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其它字符不变,并在屏幕上显示。

用户按任一键,重做,按ESC键,返回主菜单。

按2键完成找最大值(二选一)

1、接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。

2、接收用户输入若干无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。

用户按任一键,重做,按ESC键,返回主菜单。

按3键完成排序(二选一)

1、接收用户输入的可显示字符串,以回车结束。

程序按ASCII码值大小由大到小排序并输出显示。

2、接收用户输入若干个有符号8位数(以空格逗号为分隔符,以回车结束)。

程序将其中最大的数显示出来。

用户按任一键,重做,按ESC键,返回主菜单。

按4键显示时间

首先提示用户对时,即用户输入时,分,秒(以空格或冒号分隔,以回车结束),然后,在屏幕上不断显示时间,格式为:

××(时):

××(分):

××(秒),最好定点显示。

用户按任一键,重新对时,按ESC键,返回主菜单。

按5键,结束程序运行,返回系统提示符。

四、流程图与程序代码

流程图:

流程图1—主菜单

 

流程图2--过程一流程图3—过程二

 

流程图4—过程三流程图5—过程四

代码:

STACKSEGMENTSTACK'STACK'

DW100DUP(?

TOPLABELWORD

STACKENDS

DATASEGMENT

ORG3500H

;数据段主要保存一些字符串以及定义一些字符串变量

COPYRIGHTDB'-------ALLPROGRAMEDBYMRZHU--------',0DH,0AH,'$'

COMMONDB'Pleaseinput1to5toselectafunction',0DH,0AH,'$'

S1DB'1.Inputastring,thenconvertthesmallletterstobigletters',0DH,0AH,'$'

S2DB'2.Findthebiggest-ASCII-codecharacter',0DH,0AH,'$'

S3DB'3.SortthecharacterbyASCIIcodebydecreasingorder',0DH,0AH,'$'

S4DB'4.displaythetickingtime',0DH,0AH,'$'

S5DB'5.Exittheprogram',0DH,0AH,'$'

CR_LFDB0DH,0DH,'$'

IN_MAINDB'Nowinputanumber(1-5):

','$'

MAIN_ERRORDB0DH,0AH,'ERROR:

Pleaseinputacorrectnumber;',0DH,0AH,'$'

PRO_1_S1DB0DH,0AH,'Nowinputastring(numberorletter):

',0DH,0AH,'$'

PRO_1_S2DB0DH,0AH,'Thestringhasbeenchangedto:

','$'

PRO_2_S1DB0DH,0AH,'Nowinputastring(anysymbol):

',0DH,0AH,'$'

PRO_2_S2DB0DH,0AH,'Thebiggest-ASCII-codesymbolis:

','$'

PRO_3_S1DB0DH,0AH,'Nowinputastring(anysymbol):

',0DH,0AH,'$'

PRO_3_S2DB0DH,0AH,'Thestringhasbeensorted:

','$'

PRO_4_S1DB0DH,0AH,'Settingtime(XX:

XX:

XX

Minutes:

Seconds>):

',0DH,0AH,'$'

PRO_4_S2DB0DH,0AH,'SETTINGDONE!

',0DH,0AH,'$'

PRO_4_S3DB0DH,0AH,'TIME_NOW(Pressanykeytostop):

',0DH,0AH,'$'

PRO_4_ERROR_LENDB0DH,0AH,'!

!

ERROR(Lengthoverflow):

Pleaseinputinthecorrectformat!

',0DH,0AH,'$'

PRO_4_ERROR_NOT_NUMDB0DH,0AH,'!

!

ERROR(Notnumberornot":

"):

Pleaseinputinthecorrectformat!

',0DH,0AH,'$'

PRO_4_ERROR_NUM_OVERDB0DH,0AH,'!

!

ERROR(Numberoverflow):

Pleaseinputthecorrectnumber!

',0DH,0AH,'$'

PRO_END_SDB0DH,0AH,'PressanykeytocontinueexceptESC',0DH,0AH,'$'

STRING1DB50

DB?

DB50DUP(?

STRING2DB50

DB?

DB50DUP(?

STRING3DB50

DB?

DB50DUP(?

STRING4DB50

DB?

DB50DUP(?

DATAENDS

CODESEGMENT

MAINPROCFAR

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,STACK

MOVSS,AX

MOVSP,OFFSETTOP

PUSHDS

SUBAX,AX

PUSHAX;初始化堆栈

MOVAX,DATA

MOVDS,AX

MENU:

MOVDX,OFFSETCOPYRIGHT

MOVAH,9

INT21H

MOVDX,OFFSETCOMMON

MOVAH,9

INT21H

MOVDX,OFFSETS1

MOVAH,9

INT21H

MOVDX,OFFSETS2

MOVAH,9

INT21H

MOVDX,OFFSETS3

MOVAH,9

INT21H

MOVDX,OFFSETS4

MOVAH,9

INT21H

MOVDX,OFFSETS5

MOVAH,9

INT21H

MOVDX,OFFSETCR_LF

MOVAH,9

INT21H

IN_A_NUM:

MOVDX,OFFSETIN_MAIN

MOVAH,9

INT21H;显示主菜单信息

MOVAH,01H

INT21H;输入一个字符

CMPAL,'1'

JEP1

CMPAL,'2'

JEP2

CMPAL,'3'

JEP3

CMPAL,'4'

JEP4

CMPAL,'5'

JEP5_EXIT;判断输入的字符并跳转

MOVDX,OFFSETMAIN_ERROR

MOVAH,9

INT21H

JMPIN_A_NUM;其他字符时输出提醒并跳转到重新输入

P1:

CALLPRO_1

MOVDX,OFFSETCR_LF

MOVAH,9

INT21H;换行

JMPMENU

P2:

CALLPRO_2

MOVDX,OFFSETCR_LF

MOVAH,9

INT21H;换行

JMPMENU

P3:

CALLPRO_3

MOVDX,OFFSETCR_LF

MOVAH,9

INT21H;换行

JMPMENU

P4:

CALLPRO_4

MOVDX,OFFSETCR_LF

MOVAH,9

INT21H;换行

JMPMENU

P5_EXIT:

RET;返回DOS

MAINENDP;MAIN段结束

 

PRO_1PROCNEAR;过程一

PRO_1_START:

MOVDX,OFFSETPRO_1_S1

MOVAH,9

INT21H;输出提示语

MOVDX,OFFSETSTRING1

MOVAH,0AH

INT21H;把STRING1的字符串首地址给DX,输入一个字符串

MOVCX,0

MOVCL,STRING1[1]

MOVBX,1

LOOP1:

;循环,将小写字母改为大写

INCBX

MOVAL,STRING1[BX]

CMPAL,61H

JBNEXT1

CMPAL,7AH

JANEXT1

SUBAL,20H

MOVSTRING1[BX],AL

NEXT1:

LOOPLOOP1

INCBX

MOVSTRING1[BX],'$'

MOVDX,OFFSETPRO_1_S2

MOVAH,9

INT21H;输出提示的句子

MOVDX,OFFSETSTRING1[2]

MOVAH,9

INT21H;输出改变后的字符串

MOVDX,OFFSETCR_LF

MOVAH,9

INT21H;换行

MOVDX,OFFSETPRO_END_S;输出通用结束提示语

MOVAH,9

INT21H

MOVAH,01H

INT21H;输入一个字符,实现跳转的判断

CMPAL,1BH

JENEXT1_2

JMPPRO_1_START;如果是ESC则不跳转到子程序开头,是则跳转

NEXT1_2:

RET

PRO_1ENDP

PRO_2PROCNEAR;过程二

PRO_2_START:

MOVDX,OFFSETPRO_2_S1;输出提示语

MOVAH,9

INT21H

MOVDX,OFFSETSTRING2;把STRING2的字符串首地址给DX,接收一个字符串

MOVAH,0AH

INT21H

MOVCX,0

MOVCL,STRING2[1]

MOVBX,1

MOVAL,0

LOOP2:

INCBX

CMPAL,STRING2[BX]

JAENEXT2_1;AL大于等于字符ASCII值时跳转

MOVAL,STRING2[BX]

NEXT2_1:

LOOPLOOP2

INCBX

MOVSI,BX;把BX的值放到SI,也就是指向回车的位置

MOVBL,AL;把AL放到BL,防止中断指令时

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1