《课程设计报告-纯软件设计出题程序》由会员分享,可在线阅读,更多相关《课程设计报告-纯软件设计出题程序(20页珍藏版)》请在金锄头文库上搜索。
1、 课程设计报告( 20132014年度第一学期)名 称: 微机原理及应用 题 目:纯软件设计出题程序院 系: 控计学院 班 级: 学 号: 学生姓名: 指导教师: 设计周数: 同组人: 成 绩: 日期:2014年1月9日一、课程设计的目的与要求1 通过纯软件编程实现随机抽取10道简单的加减乘除运算题 2 要求给出开始答题时间、答题结束时间以及总用时 3 要求对题目结果进行判断并给出得分二、设计正文1 需求分析 1 . 1 MASM编程软件2. 总体设计 2 . 1 产生两个随机运算数及随机运算符 2 . 2 将运算数A和B以十进制方式输入 2 . 3 产生一个随机运算式 2 . 4 在屏幕上显
2、示开始时间、结束时间及时间差 2 . 5 判断结果的正确与否并给出最终得分 三、课程设计总结1 个人总结 本次课程设计我们做的课题是利用MASM编程软件设计一个自动出题程序,两人一组。整体设计构想由我们两人共同完成,我负责主程序框架以及随机数、屏幕背景、系统时间读取这些部分。对于 主程序框架,它是整个程序的骨架,通过组内商量,我们最终确定了程序的流程:在进行初始化后,要对屏幕背景进行设置,接着确定题目数量、生成随机运算式,然后根据系统算出的正确结果对输入的结果进行判断并给出得分。在程序编写过程中,我也遇到了许多问题,其中包含有许多的调用,如屏幕背景设置、时间的调用等以及随机数的获得。经过反复的
3、修改、查阅资料、百度,我们的程序最终能够完成预期的基本功能。我还负责了程序调试的部分,由于程序是由两个人分开来写的,所以整合在一起后遇到了许多问题,寄存器的使用错乱是最严重的,之后经过一次次的调试,我们的程序最终总算是基本完成了。 通过本次课程设计,我总算学会了编程,学会了使用MASM,也终于体会到了什么叫学以致用。这让我获得了很大的满足感。不过我们的程序还存在不少缺点,对于除法运算,当结果不是整数时,做题时它的结果该怎么书写尚未找到方法,因此我们的程序中只涉及了加减乘这三种运算。2. 团体总结 本次课程设计,我们是两人一组,由于人数的原因,我们没有做太难的课题,只是受网上模拟考试的启发想到了
4、这个课题。两人合作中,互相配合显得尤为重要,在课程设计过程中,我们明确分工又彼此配合,遇到问题积极讨论,或是查阅书籍,或是上网搜索,或是找人询问。在我们的通力合作下,我们解决了许多问题。 对于本次课程设计的结果我们还是比较满意的,我们在此收获了很多。不过,我们的程序还有不足的地方,那就是其中没有除法运算。为了解决问题,我们也进行过积极的讨论,遗憾的是仍然没有解决这一问题。四、参考文献1李继灿.新编16/32位微型计算机原理及应用.清华大学出版社.第4版.2008.72马力妮.80x86汇编语言程序设计.机械工程出版社.第2版.2009.6(2012.1重印)附录(设计流程图、程序、表格、数据等
5、)1、程序流程图 开始初始化做题?Y产生随机数值产生运算符“+”?“-”?“*”?“/”?NNN加减乘除YYYY题目数量T=0T=10?YN存储判断,计分T=T+1结束N 2、程序代码 HUICHE MACRO ;回车换行 MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H ENDMDISP1 MACRO X ;将数字A,B十进制输出 AL LOCAL SHI LOCAL GEE PUSHA MOV AL,X MOV AH,0 CMP AX,10 JAE SHI CMP AX,0 JAE GEESHI: MOV BX,10 DIV B
6、L MOV CH,AH MOV DL,AL ADD DL,30H MOV AH,2 ;屏幕显示 INT 21H MOV AL,CH MOV AH,0 GEE: MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POPA ENDMDISP3 MACRO X ;时间的输出 AL LOCAL SHI2 LOCAL GEE2 PUSHA MOV AL,X MOV AH,0SHI2: MOV BX,10 DIV BL MOV CH,AH MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AL,CH MOV AH,0 GEE2: MOV DL,A
7、L ADD DL,30H MOV AH,2 INT 21H POPA ENDMDISP2 MACRO Y ;将结果十进制输出 AX,先判断结果是几位数 LOCAL QIAN1 LOCAL BAI1 LOCAL SHI1 LOCAL GEE1 PUSHA MOV AX,Y CMP AX,1000 JAE QIAN1 CMP AX,100 JAE BAI1 CMP AX,10 JAE SHI1 CMP AX,0 JAE GEE1QIAN1: MOV BX,1000 MOV DX,0 DIV BX MOV SI,DX ;YUSHU MOV DX,AX ADD DL,30H MOV AH,2 INT
8、21H MOV AX,SI MOV DX,0BAI1: MOV BX,100 DIV BL MOV CH,AH ;YUSHU MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AL,CH MOV AH,0 SHI1: MOV BX,10 DIV BL MOV CH,AH ;YUSHU MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AL,CH MOV AH,0GEE1: MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POPA ENDM YUNSUAN MACRO X,Y,Z ;其中,A=X,B=
9、Y,符号为Z。运算结果存到R中 LOCAL JIA1 LOCAL JIAN1 LOCAL CHENG1 LOCAL CHU1 LOCAL EXIT1 PUSHA MOV AL,X MOV CL,Y MOV BL,Z CMP BL,+ JE JIA1 CMP BL,- JE JIAN1 CMP BL,* JE CHENG1 CMP BL,/ JE CHU1JIA1: ADD AL,CL MOV AH,0 MOV R,AX JMP EXIT1JIAN1: SUB AL,CL MOV AH,0 MOV R,AX JMP EXIT1CHENG1: MOV AH,0 MUL CL MOV R,AX JM
10、P EXIT1CHU1: MOV AH,0 DIV CL MOV AH,0 MOV R,AXEXIT1: POPA ENDMDATAS SEGMENT ;此处输入数据段代码 X DW 0 Y DW 0 ;用来存得分 H DB ? ;开始时间 M DB ? S DB ? WH DB ?;时间差 WM DB ? WS DB ? HA DB ?;结束时间 MA DB ? SA DB ? A DB ? ;第一运算数 B DB ? ;第二运算数 R DW ? ;正确结果的存储 FUHAO DB ?;符号 BUFF DB 6,?,6 DUP(?);用来写输入的结果 R1 DW 0;存写入的结果 ;ARRA
11、Y DB 10 DUP(?),$;存储每题的结果 TIT DB Children Answering System,$ STA DB 1.start to test,$ DERE DB Do you want to check detailed results Y/N,$ QU DB 2.are you ready,please press Sto begin,$ STATIME DB Start Time: ,$ ENDTIME DB End Time: ,$ TTIME DB Total Time: ,$ INFO1 DB Please input correct number,$ TIMU DB Question : ,$ TP DB Total Points: ,$ TMGS DB Qing shu ru ti mu ge shu : ,$ DATAS