西电微机原理大作业.docx

西电微机原理大作业 西电微机原理大作业 2016 2016 年 12 月 25 日 汇编语言程序设计综合实验 姓名:刘发强 学号: 1 / 35 西电微机原理大作业 西电微机原理大作业 PAGE PAGE # / 35 题目功能及要求 题目要求 编写程序实现下列 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”,结束程序的运行,返回操作系统。 程序功能及分析 : 程序主干: ( 1 ) 主程序:通过调用屏幕初始化子程序、光标位置设定子程序、清屏子程序、菜单显 示子程序、命令解析子程序完成显示器初始化,设置光标位置,打印程序菜单列表 以及用户输入提示信息,并等待用户从键盘输入 1~5进行菜单选择。用户输入错误 会被要求重输。子程序跳转利用数据段转移地址查找表实现。从子服务退回时,重 新开始上述操作。 (2) 子服务一:将字符串中的小写字母转换成大写字母,并输出到屏幕上。先调用字符 串输出子程序输出提示信息,后调用字符串输入子程序将用户从键盘输入的字符串 读到BUFFER1存储区,后逐个判断字符是否为小写字母,如果是,则通过逻辑与进 行转化,完成后,将结果放置到 BUFFER2后调用字符串输出子程序完成输出。然 后输出是否重做提示信息,调用无回显的字符读入子程序,并判断退出到主程序或 重做。 (3) 子服务二:找出一字符串中ASCI I码最大的字符并输出。先调用字符串输出子程序输 出提示信息,后调用字符串输入子程序将用户从键盘输入的字符串读到 BUFFER1存 储区,将AL赋初值为第一个字符,后将 AL作为暂时最大值与各字符逐个比较,若 小于则将其值赋给 AL,否则不赋。后将结果与提示信息生成字符串,后调用字符串 输出子程序完成输出。 然后输出是否重做提示信息, 调用无回显的字符读入子程序, 并判断退出到主程序或重做。 子服务三:读入一组十进制数,递增排序,并原格式输出。先调用字符串输出子程 序输出提示信息,后调用字符串输入子程序将用户从键盘输入的字符串读到 BUFFER1存储区,后调用十进制数转二进制数子程序, 将转换数据放置到 BUFFER2 再利用冒泡算法对 BUFFER2内的数据递增排序,再调用二进制数转十进制数子程序 将BUFFER2内的二进制数转化为十进制数,放置到 BUFFER3存储区内,并调用字符 串格式修正子程序将不必要的前导’删除,再调用字符串输出子程序将 BUFFER3内 的数据输出。 对于非法输入 (数值超过 255、非法字符) 会给出错误提示信息。 然后 输出是否重做提示信息,调用无回显的字符读入子程序,并判断退出到主程序或重 做。 子服务四:完成时间的显示、修改。调用字符串输出子程序将是否更改时间提示信 息输出,并调用无等待字符读入子程序等待用户输入。然后通过 DOS功能调用读出 系统时间,后调用二进制转十进制数子程序,将系统时间显示到屏幕右上方。如果 用户确认修改时间,则调用字符串读入子程序将时间放置到 BUFFER1后调用十进 制数转二进制数子程序并将结果放置到 BUFFER2后通过DOS功能调用将数据送给 系统,如果出错则给出出错信息。然后输出是否重做提示信息,调用无回显的字符 读入子程序,并判断退出到主程序或重做。 子服务五:退出到系统。通过 DOS功能调用完成。 辅助子程序: 命令解析子程序:完成对用户输入选择信息的检查,合法则安排服务跳转,否则要 求用户重做。 菜单显示子程序:调用字符串输出子程序将菜单输出到屏幕上。 屏幕初始化子程序:通过 BI

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档