您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理课程设计报告
课程设计报告课程名称微机原理班级名称作者姓名作者学号指导教师提交日期2014年1月16日设计1、字符串匹配设计1.实验要求:为掌握提示信息的设置方法及读取键入信息的方法。编写程序实现两个字符串的比较。如相同,则显示“MATCH”,否则,显示“NOMATCH”。2.程序清单:DATASEGMENTDATA1DB40DB?DB40DUP(?)DATA2DB40DB?DB40DUP(?)DISPP1DB'inputthefirstline:$',0DH,0AH,'$'DISPP2DB'inputthesecondline:$',0DH,0AH,'$'DISPP3DB0DH,0AH,'$'DISPP4DB'MATCH!$',0DH,0AH,'$'DISPP5DB'NOMATCH!$',0DH,0AH,'$'DATAENDSCASESEGMENTASSUMECS:CASE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,DISPP1MOVAH,9INT21HMOVDX,OFFSETDATA1MOVAH,0AHINT21HCALLENTERLEADX,DISPP2MOVAH,9INT21HMOVDX,OFFSETDATA2MOVAH,0AHINT21HCALLENTERMOVAL,DATA1+1MOVAH,0MOVBL,DATA2+1MOVBH,0CMPAL,BLJNZL2MOVCL,BLMOVSI,OFFSETDATA1+2MOVDI,OFFSETDATA2+2L1:MOVDX,DS:[SI]CMPDX,DS:[DI]JNEL2INCDIINCSILOOPL1MOVDX,1JMPL3L2:MOVDX,0L3:CMPDX,0JZL4MOVDX,OFFSETDISPP4MOVAH,9INT21HJMPL5L4:MOVDX,OFFSETDISPP5MOVAH,9INT21HL5:MOVAH,4CHINT21HENTERPROCLEADX,DISPP3MOVAH,9INT21HRETENTERENDPCASEENDSENDSTART3.运行结果显示:4.结果分析输入第一个字符串为HEHE,第二个字符串为JIJI,显示它们不匹配;输入第一个字符串为1233,第二个字符串为1233,匹配!设计2、字符和数据的显示设计1.设计要求:为掌握字符和数据的显示方法。编写程序,先显示信息:INPUTSTRING,THEENDFLAGIS$,再接收字符。如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。2.程序清单:DATASEGMENTDATA1DB40DUP(?)DISPP1DB'inputstring,theendflagisCR,quitwithctrl-c',0DH,0AH,'$'DISPP2DB0DH,0AH,'$'DISPP3DB'theinputstringis:','$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,00HMOVCL,0MOVBX,OFFSETDATA1LEADX,DISPP1MOVAH,9INT21HL1:MOVAH,1INT21HCMPAL,03HJZL4CMPAL,0DHJZL3MOV[BX+SI],ALINCSICMPAL,30HJNBkkJMPL1kk:CMPAL,39HJNAL2JMPL1L2:INCCLJMPL1L3:LEADX,DISPP2MOVAH,9INT21HLEADX,DISPP3MOVAH,9INT21HADDCL,30HMOV[BX+SI+1],CLMOVAL,0AHMOV[BX+SI+2],ALMOVAL,'$'MOV[BX+SI+3],ALMOVDX,BXMOVAH,9INT21HJMPL4L4:MOVAH,4CHINT21HCODEENDSENDSTART3.运行结果显示:1.结果分析输入第一个字符串中没有数字,因此显示为0;第二次输入有1234共4个数字,因此显示数字为4设计3、响铃设计1.实验要求:为掌握响铃的方法使用。编写程序,从键盘接收输入字符,如是数字N,则响铃N次;如不是数字,则不响。2.参考流程:3.程序清单DATASEGMENTDATA1DB'inputnumber1-9,quitwith入口段寄存器及堆栈段初始化INT21H的1号子功能,读入数字BP为0?对应次数送入CX发出响铃,输出字符延时返回DOS是‘0’~‘9’?次数BP减1是Ctrl—C?YYNNNYctrl-c',0DH,0AH,'$'DISPP1DB0DH,0AH,'$'DISPP2DB'wrongnumber,pleaseinputagainorquitwithctrl-c',0DH,0AH,'$'DATAENDSSTACKSSEGMENTPARASTACK'STACK'STADW32DUP(?)TOPEQULENGTHSTASTACKSENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKSMOVSS,AXMOVSP,TOPL1:LEADX,DATA1MOVAH,9INT21HLEADX,DISPP1MOVAH,9INT21HMOVAH,1INT21HCMPAL,03HJZL5CMPAL,31HJZL4CMPAL,39HJNZL4SUBAL,30HANDAX,00FFHMOVBP,AXL2:MOVAH,2MOVDL,07HINT21HDELAY:MOVCX,0FFFFHL3:LOOPDELAYDECDXJNZDELAYDECBPJNZL2L4:LEADX,DISPP1MOVAH,9INT21HJMPL1L5:MOVAX,4CHINT21HCODEENDSENDSTART4.运行结果显示设计4、将键盘输入的小写字母转换成大写字母的设计1.实验要求:为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换。编写程序,接收键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。2.参考流程:NY入口段寄存器和堆栈初始化BX指向字符行缓冲区首址偏移指针SI清0INT21H的01H号子功能接收键入字符是小写字母?是回车键?是ctrl+c键?小写字母的ASCII码值转化为大写字母的ASCII码值存入字符缓冲区[BX+SI]单元SI加1指向下一单元显示转换后的字符行缓冲区内容返回DOSYYNN3.程序清单:DATASEGMENTDATA1DB20DUP(?)DISPP1DB'pleaseinputletters,endwithenter,exitwithctrl-c',0DH,0AH,'$'DISPP2DB'theinvertedlitteris:',0DH,0AH,'$'DISPP3DB0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,00HMOVBX,OFFSETDATA1LEADX,DISPP1MOVAH,9INT21HL1:MOVAH,1INT21HCMPAL,03HJZL4CMPAL,0DHJZL3CMPAL,61HJZL2SUBAL,20HJMPL2L2:MOV[BX+SI],ALINCSIJMPL1L3:LEADX,DISPP3MOVAH,9INT21HLEADX,DISPP2MOVAH,9INT21HMOV[BX+SI],ALMOVAL,0AHMOV[BX+SI+1],ALMOVAL,'$'MOV[BX+SI+2],ALMOVDX,BXMOVAH,9INT21HLEADX,DISPP3MOVAH,9INT21HJMPL4L4:MOVAH,4CHINT21HCODEENDSENDSTART4.运行结果显示:心得体会:近一个星期的课程设计中,通过对一些题目的练习我进一步了解到微机的强大功能,学习到微机的一些简单运用,收获颇多。这不是第一次用汇编语言来写程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平时的一些程序稍微改动都可以作为子程序用到,这大大方便了我的设计,为我节省了很多的时间。在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,去找同学讨论一下,可以使很多问题迎刃而解。当然程序任然存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的工作也有指导作用。我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的程度!
本文标题:微机原理课程设计报告
链接地址:https://www.777doc.com/doc-5823296 .html