微机原理课程设计字符串分类统计_第1页
微机原理课程设计字符串分类统计_第2页
微机原理课程设计字符串分类统计_第3页
微机原理课程设计字符串分类统计_第4页
微机原理课程设计字符串分类统计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 微机原理 课程设计报告题 目: 字符串分类统计 学生姓名: 周喜民 学 号: 32 专业班级: 计0601 同组姓名: 赵晏龙 陈顺 指导教师: 范轶彦 设计时间: 2010.1.4-2010.1.10 指导老师意见:评定成绩: 签名: 日期:目录一、需求分析2二、系统设计31. 内容32思路3三、系统总体框图5四、调试分析6五、实验结果6六、程序设计7七、总结13八、参考文献14一、需求分析 本程序主要用于,把输入的一串字符分类统计,分别统计出数字、大写字符、小写字符和其他字符的个数。本程序采用汇编语言编程,定义了宏、比较判断、循环调用、统计等等,非常人性化的把统计的结果显示出来。比如你输

2、入一串数字“12345”,它会显示出你输入的这串数字,并显示数字的个数为5,同时显示其他相应类字符为空。 程序接收用户键入的一行字符(字符长度不大于80个,以回车结束),并把字符,数字,其它字符分类计数,然后将结果存入以Letter,Digit,Other为名的存储单元中。 程序可采用0AH断将键入的字符直接送至键盘缓冲区,然后逐个取出分类计数。也可采用01H在接收字符后进行分类奇数在存入缓冲区。程序需要进入DEBUG看计数结果二、系统设计1.内容从键盘输入任意一个字符串,以回车作为结束符并显示,分别统计并显示出其中数字字符、大写字符、小写字符以及其它字符的个数。2思路(1).首先定义两个宏,

3、一个用于输出统计各字符的个数,另一个用于输出字符串。(2).在数据段中定义各种字符提示信息以便程序清晰明白。(3).定义数据缓冲区用于存放输入的字符串,定义NUM区用于存放统计的大写字符、小写字符、数字以及其它字符的个数。定义OTHERCHAR、BIGCHAR、SMALLCHAR以及堆栈用于存放统计的相应字符保存,以便后来输出。(4).首先调用DOS 10号功能用DX指定BUF区,将输入的字符串保存到BUF区中。(5).将BUF+1的内容取出来,判断是否为0,如果为0表示没有输入任何字符,则程序跳到NEXTLAP(输出提示信息You do not input any string!),然后显示

4、字符串(Do you want to input a string again(Y/N)?)然后调用DOS 1号功能获取您从键盘输入的数,判断是否为Y或y如果是则将程序跳到刚开始处重新执行,如果不是这两个字符则程序结束。(6).如果输入了字符串,则调用DOS 2号功能将BUF里的内容输出来(2号功能可以输出$符号而9号功能遇到$符号就终止)。(7).取字符出来进行比较统计,如果它比30H大且比39H小则为数字,如果比41H大且比5AH小则为大写字符,如果比61H大且比7AH小则为小写字符,如果不是这三种情况则为其它字符。注:DX存数字个数,BX存小写字母个数,DI存大写字母个数,BP存其它字符

5、个数。(8).将数字个数、大写字母个数、小写字母个数、其它字符个数依次放入NUM区。(9).依次输出各字符: a.判断数字个数是否为0,如果为0则输出提示没有此类数据,否则输出数字个数以及有哪些数字。 b.判断大写字符个数是否为0,如果为0则输出提示没有此类数据,否则输出大写字符的个数以及输入的哪些大写字符。 c.判断小写字符个数是否为0,如果为0则输出提示没有此类数据,否则输出小写字符的个数以及输入的哪些小写字符。 d.判断其它字符个数是否为0,如果为0则输出提示没有此类数据,否则输出其它字符的个数以及输入的哪些其它字符。(10).然后将程序跳到NEXTLAP继续执行,依次下去。三、系统总体

6、框图四、调试分析本程序主要用于,把输入的一串字符分类统计,分别统计出数字、大写字符、小写字符和其他字符的个数。本程序采用汇编语言编程,定义了宏、比较判断、循环调用、统计等等,非常人性化的把统计的结果显示出来。比如你输入一串数字“12345”,它会显示出你输入的这串数字,并显示数字的个数为5,同时显示其他相应类字符为空。从键盘输入任意一个字符串,以回车作为结束符并显示,分别统计并显示出其中数字字符、大写字符、小写字符以及其它字符的个数。五、实验结果1)所有字符都有的时候:2)其中有字符类型缺少的时候:3)什么字符都不输入的时候:六、程序设计shuchu MACRO ;定义宏,用来输出统计其它字符

7、、数字、大小写 个数 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 21HNEXT: MOV DL,BH OR DL,'0' ;输出余数 MOV AH,2 INT 21H dismsg CRLF ;回车换行 ENDM dismsg MACRO message ;输出字符串 LEA DX,message MOV AH,9 INT 21H ENDMDATAS SEGMENTSTR DB 'The inp

8、ut string is:$'STR1 DB 'Please input a string:$'STR2 DB 'The integer is:$'STR3 DB 'The bigchar is:$'STR4 DB 'The smallchar is:$'STR5 DB 'The otherchar is:$' STR6 DB 'The date of integer is null!$'STR7 DB 'The date of otherchar is null!$'STR

9、8 DB 'The data of bigchar is null!$'STR9 DB 'The data of smallchar is null!$'NUM2 DB 'The number of integer is:$'NUM3 DB 'The number of bigchar is:$'NUM4 DB 'The number of smallchar is:$'NUM5 DB 'The number of otherchar is:$' NUM6 DB 'Do you want t

