微机原理课设加法练习程序.docx

上传人:b****6 文档编号:4537199 上传时间:2022-12-01 格式:DOCX 页数:12 大小:170.25KB
下载 相关 举报
微机原理课设加法练习程序.docx_第1页
第1页 / 共12页
微机原理课设加法练习程序.docx_第2页
第2页 / 共12页
微机原理课设加法练习程序.docx_第3页
第3页 / 共12页
微机原理课设加法练习程序.docx_第4页
第4页 / 共12页
微机原理课设加法练习程序.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

微机原理课设加法练习程序.docx

《微机原理课设加法练习程序.docx》由会员分享,可在线阅读,更多相关《微机原理课设加法练习程序.docx(12页珍藏版)》请在冰豆网上搜索。

微机原理课设加法练习程序.docx

微机原理课设加法练习程序

 

课程设计

 

课程设计名称:

微机应用系统课程设计

专业班级:

计科1204班

********

学号:

************

*******

课程设计时间:

2014.12.22-2015.1.3

 

计算机科学与技术专业课程设计任务书

学生姓名

张婷婷

专业班级

计科1204班

学号

201216010433

题目

加法练习程序设计

课题性质

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。

按照内容要求,在所学知识内容的基础上设计程序,具体的内容设计要求任务如下:

1.设计一个菜单,选项为加法和减法的练习。

2.以获取系统中的秒和百分秒作为两个随机数进行加减运算。

3.将输入的答案和运行结果比较,若相等给出正确提示,若错误给出错误提示,并继续输入答案直到正确为止。

4.提示是否继续下一题,按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*:

',0dh,0ah,'$'

subpdb'*2.Subtractiontopractice*:

',0dh,0ah,'$'

seledb'Inputyourchioce:

','$'

corrdb20h,20h,'Correct!

',0dh,0ah,'$'

errodb20h,20h,'Error!

',0dh,0ah,'$'

rorqdb'Continue(R)orExit(Q)?

',0dh,0ah,'$'

exitdb0dh,0ah,'Pressanykeytoquit...',0dh,0ah,'$'

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

movah,09h

int21h

movdx,offsetsubp

movah,09h

int21h

movdx,offsetmsg

movah,09h

int21h

select:

callhuan

movdx,offsetsele

movah,09h

int21h

movah,1

int21h

cmpal,31h

jzjiafa

cmpal,32h

callhuan

jzjianfa

gono:

movdx,offsetrorq

movah,09h

int21h

key:

movah,1

int21h

cmpal,72h

jzselect

cmpal,71h

jnzkey

callhuan

movdx,offsetexit

movah,09h

int21h

movah,4ch

int21h

jiafa:

callhuan

callrandom1

movsum,ax

callshow

movdl,'+'

movah,2

int21h

callrandom2

addsum,ax

callshow

jmpnext

jianfa:

callrandom1

movsum,ax

movnum1,ax

callrandom2

sbbsum,ax

movnum2,ax

cmpsum,0

jljianfa

movax,num1

callshow

movdl,'-'

movah,2

int21h

movax,num2

callshow

jmpnext

next:

movdl,'='

movah,2

int21h

callinput

cmpbp,sum

jzdone

movdx,offseterro

movah,09h

int21h

jmpnext

done:

movdx,offsetcorr

movah,9

int21h

jmpgono

random1:

movah,2ch

int21h

moval,dh

movah,0

ret

random2:

movah,2ch

int21h

moval,dl

movah,0

ret

show:

movax,ax

aam

orax,3030h

xchgah,al

movdx,ax

movah,2

int21h

movdl,dh

int21h

ret

input:

movbp,0

movcx,3

get:

movah,0

int16h

cmpal,0dh

jzok

cmpal,'0'

jbget

cmpal,'9'

jaget

movah,0eh

int10h

andax,0fh

xchgbp,ax

movbx,10

mulbx

addbp,ax

loopget

ok:

cmpcx,3

ret

huan:

movdl,0dh

movah,2

int21h

movdl,0ah

movah,2

int21h

ret

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

八.实验结果

图1菜单

图2加法练习运算

图3减法练习运算

图4运算错误和退出

九.实验总结

加法练习程序设计可能较于平时的一些实验相对简单些,但这次的课程设计是由自己构思和设计的,遇到麻烦的地方也要靠自己去解决,不像平时实验那样,大家完成的内容都一样能够探讨。

所以考验自我学习能力和编程能力,对程序结构流程的设计能力,做出自己满意的程序。

通过课程设计,我们将本学期所学的微机原理、汇编语言的知识重新温习和巩固,加深了我们对知识的理解,熟练了汇编语言的运用,提高了我们的编程与设计能力。

十.参考文献

1.《16/32位微机原理、汇编语言及接口技术(第2版)》---(北京电子工业出版社2003)钱晓捷,陈涛编著

2.《32位微型计算机原理与接口技术》---(北京清华大学出版社2000)仇玉章等编著

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1