微机原理课设加法练习程序文档格式.docx
- 文档编号:19491425
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:11
- 大小:106.27KB
微机原理课设加法练习程序文档格式.docx
《微机原理课设加法练习程序文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理课设加法练习程序文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
课题性质
A.工程设计
课题来源
自拟课题
指导教师
王锋
同组姓名
无
主要内容
随机给出百位数以内的加法算式,并提示输入答案,若正确给出正确提示,若错误给出错误提示,并提示输入答案;
按R键继续下一题,按Q键返回DOS.
任务要求
一切以设计内容为前提进行课程设计实验:
1.设计一个菜单,选项为加法和减法的练习。
2.以获取系统中的秒和百分秒作为两个随机数进行加减运算。
3.将输入的答案和运行结果比较,若相等给出正确提示,若错误给出错误提示,并继续输入答案直到正确为止。
4.提示是否继续下一题,按R键继续下一题,按Q键返回DOS。
参考文献
1.《16/32位微机原理、汇编语言及接口技术(第2版)》---(北京电子工业出版社2003)钱晓捷,陈涛编著
2.《32位微型计算机原理与接口技术》---(北京清华大学出版社2000)仇玉章等编著
审查意见
指导教师签字:
教研室主任签字:
2015年1月10日
一.课程设计实验的目的
课程设计的目的在于更好的锻炼我们的实践能力和考验平时学习的成果。
我们是计算机专业,离不开编写代码。
平时上课所学的知识来自于课本,上机实验相对比较少,所能锻炼的操作能力机会不多。
而课程设计是让我们综合平时课本和实验的知识及经验,自己设计和构造,编写一个相对完整的程序。
这不仅仅是对以前知识的巩固,更是锻炼我们的思维,我们的设计与编写程序的能力。
对于我们以后将会从事的计算机类工作,这能很好的为我们打下坚实的基础,所谓积少成多,每学期都做课程设计,到毕业时我们对于编写一个应用软件或许就能较容易驾驭了。
本次微机应用系统课程设计我的题目是加法练习程序设计,虽然只要求加法运算,但我在该程序里添加了减法运算,使得程序相对不会太单调。
虽然给的编程题目可能会与别人一样,但每个人的想法不一样,在设计时添加自己的想法或许就能使程序更加完善了,这也是课程设计对我们的一种锻炼。
二.实验设计的任务与要求
加法练习设计程序的内容是:
按R键继续下一题,按Q键返回DOS。
按照内容要求,在所学知识内容的基础上设计程序,具体的内容设计要求任务如下:
这次课程设计是在完成设计要求的基础上,添加了减法练习运算,以仔细、认真、规范的态度完成自己课程设计。
三.实验设计的思想
加法练习程序设计,主要工作是产生两个两位数的随机数进行加运算,而怎么产生随机数是该程序的难点。
在搜集了一些资料后发现很多程序用的随机数是伪随机,是一个比较复杂算法,而不使用算法获得随机数的方法就是获取系统的时间。
在翻阅课本后得知movah,2chint21h语句可以得到系统时间,在考虑后认为秒和百分秒比较适合,因为在短时间内这两个时间变化的多一些,比较适合用于随机数。
Dh所存的数对应的是秒,Dl所存的数对应的是百分秒。
加法直接将两个随机数相加即可,但减法就相对麻烦些,因为会出现第一个随机数比第二个随机数小得到结果为负数。
为了解决这一问题,在数据段定义了两个变量,用来存放减数和被减数。
在获取随机数时先不显示运算式,先将随机数的值给变量num1和变量mum2,如果相减结果小于0则转回去继续取随机数,直到取得随机数相减记过大于0,则显示运算式继续后面的程序运行。
相对较难的部分解决后则是将整个程序流程串起来,先是显示选择加或减运算,产生的随机数并显示相应的运算式;
再是输入结果,对结果进行判断给出对或错的提示,错误时提示继续输入结果,对则继续下一步;
最后选择是否继续下一题,R返回最初加减运算选择,Q则退出。
四.实验环境
4.1运行环境
(1)软件环境
●操作系统:
Windows7
(2)硬件环境
●处理器:
InterCorei5
●内存:
4.00GB
●硬盘空间:
500GB
4.2开发工具与编程语言
(1)开发工具:
MasmforWindows集成实验环境V2012
(2)编程语言:
汇编
五.实验方案
先是设计了一个菜单,用于选择进行加法运算还是减法运算,菜单显示来自数据段的字符串。
选择后变转到jiafa或jianfa程序段中,调用产生随机数的random1(秒)和random2(百分秒)程序段中并显示运算式。
将输入的答案通过show程序段将其转换成ASCII码显示出来,再由get程序段将输入的答案转换成对应的数,最后转换成数的答案与计算机运算结果比较,如果相减为0则对,提示correct,否则输入的答案是错的,提示error并让其继续输入答案直到正确为止。
在答案正确后,提示“Continue(R)orExit(Q)?
”是否继续下一题,按R继续下一题,按Q则返回DOS。
六.
实验流程图
七.实验源代码
DATASSEGMENT
msgdb'
*******************************'
0dh,0ah,'
$'
addpdb'
*1.Additiontopractice*:
'
subpdb'
*2.Subtractiontopractice*:
seledb'
Inputyourchioce:
'
corrdb20h,20h,'
Correct!
'
errodb20h,20h,'
Error!
rorqdb'
Continue(R)orExit(Q)?
exitdb0dh,0ah,'
Pressanykeytoquit...'
sumdw0
num1dw0
num2dw0
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
again:
movdx,offsetmsg
movah,09h
int21h
movdx,offsetaddp
int21h
movdx,offsetsubp
select:
callhuan
movdx,offsetsele
movah,1
cmpal,31h
jzjiafa
cmpal,32h
jzjianfa
gono:
movdx,offsetrorq
movah,09h
int21h
key:
movah,1
int21h
cmpal,72h
jzselect
cmpal,71h
jnzkey
callhuan
movdx,offsetexit
movah,4ch
jiafa:
callrandom1
movsum,ax
callshow
movdl,'
+'
movah,2
callrandom2
addsum,ax
jmpnext
jianfa:
movnum1,ax
sbbsum,ax
movnum2,ax
cmpsum,0
jljianfa
movax,num1
-'
movax,num2
next:
='
movah,2
callinput
cmpbp,sum
jzdone
movdx,offseterro
done:
movdx,offsetcorr
movah,9
jmpgono
random1:
movah,2ch
moval,dh
movah,0
ret
random2:
moval,dl
show:
movax,ax
aam
orax,3030h
xchgah,al
movdx,ax
movdl,dh
input:
movbp,0
movcx,3
get:
int16h
cmpal,0dh
jzok
cmpal,'
0'
jbget
9'
jaget
movah,0eh
int10h
andax,0fh
xchgbp,ax
movbx,10
mulbx
addbp,ax
loopget
ok:
cmpcx,3
huan:
movdl,0dh
movdl,0ah
ret
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
八.实验结果
图1菜单
图2加法练习运算
图3减法练习运算
图4运算错误和退出
九.实验总结
加法练习程序设计可能较于平时的一些实验相对简单些,但这次的课程设计是由自己构思和设计的,遇到麻烦的地方也要靠自己去解决,不像平时实验那样,大家完成的内容都一样能够探讨。
所以考验自我学习能力和编程能力,对程序结构流程的设计能力,做出自己满意的程序。
通过课程设计,我们将本学期所学的微机原理、汇编语言的知识重新温习和巩固,加深了我们对知识的理解,熟练了汇编语言的运用,提高了我们的编程与设计能力。
十.参考文献
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 加法 练习 程序