10、o input a string again?(Y/N):$'NUM7 DB 'You do not input any string!$'BUF DB 100 ;定义缓冲区用来存放输入的字符串 DB ? DB 100 DUP (24H)CRLF DB 0AH,0DH,'$'NUM DB 4 DUP(?)BIGCHAR DB 100 DUP(24H),0AH,0DH,'$'SMALLCHAR DB 100 DUP(24H),0AH,0DH,'$'OTHERCHAR DB 100 DUP(24H),0AH,0DH,'

11、$'TAIL DB ? ;用来存放其它字符的个数DATAS ENDSSTACKS SEGMENT STACK1 DW 100 DUP(24H) TOP LABEL WORDSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: AGAIN1: MOV AX,STACKS MOV SS,AX MOV SP,OFFSET TOP MOV AX,DATAS MOV DS,AX dismsg STR1 ;显示输入提示信息 MOV AH,10 ;输入字符串 LEA DX,BUF INT 21H dismsg CRLF ;

12、回车换行 CMP BUF+1,0 JZ NEXTLAP dismsg STR ;提示输入字符串 MOV CL,BUF+1 LEA SI,BUF+2ABC: MOV DL,SI ;用于输出缓冲区里的输入字符串 MOV AH,2 INT 21H INC SI LOOP ABC dismsg CRLF ;回车换行 MOV CL,BUF+1 ;将字符串的个数放入CL LEA SI,BUF+2 ;取字符串的首地址 MOV DX,0 ;DX统计数字个数 MOV BX,0 ;BX统计小写字母个数 MOV DI,0 ;DI统计大写字母个数 MOV BP,0 ;BP统计其他字符的个数 MOV AH,0L1: M

13、OV AL,SI CMP AL,30H JL NEXT1 CMP AL,39H JG L2 PUSH AX INC DX ;统计数字字符的个数 JMP NEXT L2: CMP AL,41H ;统计大写字符的个数 JL NEXT1 CMP AL,5AH JG L3 MOV BIGCHARDI,AL INC DI JMP NEXT L3: CMP AL,61H ;统计小写字符的个数 JL NEXT1 CMP AL,7AH JG NEXT1 MOV SMALLCHARBX,AL INC BX JMP NEXT NEXT1: MOV OTHERCHARBP,AL INC BP ;统计其它字符的个数N

14、EXT: INC SI DEC CL JNZ L1 MOV NUM,DL ;将统计的个数存放在NUM的存储区 MOV AX,DI ;数字个数放在NUM,大写字符个数放在NUM+1 MOV NUM+1,AL ;小写字符个数放在NUM+2,其他字符的个数放在NUM+3 MOV NUM+2,BL MOV AX,BP MOV TAIL,AL ;将其它字符的个数送入TAIL保存,以便后来输出(否则9号功能输出遇$则退出) MOV NUM+3,AL CMP NUM,0 ;判断数字个数如果为0则输出提示符,否则循环输出 JZ NNULL dismsg STR2 ;输出数字字符的提示符 MOV CL,NUM

15、MOV BP,OFFSET TOP SUB BP,2OK: MOV DX,STACK1BP MOV AH,2 INT 21H SUB BP,2 LOOP OK dismsg CRLF dismsg NUM2 ;输出数字字符数字的提示符 MOV AL,NUM ;输出数字字符的个数 shuchu JMP NNULL1NNULL: dismsg STR6 NNULL1: dismsg CRLF CMP NUM+1,0 ;判断大写字符的个数如果为0则输出提示符,否则以字符串形式输出 JZ BNULL dismsg STR3 ;输出大写字符的提示符 dismsg BIGCHAR dismsg CRLF

16、dismsg NUM3 ;输出大写字符数字个数提示符 MOV AL,NUM+1 ;输出大写字符的个数 shuchu JMP BNULL1 BNULL: dismsg STR8BNULL1: dismsg CRLF CMP NUM+2,0 ;判断小写个数,如果为0则输出提示符,否则以字符串形式输出 JZ SNULL dismsg STR4 ;输出小写字符的提示符 dismsg SMALLCHAR dismsg CRLF dismsg NUM4 ;输出小写字符数字个数的提示符 MOV AL,NUM+2 ;输出小写字符的个数 shuchu JMP SNULL1SNULL: dismsg STR9SN

17、ULL1: dismsg CRLF CMP TAIL,0 ;判断其他字符的个数如果为0则输出提示符,否则循环输出 JZ ONULL dismsg STR5 ;输出其它字符的提示符 MOV CL,TAIL MOV SI,OFFSET OTHERCHARL4: ;输出其它字符 MOV DL,SI MOV AH,2 INT 21H INC SI LOOP L4 dismsg CRLF dismsg NUM5 ;输出其它字符个数的提示符 MOV AL,NUM+3 ;输出其它字符的个数 shuchu JMP AGAINONULL: dismsg STR7 JMP AGAINNEXTLAP: dismsg

18、 NUM7AGAIN: dismsg CRLF dismsg NUM6 MOV AH,01H INT 21H MOV BL,AL dismsg CRLF CMP BL,'Y' JZ AGAIN1 CMP BL,'y' JZ AGAIN1ONULL2: MOV AH,4CH INT 21HCODES ENDSEND START 七、总结微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤

19、立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。这次实验并不是很难,主要的困难来自对程序的理解。功夫不负有心人,经过四个人的合作和努力,我们最后对实验的原理有了清晰的认识。虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。虽然实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论