ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:88.04KB ,
资源ID:9080304      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9080304.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理课程设计字符串分类统计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理课程设计字符串分类统计.docx

1、微机原理课程设计字符串分类统计 微机原理 课程设计报告题 目: 字符串分类统计 * * 学 号: 32 专业班级: 计0601 同组姓名: 赵晏龙 陈顺 * * 设计时间: 2010.1.4-2010.1.10 指导老师意见:评定成绩: 签名: 日期:一、需求分析 本程序主要用于,把输入的一串字符分类统计,分别统计出数字、大写字符、小写字符和其他字符的个数。本程序采用汇编语言编程,定义了宏、比较判断、循环调用、统计等等,非常人性化的把统计的结果显示出来。比如你输入一串数字“12345”,它会显示出你输入的这串数字,并显示数字的个数为5,同时显示其他相应类字符为空。 程序接收用户键入的一行字符(

2、字符长度不大于80个,以回车结束),并把字符,数字,其它字符分类计数,然后将结果存入以Letter,Digit,Other为名的存储单元中。 程序可采用0AH断将键入的字符直接送至键盘缓冲区,然后逐个取出分类计数。也可采用01H在接收字符后进行分类奇数在存入缓冲区。程序需要进入DEBUG看计数结果二、系统设计1.内容从键盘输入任意一个字符串,以回车作为结束符并显示,分别统计并显示出其中数字字符、大写字符、小写字符以及其它字符的个数。2思路(1).首先定义两个宏,一个用于输出统计各字符的个数,另一个用于输出字符串。(2).在数据段中定义各种字符提示信息以便程序清晰明白。(3).定义数据缓冲区用于

3、存放输入的字符串,定义NUM区用于存放统计的大写字符、小写字符、数字以及其它字符的个数。定义OTHERCHAR、BIGCHAR、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号功能获取您从键盘输入的

4、数,判断是否为Y或y如果是则将程序跳到刚开始处重新执行,如果不是这两个字符则程序结束。(6).如果输入了字符串,则调用DOS 2号功能将BUF里的内容输出来(2号功能可以输出$符号而9号功能遇到$符号就终止)。(7).取字符出来进行比较统计,如果它比30H大且比39H小则为数字,如果比41H大且比5AH小则为大写字符,如果比61H大且比7AH小则为小写字符,如果不是这三种情况则为其它字符。注:DX存数字个数,BX存小写字母个数,DI存大写字母个数,BP存其它字符个数。(8).将数字个数、大写字母个数、小写字母个数、其它字符个数依次放入NUM区。(9).依次输出各字符: a.判断数字个数是否为0

5、,如果为0则输出提示没有此类数据,否则输出数字个数以及有哪些数字。 b.判断大写字符个数是否为0,如果为0则输出提示没有此类数据,否则输出大写字符的个数以及输入的哪些大写字符。 c.判断小写字符个数是否为0,如果为0则输出提示没有此类数据,否则输出小写字符的个数以及输入的哪些小写字符。 d.判断其它字符个数是否为0,如果为0则输出提示没有此类数据,否则输出其它字符的个数以及输入的哪些其它字符。(10).然后将程序跳到NEXTLAP继续执行,依次下去。三、系统总体框图四、调试分析本程序主要用于,把输入的一串字符分类统计,分别统计出数字、大写字符、小写字符和其他字符的个数。本程序采用汇编语言编程,

6、定义了宏、比较判断、循环调用、统计等等,非常人性化的把统计的结果显示出来。比如你输入一串数字“12345”,它会显示出你输入的这串数字,并显示数字的个数为5,同时显示其他相应类字符为空。从键盘输入任意一个字符串,以回车作为结束符并显示,分别统计并显示出其中数字字符、大写字符、小写字符以及其它字符的个数。五、实验结果1)所有字符都有的时候:2)其中有字符类型缺少的时候: 3)什么字符都不输入的时候:六、程序设计shuchu MACRO ;定义宏,用来输出统计其它字符、数字、大小写 个数 LOCAL NEXT MOV AH,0 MOV BL,10 DIV BL MOV DL,AL MOV BH,A

7、H ;将余数暂时存放在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 input string is:$STR1 DB Please input a string:$STR2 DB The integer is:$STR3 DB The

8、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!$STR8 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 num

9、ber of smallchar is:$NUM5 DB The number of otherchar is:$ NUM6 DB Do you want to 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,$OTHER

10、CHAR DB 100 DUP(24H),0AH,0DH,$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,B

11、UF INT 21H dismsg CRLF ;回车换行 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 ;B

12、P统计其他字符的个数 MOV AH,0L1: MOV 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 OTHERCHAR

13、BP,AL INC BP ;统计其它字符的个数NEXT: 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

14、 ;输出数字字符的提示符 MOV CL,NUM 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 ;输出大写字符的提示符 dis

15、msg BIGCHAR dismsg CRLF 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 SN

16、ULL1SNULL: dismsg STR9SNULL1: 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

17、JMP AGAINNEXTLAP: dismsg 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 七、总结微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且

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

19、的认识。虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。实验中个人的力量是不及群体的力量的,我们四个人分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。总之,这次课程设

20、计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。感谢老师的悉心指导。对课程设计的建议本次课程设计的三个实验相对都比较简单,而且经过老师的讲解以及实验书上的指导,几乎把我们要用到的程序和实验台电路的接线方法都告诉我们了,所以做起来很容易。但是做完实验,我们对实验台及其上面的各个模块还是不了解。对如何编程控制实验台上各个模块和芯片的运作也没有什么清晰的认识。如果老师对我们实验报告的要求再严格一点,也许同学们会更加自觉地去认真理解程序和实验思路。八、参考文献【1】楼顺天、周佳设.微机原理与接口技术.第一版.科技出版社,2006【2】钱晓捷.新版汇编语言程序设计.电子工业出版社.2008【3】葛洪伟、姜浩伟、赵雅群、黄蓓.Intel汇编语言程序设计.第一版.中国电力出版社,2007【4】张雪兰.Windows汇编语言程序设计教程.电子工业出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1