微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)

上传人:des****85 文档编号:240962248 上传时间:2022-01-16 格式:DOC 页数:31 大小:259KB
返回 下载 相关 举报
微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)_第1页
第1页 / 共31页
微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)_第2页
第2页 / 共31页
微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)_第3页
第3页 / 共31页
微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)_第4页
第4页 / 共31页
微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)》由会员分享,可在线阅读,更多相关《微机原理课设参考资料之一:软件流程与软件程序的例子(共31页)(31页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上微机原理与接口技术程序与流程编写程序实现下列5项功能,通过从键盘输入15进行菜单式选择:(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。用户输入由英文大小写字母或数字09组成的字符串(以回车结束),变换后按下列格式在屏幕上显示:例如:abcdgyt0092 ABCDGYT0092 按任一键重做;按Esc键返回主菜单。(2)按数字键“2”,完成在字符串中找最大值。用户输入由英文大小写字母或数字 09组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示: The maximum is 按任一键重做;按Esc键返回主菜单。(3)按数字键“3”,完成输

2、入数据组的排序。用户输入一组十进制数值(小于255), 然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示: 按任一键重做;按Esc键返回主菜单。(4)按数字键“4”,完成时间的显示。首先提示用户对时,即改变系统的定时器 HH:MM:SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时 间:HH:MM:SS。 按任一键重新对时;按Esc键返回主菜单。(5)按数字键“5”,结束程序的运行,返回操作系统。解答过程:主程序的编程思路:此程序共5个功能,可采用跳转表法来实现多路分支结构程序设计。现将这5个程序段,各程序段的首地址分别标号为G1,G2,G3,G4,G5。将5个程序

3、段的入口地址做成表TABLE放入数据段,程序根据给定的参数计算出欲转入的程序段的首地址在TABLE中的位置后,取出该地址,跳转至该程序段。首先,通过调用子程序MENU,设置显示器,并输出提示文档。接着,读取1-5之间的ASCII表示数。然后,通过跳转表TABLE实现由输入参数转入相应的程序段。由于表中按“字”存放数据,则每个数据的位移量是:0、2、4、6、8。对于输入参数N,计算位移量的公式是N=(N-1)*2。当输入1时,跳转到标号G1。调用子程序CHGLTR,完成将输入字符串中的小写字母变换成大写字母。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G1;当输入2时,跳转

4、到标号G2。调用子程序MAXLTR,完成在输入字符串中找最大值。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G2;当输入3时,跳转到标号G3。调用子程序SORTNUM,完成输入数据组的排序。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G3。当输入4时,跳转到标号G4。调用子程序TIMCHK,完成时间的显示。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G4。当输入5时,跳转到标号G5。结束程序的运行,返回操作系统。其流程框图见图3-1。图3-1 主程序流程框图START初始化调用子程序MENU,显示主界面设置光标位置(41,10)

5、带回显的控制台输入(AL) 输入字符(AL) 5将跳转表TABLE的偏移地址送入(BX)(AL) (AL) 1(AL) (AL) * 2AL按符号扩展成AX(BX) TABLE(BX) (BX) + (AX)ABCEENDDN=1N=2N=3N=4N=5NNYY图3-1(续) 主程序流程框图调用子程序MAXLTR带回显的控制台输入(AL) 输入字符BE(AL) = ESC ?YN调用子程序TIMCHK带回显的控制台输入(AL) 输入字符DE(AL) = ESC ?YN调用子程序SORTNUM带回显的控制台输入(AL) 输入字符CE(AL) = ESC ?YN调用子程序CHGLTR带回显的控制台

6、输入(AL) 输入字符AE(AL) = ESC ?YN子程序MENU的编程思路:注意:子程序不要用START开头!设置显示器显示方式为80*25彩色文本方式,清屏。逐行设置光标位置,使提示文档左对齐整体居中。输出1-5的提示文档,再输出输入N的提示。其流程框图见图3-2。图3-2 子程序MENU流程框图START初始化 清屏设置光标位置(5,5)显示提示字符串STRING1设置光标位置(5,6)显示提示字符串STRING2M设置光标位置(5,7)显示提示字符串STRING3设置光标位置(5,8)显示提示字符串STRING4MN设置光标位置(5,9)显示提示字符串STRING5设置光标位置(5,

7、10)显示提示字符串STRINGN子程序MENU返回NSTART初始化 清屏设置光标位置(5,5)显示提示字符串IN_STR设置光标位置(5,6)KEYBUF 输入字符串在字符串尾加结束标志$设置光标位置(5,7)显示提示字符串PRESTR显示输入的字符串(BX) KEYBUF + 2(BX) (BX) + 1(BX) (BX) 0DFH子程序CHGLTR返回(AL) 输入字符串长度AL按符号扩展成AX(CX) (AX)(BX) a(CX) (CX) 1(CX) = 0 ?设置光标位置(5,8)显示提示字符串NEWSTR显示变换后的字符串设置光标位置(5,9)显示提示字符串HINSTRYNYN

8、图3-3 子程序CHGLTR流程框图子程序CHGLTR的编程思路:设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,使提示文档左对齐整体居中。输出输入字符串提示文档,读取输入字符串并将其放入KEYBUF。在输入字符串尾加结束标志$,输出输入字符串。从前往后,依次取字符串中的每个字符,若其为小写字母,则将其ASCII码减去20H。输出变换后的字符串。最后输出说明文档。其流程框图见图3-3。子程序MAXLTR的编START初始化 清屏设置光标位置(5,5)显示提示字符串IN_STR设置光标位置(5,6)KEYBUF 输入字符串在字符串尾加结束标志$设置光标位置(5,7)显示提示字符串

9、OUT_STR显示输入的字符串设置光标位置(5,8)显示提示字符串MAXCHR(DL) 0(BX) KEYBUF + 2(BX) (BX) + 1(DL) (BX)子程序MAXLTR返回(AL) 输入字符串长度AL按符号扩展成AX(CX) (AX)(BX) (DL)(CX) (CX) 1(CX) = 0 ?显示字符(DL)设置光标位置(5,9)显示提示字符串HINSTRYNYN图3-4 子程序MAXLTR流程框图程思路:设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,使提示文档左对齐整体居中。输出输入字符串提示文档,读取输入字符串并将其放入KEYBUF。在输入字符串尾加结束标志

10、$,输出输入字符串。预设字符串中最大值为0。从前往后,依次取字符串中的每个字符,若其大于当前最大值,则进行替换,即可得到字符串中的最大值,并输出。最后输出说明文档。其流程框图见图3-4。子程序SORTNUM的编程思路:START初始化 清屏设置光标位置(5,5)显示提示字符串IN_NUM设置光标位置(5,6)KEYBUF 输入字符串子程序SORTNUM返回调用子程序CIN_INT(AL) = 0 ?设置光标位置(5,9)显示提示字符串HINSTRNY设置光标位置(5,7)显示提示字符串OUT_NUM设置光标位置(5,8)调用子程序MPSORT调用子程序INT_OUT图3-5 子程序SORTNU

11、M流程框图设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,使提示文档左对齐整体居中。输出输入数据组提示文档,读取输入数据组字符串并将其放入KEYBUF。调用子程序CIN_INT,将字符串转换成数据串。判断数据串是否有错误或者为空,若是,则重新输入数据组。调用子程序MPSORT,采用冒泡法对数据串进行排序。再调用子程序INT_OUT,输出排序后的数据组。最后输出说明文档。其流程框图见图3-5。子程序CIN_INT的编程思路:入口参数为:无;出口参数为:AL(有无错误标志,0为有,1为无)。从前往后,依次取字符串中的每个字符进行判断。CH表示数据组数据个数,AL表示当前数据x,DL

12、作为有无数据标志。若当前字符为空格,则转到ADDNUM,判断DL是否为1,若为1,则CH增1,调用子程序ADDNEW,增加新数x,然后DL、AL清零;否则判断当前字符c是否在0-9之间,若不是,则判错,将AL置0,子程序CIN_INT返回;否则,DL置1,x=x*10+c-0,判断x是否超过255,若是,则判错,将AL置0,子程序CIN_INT返回;否则,对下一个字符进行操作。字符串判断结束后,若DL为1,则有新数x未加至数据组,调用子程序ADDNEW,增加新数x。将数据组个数CH放入NUMBUF,将AL置1。其流程框图见图3-6。子程序ADDNEW的编程思路:入口参数为:CH(数据组数据个数

13、)、AL(当前数据x);出口参数为:无。取出数据组NUMBUF的首地址,加上数据组数据个数,即为当前数据x的地址,将x放入该地址。其流程框图见图3-7。NSTART初始化(CL) 输入字符串长度(SI) KEYBUF + 2(CH) 0(DH) 10(AL) 0(DL) 0子程序CIN_INT返回(DL) 1(AX) (AL) * (DH)(BH) 0(BL) (SI)(AX) (AX) + (BX)(AX) (AX) 0(SI) = ?(CH) (CH) + 1调用子程序ADDNEWYNUMBUF (CH)(AL) 1(SI) 9(AH) 0(AL) 0(CH) (CH) + 1调用子程序ADDNEW(DL) 0(AL) 0(DL) 1 ?YYYNNNYNRRR(SI) (SI) + 1(CL) (CL) - 1(CL) 0 ?(DL) 1 ?YYNNTRT图3-6 子程序CIN_INT流程框图图3-7 子程序ADDNEW流程框图START初始化BX、AX进栈(BX) NUMBUF

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号