微机原理课程设计报告li.docx
- 文档编号:28434924
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:17
- 大小:46.94KB
微机原理课程设计报告li.docx
《微机原理课程设计报告li.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告li.docx(17页珍藏版)》请在冰豆网上搜索。
微机原理课程设计报告li
大学
微机原理课程设计报告
学院:
电气学院
班级:
:
学号:
指导老师:
时间:
2014年1月15日
一.课程设计目的:
1.结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。
学会使用屏幕编辑程序——EDIT,弄懂汇编程序的上级过程以及如何运用DEBUG软件进行汇编程序的调试。
2.学会将课本上的理论知识和实际有机的结合起来,锻炼自己分析解决实际问题的能力。
提高适应实际,实践编程的能力。
3.为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。
通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。
二.课程设计容:
1.接受年、月、日信息并显示的设计
为掌握响铃使用方法,并掌握年、月、日输入方法。
编写程序,先显示“WHATISTHEDATA(MM/DD/YY)?
”并响铃一次,然后接受键盘输入的月/日/年信息,并显示。
2.字符串匹配设计
为掌握提示信息的设置方法及读取键入信息的方法,编写程序实现两个字符串比较,如相同则显示“MATCH”,否则显示“NOMATCH”。
3.从键盘输入数据并显示的设计
为掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数显示。
4.字符和数据的显示设计
为掌握字符和和数据的显示方法。
编写程序,先显示信息:
INPUTSTRING,THEENDFLAGIS$,再接受字符。
如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。
三.典型题目举例:
1.接收年月日信息并显示的设计
为掌握响铃使用方法,并掌握年、月、日输入方法。
编写程序,先显示“WHATISTHEDATA(MM/DD/YY)?
”并响铃一次,然后接受键盘输入的月/日/年信息,并显示。
流程图:
分3次输入月、日、年
分3次显示月、日、年
程序代码及注释:
DATASEGMENT
S1DB'WHATISTHEDATA(MM/DD/YY)?
',0DH,0AH,'$';显示字符串
S2DB'MONTH',0DH,0AH,'$';月字符串
S3DB'DAY',0DH,0AH,'$';日字符串
S4DB'YEAR',0DH,0AH,'$';年字符串
S5DB4;存放接受的月
DB?
DB4DUP(‘$’)
S6DB4;存放接受的日
DB?
DB4DUP(‘$’)
S7DB6;存放接受的年
DB?
DB6DUP(‘$’)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA;段寄存器初始化
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETS1;显示提示信息
MOVAH,9
INT21H
MOVDL,07H;响铃一次
MOVAH,2
INT21H
MOVCX,0FFFH;延迟,用外双重循环实现
L1:
PUSHCX
MOVCX,0FFFFH
L2:
LOOPL2
POPCX
LOOPL1
MOVDX,OFFSETS5;接受月数据,放入变量
MOVAH,0AH
INT21H
MOVDX,OFFSETS6;接受日数据,放入变量
MOVAH,0AH
INT21H
MOVDX,OFFSETS7;接受年数据,放入变量
MOVAH,0AH
INT21H
MOVDL,0DH;显示回车
MOVAH,2
INT21H
MOVDL,0AH;显示换行
MOVAH,2
INT21H
MOVDX,OFFSETS5;显示月数据
ADDDX,2
MOVAH,9
INT21H
MOVDX,OFFSETS2;显示‘月’字符
MOVAH,9
INT21H
MOVDX,OFFSETS6;显示日数据
ADDDX,2
MOVAH,9
INT21H
MOVDX,OFFSETS3;显示‘日’字符
MOVAH,9
INT21H
MOVDX,OFFSETS7;显示年数据
ADDDX,2
MOVAH,9
INT21H
MOVDX,OFFSETS4;显示‘年’字符
MOVAH,9
INT21H
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
结果截图:
2.字符串的匹配设计
为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MATCH”,否则,显示“NOMATCH”。
程序清单:
CRLFMACRO;显示回车
MOVDL,0DH
MOVAH,02H
INT21H
MOVAH,02H
MOVDL,0AH
INT21H
ENDM
DATASEGMENT
MESS1DB'MATCH',0DH,0AH,'$'
MESS2DB'NOMATCH',0DH,0AH,'$'
MESS3DB'INPUTSTRING1!
',0DH,0AH,'$'
MESS4DB'INPUTSTRING2!
',0DH,0AH,'$'
MAXLEN1DB100
STRING1DB100DUP(?
)
MAXLEN2DB100
STRING2DB100DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAH,09H
MOVDX,OFFSETMESS3
INT21H;显示提示信息1
MOVAL,MAXLEN1
MOVBX,OFFSETSTRING1
MOV[BX],AL;最大字符缓冲
MOVAH,0AH
MOVDX,OFFSETSTRING1
INT21H;接收键入的字符串1
CRLF
MOVAH,09H
MOVDX,OFFSETMESS4
INT21H;显示提示信息2
MOVAL,MAXLEN2
MOVBX,OFFSETSTRING2
MOV[BX],AL;最大字符缓冲设置
MOVAH,0AH
MOVDX,OFFSETSTRING2
INT21H;接收键入的字符串2
CRLF
CLD
LEASI,STRING1;字符串1的地址送给SI
MOVCL,[SI+1];字符串1的字符数送给CX
MOVCH,0
BEING:
LEADI,STRING2;字符串2的地址送给DI
MOVDL,[DI+1];字符串2的字符数送给DX
MOVDH,0
J1:
MOVAL,[SI+2];字符串1的第一个字符在字符串2中匹配
CMP[DI+2],AL
JEJ3;匹配成功则跳转
J2:
INCDI;指向字符串2下一个字符
DECDX
JZNOMAT;字符串2完,不匹配
JMPJ1;字符串2没完,重新匹配
J3:
DECCX
JZMATCH;字符串1完,匹配
DECDX
JZNOMAT;字符串2完,不匹配
INCSI;指向串1下一个字符
INCDI;指向串2下一个字符
MOVAL,[SI+2]
CMP[DI+2],AL
JEJ3;匹配,跳转
DECDX
JZNOMAT;字符串2完,不匹配
LEASI,STRING1;重新从串1的第一个字符匹配
MOVCL,[SI+1]
MOVCH,0
JMPJ1
MATCH:
MOVAH,09H;输出匹配信息
MOVDX,OFFSETMESS1
INT21H
JMPNEXT
NOMAT:
MOVAH,09H;输出不匹配信息
MOVDX,OFFSETMESS2
INT21H
NEXT:
MOVAH,4CH;程序终止
INT21H
CODEENDS
ENDSTART
3.从键盘输入数据并显示的数据
为掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。
编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。
程序清单:
DATASEGMENT
MSG1DB'Hex:
','$'
MSG2DB0DH,0AH,'Binary:
','$'
COUNTEQU4
BUFDB4DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,MSG1
MOVAH,9
INT21H
MOVCX,COUNT
MOVSI,0
INPUT:
MOVAH,1;通过四次循环从键盘读入四位十六进制数
INT21H
MOVBUF[SI],AL
DECCX
INCSI
CMPCX,0
JNZINPUT
NEXT3:
LEADX,MSG2
MOVAH,9
INT21H
MOVCX,COUNT
MOVSI,0
NEXT2:
MOVBL,BUF[SI]
CMPBL,'9'
JBEOK;读入的字符<=9转向OK
SUBBL,7;读入字符>=9减7
OK:
PUSHCX
MOVCL,4
SHLBL,CL;逻辑左移4位,低4位à高4位
MOVCX,4;4次循环将当前处理字符的4位二进制输出
NEXT1:
MOVDL,'0'
SHLBL,1
JNCSKIP
INCDL
SKIP:
MOVAH,2
INT21H
LOOPNEXT1
POPCX;
INCSI
LOOPNEXT2;4次循环将4位十六进制数每位转换为对应的4位二进制
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.字符和数据的显示程序
为掌握字符和数据的显示方法。
编写程序,先显示信息:
INPUTSTRING,THEENDFLAGIS$,再接收字符。
如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不技计数。
程序清单:
CRLFMACRO
MOVAH,02H
MOVDL,0DH
INT21H
MOVAH,02H
MOVDL,0AH
INT21H
ENDM
DATASEGMENT
MESS1DB'INPUT$'
MESS2DB'zifuzongshu=$'
MESS3DB'nozifuzongshu=$'
MESS4DB'shuzizifuzongshu=$'
TOTALDW?
DATAENDS
STACKSEGMENT
STADW32DUP(?
)
TOPDW?
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVSP,TOP;初始化
MOVBX,0000H;计数值清0
MOVAH,09H
MOVDX,OFFSETMESS1
INT21H
CRLF
XXX:
MOVAH,01H
INT21H;接收键入字符
CMPAL,20H
JZUUU;是空格键则转UUU
CMPAL,0DH
JNZIII
CRLF;是回车键则转UUU
JMPUUU
III:
CMPAL,30H
JBYYY
CMPAL,39H
JBEVVV;`0-9`转VVV
YYY:
INCBX;计数值加1
VVV:
INCTOTAL
JMPXXX
UUU:
CRLF
MOVAH,09H
LEADX,MESS2;显示字符总数
INT21H
MOVAX,TOTAL
CALLDISP
MOVAH,02H
MOVDL,'H'
INT21H
CRLF;回车换行
MOVAH,09H
MOVDX,OFFSETMESS3
INT21H;显示非数字字符总数
MOVAX,BX
CALLDISP
MOVAH,02H
MOVDL,'H'
INT21H;十六进制数标志
CRLF
MOVAH,09H
LEADX,MESS4;显示数字字符总数
INT21H
MOVAX,BX
SUBTOTAL,AX
MOVAX,TOTAL
CALLDISP
MOVAH,02H
MOVDL,'H'
INT21H
MOVAX,4C00H
INT21H
DISPPPROCNEAR;显示子程序,显示AL中的数按十六进制数方式
MOVBL,AL;AL中数送BL
KKK:
MOVDL,BL
MOVCL,04
ROLDL,CL
ANDDL,0FH
CALLDISPL;显示字节高位
MOVDL,BL
ANDDL,0FH
CALLDISPL;显示字节低位
RET
DISPPENDP
DISPLPROCNEAR
ADDDL,30H;由数值转为参应字符的ASCII码
CMPDL,3AH
JBDDD;是0-9转DDD
ADDDL,27H;是A-F
DDD:
MOVAH,02H
INT21H;显示DL中字符
RET;返回
DISPLENDP;显示子程序,显示AX中的数按十六进制数方式
DISPPROCNEAR
PUSHBX
PUSHCX
PUSHDX
PUSHAX;入栈保存
MOVAL,AH
CALLDISPP;显示高字节
POPAX
CALLDISPP
POPDX
POPCX
POPBX
RET;出栈
DISPENDP
CODEENDS
ENDSTART
四.心得体会:
经过这次课程设计,跟加深了对汇编语言的理解和认识,尤其是DOS系统的功能调用。
这次一共做了4道题目,每一道题都有其难点之处。
在做第二道题字符串匹配时就遇到了一些问题。
字符串的比较命令需用到DS与ES两个段,而DOS的0A功能只能给DS段,所以还需用到字符串的传送指令,这一点一开始确实忽略了,所以花了不少时间。
在做第三个键盘输入数据的设计时,总的思路是不断的比较,一致时再跳入显示环节。
遇到的难题是由于JZ指令的跳转围是-128~127B,而对于输入的数比较的次数较多,导致超出了围,于是用JMP作为中转,才能实现功能。
对于第三道题字符和数据的显示设计,要注意的是由于从键盘上接受的数据是以字符串形式的,所以对于数字的统计需用其对应的ASCII码。
对于第一个接受年月日并显示的设计,对年月日的接受还是以字符串的形式。
总的来说,这次课程设计让我复习了平时忽略的问题,更进一步掌握了DOS以及其他指令的功能调用。
编程之前用框图有利于理清思路。
对于编程思路,我还是坚持自顶向下的编程方法。
这样可以思路清晰,知道已经做到了哪里。
还有就是编程需要细心、耐心,或许编程的时候可能比较快,但调试的可能需要更多的时间、和耐心。
对于调试的技巧我觉得对于找不出的问题,可以试着将程序分割成几个模块,单独编程进行调试。
或许就能找出其中的问题。
这次课程设计既动脑又动手,收获很多。
五.参考文献:
1.荣标,机械工业,《微型计算机原理与接口技术第二版》
2.荣标,《微型计算机原理课程设计指导书》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 报告 li