微机原理课程设计统计字符串长度Word下载.docx
《微机原理课程设计统计字符串长度Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计统计字符串长度Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
刘洁
设计时间:
2015.12.28-2015.12.31
指导老师意见:
评定成绩:
签名:
日期:
一、需求分析
本程序主要用于,把输入的一串字符,统计长度并输出。
本程序采用汇编语言编程,定义了宏、统计等等,非常人性化的把统计的结果显示出来。
比如你输入一串数字“12345”,它会显示出你输入的这串数字个数为5。
二、系统设计
1.内容
从键盘输入任意一个字符串,以回车作为结束符并显示,统计并显示出它字符的个数。
2.思路
(1).在数据段中定义各种字符提示信息以便程序清晰明白。
(2).在数据段中定义一个STRDB100,?
100DUP(?
)
(3).将数据段存到AX寄存器,再将AX寄存器转移到DS寄存器。
(4).提示用户输入一串字符,以回车结束。
(5).将偏移地址放入DX。
(6).输入数据,长度不能大于100。
(7).将输出提示语的偏移地址放入DX。
(8).统计字符串的长度。
(9).将结果转化成可以显示的ASCII码,并保存到AX中。
(10).将AX中的结果转移到DX中。
显示DX,以任意键退出
三、系统总体框图
四、调试分析
本程序主要用于,把输入的一串字符统计字符的个数。
本程序采用汇编语言编程,定义了宏、比较判断、循环调用、统计等等,非常人性化的把统计的结果显示出来。
比如你输入一串数字“12345”,它会显示出你输入的这串数字,并显示数字的个数为5。
5、实验结果
(1)用DOSBOX在win7上运行,将文件夹路径设为C盘
(2)运行masm,编译len.asm,生成len.obj文件
(3)连接len,生成len.exe文件
(4)运行len.exe
六、程序设计
DATASSEGMENT;
数据段定义
MSG1DB'
Inputthestring:
'
13,10,'
$'
;
定义了一个字符串,13是回车,10是换行,字符串必须以'
结束
MSG2DB13,10,'
Thestringlenthis:
STRDB100,?
);
DB100DUP(?
)意思是定义100个未经初始化的字节
DB100意思是定义一个字节,初始化为100
DB?
意思是定义一个为初始化的字节
DATASENDS
STACKSSEGMENT;
堆栈段定义,此程序不需要,不定义会有警告,但不影响运行。
此处输入堆栈段代码
STACKSENDS
CODESSEGMENT;
代码段开始
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS;
说明段寄存器和定义寄存器的关系
START:
MOVAX,DATAS;
数据段到AX寄存器
MOVDS,AX;
AX寄存器到DS寄存器,不能数据段直接到DS
LEADX,MSG1;
加载定义字符的有效地址MSG1
MOVAH,9;
调用dos显示字符串功能
INT21H;
此处输入代码段代码
LEADX,STR;
传偏移地址
MOVAH,0AH;
0AH表示键盘输入到缓冲区
读数据
MOV传送的是地址所指的内容,而LEA只是地址。
LEADX,MSG2
MOVAH,9
INT21H
LEASI,STR
MOVAL,[SI+1]
MOVAH,0;
把AH变成0
MOVBL,10
DIVBL;
除法指令,除数有8位和16位两种,如果除数是8位,那么除法的结果AL保存上,AH保存余数
如果除数是16位,那么除法的结果AX保存商,DX保存余数。
被除数默认存放在AX中(10位以内)或AX和DX中(32位,DX存放高16位,AX存放低16位)
ADDAX,3030H;
把两字节的非压缩BCD码转成可以显示的ASCII码
MOVDX,AX
MOVAH,2;
显示输出
MOVDL,DH
MOVAH,7;
点击enter程序退出,应该是任意键退出
MOVAH,4CH;
程序结束,控制权返回
CODESENDS
ENDSTART
七、总结
微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。
讨论某一部分原理时又要涉及到其它部分的工作原理。
这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。
所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
这次实验并不是很难,主要的困难来自对程序的理解。
功夫不负有心人,经过四个人的合作和努力,我们最后对实验的原理有了清晰的认识。
虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;
而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。
虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
实验中个人的力量是不及群体的力量的,我们四个人分工合作,做事的效率高了很多。
虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。
而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。
感谢老师的悉心指导。
对课程设计的建议
本次课程设计的三个实验相对都比较简单,而且经过老师的讲解以及实验书上的指导,几乎把我们要用到的程序和实验台电路的接线方法都告诉我们了,所以做起来很容易。
但是做完实验,我们对实验台及其上面的各个模块还是不了解。
对如何编程控制实验台上各个模块和芯片的运作也没有什么清晰的认识。
如果老师对我们实验报告的要求再严格一点,也许同学们会更加自觉地去认真理解程序和实验思路。