微机原理课设.docx
《微机原理课设.docx》由会员分享,可在线阅读,更多相关《微机原理课设.docx(12页珍藏版)》请在冰豆网上搜索。
微机原理课设
河北科技大学
课程设计报告
学生姓名学号:
专业班级:
电子信息工程3班
课程名称:
微型计算机原理及应用技术
学年学期:
2014—2015学年第1学期
同组人员:
指导教师:
2014年12月
课程设计成绩评定表
学生姓名
学号
成绩
专业班级
起止时间
2014-12-1至2015-1-1
设计题目
加法练习程序
指
导
教
师
评
语
指导教师:
年月日
目录
一、设计目的----------------------------------------1
二、设计任务与要求----------------------------------1
三、设计内容----------------------------------------2
四、实施效果----------------------------------------11
五、设计体会----------------------------------------11
六、参考资料----------------------------------------12
一、设计目的:
1、掌握汇编语言,会利用汇编语言编写一定功能的程序;
2、熟悉DOS环境以及在DOS下会调试编写好的汇编程序;
3、熟悉常用的DOS功能;
4、小组合作完成设计题目。
二、设计任务与要求:
1、设计加法练习程序演示程序。
2、程序设计基本要求:
1)菜单
内容包括:
①随机输入两个百位数内相加;②输入结果能判断显示结果是否正确;③退出。
2)两个加数显示
按照课程设计要求,两个加数是自由输入的,随机的。
3)结果显示
当输入两个加数的和时:
ⅰ正确输入提示正确,按R进行下一题;ⅱ错误输入提示错误,并输出正确,按R进行下一题。
4)按Q退出程序。
3、完成软件的技术要求。
4、程序设计的流程图。
5、你自己对小组完成设计题目所做的贡献。
在课程设计中我负责输入随机数字显示这部分程序的编写
三、设计内容:
1、使用的DOS功能:
1)显示字符串MOVAH,09H
INT21H;入口参数DS:
DX=缓冲区
2)键盘输入一个字符MOVAH,01H
INT21H;AL=输入的字符
3)终止当前程序并返回调用程序MOVAH,4CH
INT21H;AL=退出码
4)输入字符串MOVAH,0AH
INT21H;入口参数DS:
DX=缓冲区
2、使用的BIOS功能:
1)设置光标位置,出口参数DH=当前字符行号、DL=当前字符列号、CH=光标起始栅线:
MOVAX,03H;
INT10H
2)MOVAL,0AH;在光标位置显示字符
INT10H
3)MOVAH,0;从键盘读字符
INT16H
3、使用工具和软件:
计算机和MASM汇编软件
4、流程图:
5、程序与分析:
DATASEGMENT
SUMDB20
DB20DUP(0)
SUM1DB20;定义人为计算的空间
DB?
DB20DUP(?
)
SUM2DB20
DB20DUP(0);定义和的存储空间
BUFDB'YOUARETURE$'
BUF1DB'YOUAREwrong$'
BUF2DB'tips:
dangchulaiyigeshuhouqingansuiyijanchuxiayigeshu,goodyouluck$'
DATAENDS
STACKSEGMENT
DB30DUP(0)
STACKENDS;%堆栈定义空间
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVDX,OFFSETBUF2;%buf2存于dx中
MOVAH,9
INT21H;%调用九号功能;
Prot1:
MOVDI,OFFSETSUM
CALLHUANHANG;
CALLsuixian;%调用子程序
MOVDL,'+'
MOVAH,2;%调用2好功能显示字符串
INT21H
MOVAH,8
INT21H;%可以利用键盘输入的空隙来改变随机数
ANDAH,00H;%清零
MOVAX,9999
yanshi:
ADCAX,1;%带进位相加
JNZyanshi
CALLsuixian;HUIXIANSHITONGYANGDESHU
MOVDL,'='
MOVAH,2;%显示字符串
INT21H
MOVDX,OFFSETSUM1;开始接受键盘的字符
MOVAH,0AH%调用十号功能,将键盘输入的字符串写到内存缓冲区;
INT21H
ANDAH,00H;%清零
DECDI;%减一
DECDI;%减一
MOVAL,[DI]
INCDI;%加一
ADDAL,[DI];%取加
DAA;%加法调整
ADCAH,00H;%带进位相加
INCDI;下一个单元
MOV[DI],AL;AL放的是低位
INCDI;更高字节的数
MOV[DI],AH;结果存起来,用于比较高位放的是DI比较高的zijie
CALLHUANHANG;%换行
MOVSI,OFFSETSUM1;开始比较
INCSI
INCSI;%SI加2
MOVAL,[DI];最高位的DI
CMPAL,01H;
JNZLIANGWEI;%两位
ADDAL,30H;%变为ASCII
MOVBL,[SI];首个放在SUM1+2中
DECDI;回到低位
CMPAL,BL
JNZKAISHI:
%开始
INCSI
LIANGWEI:
%两位
DECDI
JMPXIA;%跳转
A:
JMPProt1
XIA:
MOVAL,[DI]
MOVCL,4
SHRAL,CL
ADDAL,30H;%高四位dl值转ascii
MOVBL,[SI];
CMPAL,BL
JNZKAISHI;%开始
INCSI
MOVAL,[DI]
ANDAL,0FH;%取dl低四位
ADDAL,30H;%转ascii
MOVBL,[SI]
CMPAL,BL
JNZKAISHI;%开始
MOVDX,OFFSETBUF;%dx取buf
MOVAH,9;%调用九号功能缓冲区字符串显示
INT21H
JIAN:
MOVAH,8;调用键盘
INT21H
CMPAL,'Q'
JZSTOP1
CMPAL,'q'
JZSTOP1
CMPAL,'R'
JZA
CMPAL,'r'
JZA
KAISHI:
%开始
CALLHUANHANG;换行显示错的
MOVDX,OFFSETBUF1
MOVAH,9
INT21H
POPDX
CALLHUANHANG;%换行
CALLJIEGUO;%结果
JMPJIAN;键盘
STOP1:
JMPSTOP
suixianPROC;随机显示函数
CALLRAND;开始调用随机数
MOV[DI],BL;随机数放到sum单元
MOVAL,BL
INCDI;%DI知道减一
MOVCL,4
SHRBL,CL;显示随机数最高位
ANDBL,0FH
ORBL,30H
PUSHAX
MOVDL,BL
MOVAH,2;%调用2号功能将dl里字符串显示出来
INT21H
POPAX
ANDAL,0FH;%显示随机数最低位
ORAL,30H
MOVDL,AL
MOVAH,2
INT21H
RET
suixianENDP
JIEGUOPROC;%显示结果
INCDI;显示高字节的数
MOVAH,[DI];高字节的给AH
CMPAH,01H;%与一比较
JNZProt2
MOVAH,[DI]
ADDAH,30H
MOVDL,AH
MOVAH,2
INT21H
Prot2:
%不等
DECDI
MOVBL,[DI]
MOVAL,[DI]
PUSHBX
MOVCL,4
SHRAL,CL
ADDAL,30H
MOVDL,AL
MOVAH,2
INT21H
POPBX
ANDBL,0FH
ADDBL,30H
MOVDL,BL
MOVAH,2
INT21H
RET
JIEGUOENDP
RANDPROC
PUSHCX
PUSHDX
PUSHAX
MOVAH,0
INT1AH;%时钟入口当前值为0
MOVAX,DX;
ANDAH,3
MOVDL,100
DIVDL
MOVCL,8
SHRAX,CL
MOVCH,10
DIVCH
MOVCL,4
SHLAL,CL
ORAH,AL
MOVBL,AH;组合BCD码已经产生,放在BL当中,AH改成了AL
POPAX
POPDX
POPCX
RET
RANDENDP
HUANHANGPROC
MOVDL,0DH
MOVAH,2;换行输出
INT21H
MOVDL,0AH
MOVAH,2
INT21H
RET
HUANHANGENDP
STOP:
MOVAH,4CH;%结束
INT21H
CODEENDS
ENDSTART
四、实施效果
(1)当程序运行时,随机两个数相加。
(2)输入错误结果时显示界面。
(3)输入正确时显示界面。
(4)当按住R进行下一题的显示。
(5)输入正确结果显示。
(6)按Q退出时界面。
五、设计体会
通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。
通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。
在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。
不可否认,本程序存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的工作也有指导作用。
我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的。
这次课程设计受益非浅,学到了不少知识,同时也认识到自身的不足,需要加强自身训练,学以致用,学会自我总结,吸取教训,积累经验,在学习和实践中来不断的提升自己。
六、参考资料
张雪兰、谭毓安、李元章:
《汇编语言程序设计——从DOS到windows》
朱金钧、麻新旗:
《微型计算机原理及应用技术》机械工业出版社