1、 微机原理与接口技术微机原理与接口技术 课程设计课程设计 字符串分类统计字符串分类统计 目目 录录 一、摘要一、摘要3 3 二、系统设计二、系统设计4 4 1 1、内容、内容4 4 2 2、思路、思路4 4 3 3、程序设计、程序设计6 6 4 4、调试结果、调试结果1212 三、系统总结三、系统总结1313 四、人员分工四、人员分工1414 五、参考文献五、参考文献1515 2 一、摘要一、摘要 本程序主要用于,把输入的一串字符分类统计,分别统计出数字、大写字符、 小写字符和其他字符的个数。本程序采用汇编语言编程,定义了宏、比较判断、 循环调用、统计等等,非常人性化的把统计的结果显示出来。比
2、如你输入一串数 字“12345”,它会显示出你输入的这串数字,并显示数字的个数为 5,同时显示 其他相应类字符为空。 二、系统设计二、系统设计 1 1、内容、内容 从键盘输入任意一个字符串,以回车作为结束符并显示,分别统计并显示出 其中数字字符、大写字符、小写字符以及其它字符的个数。 2 2、思路、思路 (1).首先定义两个宏,一个用于输出统计各字符的个数,另一个用于输出 字符串。 (2).在数据段中定义各种字符提示信息以便程序清晰明白。 (3).定义数据缓冲区用于存放输入的字符串,定义 NUM 区用于存放统计的 大写字符、小写字符、数字以及其它字符的个数。定义 OTHERCHAR、BIGCH
3、AR、 SMALLCHAR 以及堆栈用于存放统计的相应字符保存,以便后来输出。 (4).首先调用 DOS 10 号功能用 DX 指定 BUF 区,将输入的字符串保存到 BUF 区中。 (5).将 BUF+1 的内容取出来,判断是否为 0,如果为 0 表示没有输入任何 字符,则程序跳到 NEXTLAP(输出提示信息 You do not input any string!) , 然后显示字符串(Do you want to input a string again(Y/N)?)然后调用 DOS 1 号功能获取您从键盘输入的数,判断是否为 Y 或 y 如果是则将程序跳到刚开始 处重新执行,如果不是
4、这两个字符则程序结束。 (6).如果输入了字符串,则调用 DOS 2 号功能将 BUF 里的内容输出来(2 号功能可以输出$符号而 9 号功能遇到$符号就终止) 。 (7).取字符出来进行比较统计,如果它比 30H 大且比 39H 小则为数字,如 果比 41H 大且比 5AH 小则为大写字符,如果比 61H 大且比 7AH 小则为小写字符, 如果不是这三种情况则为其它字符。 注:DX 存数字个数,BX 存小写字母个数,DI 存大写字母个数,BP 存其它字 符个数。 (8).将数字个数、大写字母个数、小写字母个数、其它字符个数依次放入 NUM 区。 (9).依次输出各字符: a.判断数字个数是否
5、为 0,如果为 0 则输出提示没有此类数据,否则输出数 字个数以及有哪些数字。 b.判断大写字符个数是否为 0,如果为 0 则输出提示没有此类数据,否则 3 输出大写字符的个数以及输入的哪些大写字符。 c.判断小写字符个数是否为 0,如果为 0 则输出提示没有此类数据,否则 输出小写字符的个数以及输入的哪些小写字符。 d.判断其它字符个数是否为 0,如果为 0 则输出提示没有此类数据,否则 输出其它字符的个数以及输入的哪些其它字符。 (10).然后将程序跳到 NEXTLAP 继续执行,依次下去。 流程图:流程图: 4 5 3 3、程序设计、程序设计 shuchu MACRO ;定义宏,用来输出统计其它字符、数字、大小写 个数 LOCAL NEXT MOV AH,0 MOV BL,10 DIV BL MOV DL,AL MOV BH,AH ;将余数暂时存放在BH中 CMP AL,0 JZ NEXT OR DL,30h MOV AH,2 INT 21H NEXT: MOV DL,BH OR DL,0 ;输出余数 MOV AH,2 INT 21H dismsg CRLF ;回车换行 ENDM dismsg MACRO message ;输出字符串 LEA DX,mes