2022年统计字符串中某个字符出现次数整理 .pdf





《2022年统计字符串中某个字符出现次数整理 .pdf》由会员分享,可在线阅读,更多相关《2022年统计字符串中某个字符出现次数整理 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、武汉理工大学微机原理与接口技术课程设计目录摘要.11 课程设计目的.22 设计条件及要求.22.1 程序设计条件.22.2 程序设计要求.23 总体方案论证.23.1 总体方案思路.23.2 方案注意事项.33.3 具体方案论证.33.3.1方案一.33.3.2方案二.43.3.3方案论证.44 流程图设计及说明.54.1 流程图.54.2 设计说明.55 软件设计关键问题和相应程序段.65.1 关键问题说明.65.2 问题解决方法.65.3 相应程序段.76 程序调试.97 结果记录及分析.108 课程设计收获及心得体会.129 参考文献.1310 附录.14名师资料总结-精品资料欢迎下载-
2、名师精心整理-第 1 页,共 17 页 -武汉理工大学微机原理与接口技术课程设计说明书1 摘要微机原理与接口技术作为计算机科学领域的基础知识,尽管计算机科学高速发展,但基本原理依然不变,即是遵循冯诺依曼基本思想的。学习并能掌握好微机原理与接口技术这门知识是非常重要的,通过对这门知识的了解可以简单的编写一些日常中经典的控制程序。本文通过汇编语言编写程序,完成统计字符串中某个字符出现次数这一基本功能。下面会介绍该程序的编程思路,并对程序设计中遇到的问题进行深入的研究。关键字:微机统计编程名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 17 页 -武汉理工大学微机原理与接口技术课程设计
3、说明书2 统计字符串中某个字符出现次数汇编语言程序设计1 课程设计目的通过本次课程设计,熟悉微机原理与接口技术的基本理论,使学生能够进一步了解微型计算机工作原理,微型计算机的硬件结构及微型计算机软件编程,掌握使用汇编语言编写程序的方法,并进一步提高编程设计能力。2 设计条件及要求本次微机原理与接口技术课程设计的题目为统计字符串中某个字符出现的次数,为汇编程序设计。2.1 程序设计条件采用 16 位微处理器8086 CPU以及 86 系列微型计算机的指令系统;软件设计平台为多功能微型计算机实验软件MFS 中的微机原理实验集成环境MF2KP。2.2 程序设计要求设计汇编语言程序,实现统计字符串中某
4、个字符出现次数的功能,具体功能要求如下:(1)提示输入字符串;输入任意字符串string,点击 Enter结束输入;(2)提示输入字符;输入任意字符ch,点击 Enter 结束输入;(3)输出字符串 string 中字符 ch的出现次数。点击Enter程序退出。3 总体方案论证3.1 总体方案思路要使用汇编语言实现统计字符串中某个字符出现次数的功能,总体的思路为:取出字符串 string 中的字符,依次与字符ch 进行比较,同时统计该字符与字符ch 相同的次数,最后输出结果到屏幕名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 17 页 -武汉理工大学微机原理与接口技术课程设计说明
5、书3 步骤大体分为以下几点:(1)从键盘输入字符串string,同时得到字符串中的字符总数,并保存在寄存器中;(2)从键盘输入查询字符ch,并保存在寄存器al 中;(3)从寄存器中循环取出字符串string 中的字符,依次与字符ch 进行比较,并记录相同的次数,存入寄存器中;(4)从寄存器中取出结果,转换成字符输出到屏幕上。3.2 方案注意事项根据程序设计要求,设计方案中需要注意的有以下几点:(1)提示语句。需要在屏幕上显示提示输入字符和字符串及输出结果的提示语句;(2)回车结束。需要在输入字符和字符串之后按Enter 键才结束输入,输出结果后按Enter 键才退出程序;(3)程序使用范围。需
6、要考虑程序能处理的字符串的最大长度;(4)结果输出形式。由于在寄存器中存入的为二进制数,在输出的时候需要显示十进制的数;(5)结果输出转换。二进制数据从寄存器不能直接输出到屏幕上;3.3 具体方案论证根据总体方案思路,程序的核心是取字符串中的字符与查询字符ch 循环比较。根据输出结果需要为十进制这一要求,以下有两种方案可以实现这一功能。3.3.1方案一方案一:将寄存器中的二进制数据转换成BCD 码输出具体步骤:(1)在进行字符比较的同时把统计结果存入寄存器中;(2)统计结束之后,取出统计结果,并判断是否需要转换成BCD 码进行转换;(3)把结果转换成字符输出。论证:该方案有以下优点:(1)由于
7、统计结果最大为254,只需要使用一个8 位寄存器来存放数据,调用方便;(2)数据连续,占用储存空间小;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 17 页 -武汉理工大学微机原理与接口技术课程设计说明书4(3)设计思路简单,简化程序的循环部分。但该方案有以下缺点:(1)输出程序段复杂,需要外加判断子程序;(2)转换复杂,判断部分随着位数增多而变得复杂;(3)统计结果受限制。如果输出三位数,由于转换复杂,输出变得难以实现;3.3.2方案二方案二:将三位数的输出结果分离成三个0 到 9 的字符逐个输出具体步骤:(1)在统计次数的过程中限制统计结果中每位上的数不大于9;(2)把三位
8、数各存放到三个8 位寄存器中;(3)输出时按顺序转换成字符逐个输出。论证:此方案有以下优点:(1)输出段程序简单,不需要外加判断子程序;(2)转换方便,循环比较时直接限制;(3)位数由可以调用的8 位寄存器个数决定,可以简单实现三位数的输出。但该方案有以下缺点:(1)需要用三个 8 位寄存器,调用不方便;(2)存放结果的每个 8 位寄存器只用到 4 位,浪费存储空间;(3)循环比较部分复杂,数据储存不方便。3.3.3方案论证方案一与方案二相比,循环比较时统计结果简单,但输出结果为三位数时,方案一编程复杂,难以实现;而方案二使用三个8 位寄存器,理论上可以统计0 至 999 的统计次数的输出,满
9、足最大统计结果254 个字节,而且编程简单。就本程序而言,8 个 8 位寄存器可以满足方案二中寄存器个数的要求。因此选用方案二。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 17 页 -武汉理工大学微机原理与接口技术课程设计说明书5 4 流程图设计及说明4.1 流程图按照总体方案设计流程图。流程图如下:图 4.1 程序流程图4.2 设计说明按照总体方案,先设置缓冲区放置数据。再输入字符串,并把字符串长度即循环次数名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 17 页 -武汉理工大学微机原理与接口技术课程设计说明书6 传到 dl。然后输入查询字符ch。取字符串第一
10、个字符与查询字符比较,相同时统计结果加1,不相同时跳过加1 步骤。循环次数减 1,当减至 0 时,输出统计结果。5 软件设计关键问题和相应程序段5.1 关键问题说明在程序设计过程中遇到以下问题:(1)回车结束程序问题调用 DOS 功能多字符输入 0ah时输入的最后一个字符为回车。但是在输入查询字符和输出结果的时候,如果不加回车结束程序,程序会在输入查询字符的瞬间输出结果并退出程序,导致无法确认结果;(2)程序使用范围问题题目当中没有限定字符串的长度,但是这里用到的 DOS 功能调用多字符输入0ah 所能输入的缓冲区中用于存放字符的区域最多只能存放255 个字符(最后一个字节留给回车符),加上缓
11、冲区第 1 个字节存放预定字符个数,第2 个字节保留用于调用返回时存放实际输入的字符个数,实际中缓冲区最大的使用空间为257 个字节,存放字符串最大长度为254 个字节,需要编程进行限定。(3)结果分离储存问题由于 DOS 功能调用多字符输入0ah所能输入的缓冲区中一个字符在该字符串中最多重复出现的次数为254。那么在输出的时候需要输出三位数。在具体方案论证中已经确定使用把结果的三位数分离成三个0 到 9 的字符的方法。需要考虑如何实现这一功能。(4)结果输出转换问题由于在寄存器中存入的为二进制数,在输出的时候需要显示十进制的数。但二进制数据从寄存器不能直接输出到屏幕上,要经过转换并调用多字符
12、输出9 号功能进行输出。需要考虑 9 号功能的使用方法和如何正确地输出字符。还应该对输出结果进行优化。5.2 问题解决方法对于以上的问题,经过考虑和尝试之后,得到以下解决方案:(1)回车结束程序问题受到 DOS 功能调用多字符输入0ah输入字符最后结束的时候要输入回车符的启发,设名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 17 页 -武汉理工大学微机原理与接口技术课程设计说明书7 置一个只有一个字节的区域,然后用 DOS 功能调用多字符输入0ah 调用这个区域。该缓冲区只能输入一个字符,而要结束输入要输入回车符,因此只有输入回车的时候才会结束0ah的调用,到下一步或退出程序,
13、而输入其他的字符无效。将此段程序加到查询字符输入和输出结果之后,可以实现按回车结束的功能。但是要注意的是,由于需要调用 0ah,则 dx 与 ah寄存器不能在调用前存放数据,不然会被覆盖。需要用其他寄存器代替来存储统计次数。(2)程序适用范围问题划分缓冲区的时候,定义变量时用DB 定义为 8 位字节型数据,每一字节可以存放一个字符。DOS 功能调用多字符输入0ah 最多输入 255 个字符,因此在调用伪指令dup 时,重复次数的设置不能超过255。若超过 255,则在微机原理实验集成环境MF2KP 中运行时会产生“无法生成obj 文件”错误。(3)结果分离储存问题预定三个 8 位寄存器分别存放
14、三位数的个、十、百位,并清零。注意这三个寄存器不能是 al、cx。al 存放查询字符,cl 存放循环次数。ch 没有使用,但是由于cl 在循环比较时自动减 1,为 0 时会向 ch 借位,会影响 ch 中的数据,也会造成循环次数不正确,因此 ch 应清零。在进行字符比较的时候,若字符相同则个位的寄存器上的数加1,然后个位与 0ah比较,若相等,则个位清零,存放十位的寄存器的数加1;当达到 10,即 0ah时,个位不会存 0ah,而是清零。如此类推,设置十位和百位。这就保证了各位上的数是0 至 9,而且分别存在三个 8 位寄存器中。(4)结果输出转换问题使用 DOS 功能调用多字符输出9 号输出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年统计字符串中某个字符出现次数整理 2022 统计 字符串 某个 字符 出现 次数 整理

限制150内