计算器设计.docx

上传人:b****3 文档编号:6249091 上传时间:2023-05-09 格式:DOCX 页数:19 大小:121.87KB
下载 相关 举报
计算器设计.docx_第1页
第1页 / 共19页
计算器设计.docx_第2页
第2页 / 共19页
计算器设计.docx_第3页
第3页 / 共19页
计算器设计.docx_第4页
第4页 / 共19页
计算器设计.docx_第5页
第5页 / 共19页
计算器设计.docx_第6页
第6页 / 共19页
计算器设计.docx_第7页
第7页 / 共19页
计算器设计.docx_第8页
第8页 / 共19页
计算器设计.docx_第9页
第9页 / 共19页
计算器设计.docx_第10页
第10页 / 共19页
计算器设计.docx_第11页
第11页 / 共19页
计算器设计.docx_第12页
第12页 / 共19页
计算器设计.docx_第13页
第13页 / 共19页
计算器设计.docx_第14页
第14页 / 共19页
计算器设计.docx_第15页
第15页 / 共19页
计算器设计.docx_第16页
第16页 / 共19页
计算器设计.docx_第17页
第17页 / 共19页
计算器设计.docx_第18页
第18页 / 共19页
计算器设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算器设计.docx

《计算器设计.docx》由会员分享,可在线阅读,更多相关《计算器设计.docx(19页珍藏版)》请在冰点文库上搜索。

计算器设计.docx

计算器设计

 

计算机与信息工程学院

《汇编语言》课程设计论文

 

设计题目计算器设计

专业计算机科学与技术

班级控制12-1班

学号21

姓名

指导教师

起止日期2014.06.16-2014.06.27

成绩

黑龙江科技大学

课程设计任务书

一、设计题目计算器的设计

二、设计的主要内容:

将+,-,*,/在提示信息以1,2,3,4的中显示出来,通过输入1,2,3,4中的一个字符确定运算的性质,并输入两个数,将运算后以字符串的形式输出。

3、指导教师评语:

成绩:

摘要

计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。

想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。

用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。

通过对各种指令的合理使用,设计各个功能模块。

当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。

关键词:

计算工具,汇编语言,输入输出

Abstract

Calculatorisoneofthemostsimpletools,simplecomputingdeviceshaveadd,subtract,multiplyanddividefourarithmeticfunctions.Wantstouseassemblylanguagetoachieveasimplecalculator,mustbebasedonthedatastorage,theuseofregisters,subtractingrelatedinstructions,andthecallingofmoduleassemblylanguageknowledgetouse,inordertorealizeabasicfunctionperfect,friendlyinterface,operationsimplecalculator.Inassemblylanguagetoachieveasimplecalculatoralsoinvolvesthedesignoftheinputandoutputmodule,youcanmultiply,add,subtractanddividejudgment,andoutofthedesignprocessofjudgment.Throughtherationaluseofallkindsofinstructions,eachfunctionmoduledesign.Whenimplementingtheprogrammodule,programthroughthecallfinallyrealizeasimplecalculator.

 

Keywords:

Computertools,assemblylanguage,inputandoutput

 

目录

1.背景分析及意义II

2.总体设计思想1

3.完成的主要功能2

4.软硬件环境要求2

5.程序流程图2

6.使用说明3

7.设计总结5

8.参考文献6

9.程序清单7

 

1.背景分析及意义

计算器是我们最常用到的工具,而学好汇编语言,会给我带来更加深刻的认识,汇编语言正以它的魅力吸引着我,通过实验我不仅仅能在学习当中,找到更多的快乐,而且还你能考验着我们的合作和分析能力,就拿计算器来说,通过两周的学习,我不仅仅你能够,用汇编语言,把这个实验做成功,而且可以用一些简单的的小转化程序,实现小的数制转化的实验,这不仅仅考验着我的耐性,而且对我以后的学习会有很大的帮助。

2.总体设计思想

(1)通过int21h的9号功能将程序的提示信息显示在屏幕上

(2)将输入的字符保存在[flag]中,用于判断做出何种运算。

(3)依次输入两个不超过两位的十进制数的字符串。

(4)通过转化程序将两个字符串转化为相应的十进制数,并分别保存在

[array],[array+2]为地址的字单元当中。

(5)将[flag]分别与‘+’,‘-’,‘*’,‘/’的ASCII码作比较,用于确定将要进行的运算。

(6)将运算后的结果保存在ax当中,通过转化将ax当中的十进制数转化为相应的字符的ASCII码,保存在[result]~[result+4]当中,并以'$'作为结束。

(7)通过int21h的9号功能将结果字符输出显示在显示器上.。

 

3.完成的主要功能

汇编,连接,运行成功后,会将一个提示框显示在屏幕上,输入1,

然后输入两个数,实现求和运算;输入2,输入两个数,实现求差运算,输

3,输入两个数,实现求积运算;输入4,输入两个数,实现求商运算,输入

或者其他键,都退出程

4.软硬件环境要求

(1)程序运行条件

用汇编语言编写出完整的程序,然后编译,分步运行,调试每一部分的程序,然后把代码写到记事本上,改一下文件的扩展名.asm。

然后将源程序用编译工具masm进行汇编,当显示0错误,0警告生成一个后缀为.obj,就可以进入连接环节,将源程序与目标程序连接,将生成,一个后缀为.exe的文件,接下来,就可以直接将文件名输入,然后回车,然后代码如果没有错误,就会达到预期的效果注意运行的程序和运行的工具要放在一个文件里。

(2)所需工具软件

所需要的工具有:

tddebug.exe,,link.exe,run.exe,obj.exe等工具

 

5.程序流程图如图1所示

 

否否

退出

图1,主程序流程图

6.使用说明

输出截图

(1)图2.运行程序后,没按按键前的界面

(2)图3.按1显示的界面

 

图2,运行后按键前的状态

图3,将99与09执行加法的界面

7.设计总结

通过这一次的汇编实训,我收获到了很多,对常用汇编指令有了深刻的认识并且能够合理的运用,对功能调用指令也有了认识和了解。

首先是对汇编语言性质的认识,汇编语言是低级语言,是与各种寄存器和堆栈联系紧密的机器底层语言

在我学习汇编语言之前我也学过其他的高级语言,接触汇编之后感觉这是门复杂的课程,较之高级语言,它代码量大,难懂。

经过这次课程设计之后我了解到只要认真投入地去思考机器是如何进行逻辑思考的并且熟悉指令,汇编语言的趣味性比高级语言更强。

通过这次对汇编的深刻了解,我发现汇编程序其实还是很有趣味的。

首先他指令的严谨性比之高级语言要强很多,而且他的指令简单,一条指令,最多有一个指令操作符,目的操作数和源操作数,相对高级语言的长程序还是比较简单的,至于难懂,我认为对汇编熟悉后,基本上还是很容易理解的。

这次的实训,巩固和加深课堂所学知识;同时将课本上的理论知识和实际应用有机的结合起来,培养我们分析和解决实际问题的能力;通过对汇编语言程序代码的阅读、修改、设计,理解和掌握复杂的汇编语言应用程序的编程,提高实践编程能力。

通过对汇编程序的深入的剖析,我明白了,汇编程序的魅力,它不仅仅考验着自己的耐力和解决事情的能力,而且还能带给你更多的宝贵的经验,同时对我的心理素质,和逻辑思维能力和组织你能力,表达能力,有较大的提高。

8.参考文献

[1]王成瑞,汇编语言设计,北京:

高等教育出版社,2003

[2]钱晓捷。

汇编语言程序设计(第二版),北京:

电子工业出版社,2005

[3]沈美明,温东婵,IBM-PC汇编语言程序设计(第二版)北京:

清华大学出版社,2001

[4]HydeR.汇编语言艺术,北京大学出版社,2005

[5]雷金辉,汇编语言程序设计,重庆:

重庆大学出版社,2001

9.程序清单

DATASEGMENT

INFO3DB13,10,'$'

BINFO0DB13,10,'*1.ADD*$'

BINFO1DB13,10,'*2.SUB*$'

BINFO2DB13,10,'*3.MUL*$'

BINFO3DB13,10,'*4.DIV*$'

CINFO0DB13,10,'*1.INPUTTHEFIRSTNUMBER*$'

CINFO1DB13,10,'*2.INPUTTHESECONDNUMBER*$

BUFFDB3

DB0

DB10DUP(0)

ARRAY1DB13,10,'PLEASEINPUTTHEFIRSTNUMBER:

$'

ARRAY2DB13,10,'PLEASEINPUTTHESECONDNUMBER:

$'

ARRAYDW2DUP(0)

RESULTDB10DUP(0),'$'

CRLFDB0DH,0AH,'$'

FLAGSDB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX;将数据段装入ds

JMPAB

EEXIT:

;实现退出功能的子程序

MOVAH,4CH

INT21H

AB:

CALLTWOMENU

MOV[FLAGS],0FFH;标志位置0ffh

MOVAH,1;从键盘输入一个字符并显示

INT21H

CMPAL,31H

JBEEXIT

CMPAL,34H

JAEEXIT;输入的字符与‘1’和‘3’作比较

MOV[FLAGS],AL;将输入的字符保存在标志位当中

MOV[ARRAY],0FFH

MOV[ARRAY+2],0FFH

A1:

MOVDX,OFFSETARRAY1

CALLINPUTNUMBER;调用子程序将array字符串显示出来,并

;输入第一个数

CMPCX,0

JZEEXIT

MOVWORDPTR[ARRAY],AX;将ax中的内容送给[array]字单元

CALLJISHUAN

JCAB

A2:

MOVDX,OFFSETARRAY2;将array2的首地址送给dx

CALLINPUTNUMBER

CMPCX,0;将输入的字符个数与cx作比较

JZEEXIT

MOVWORDPTR[ARRAY+2],AX

CALLJISHUAN

JCAB

ABCPROC

MOVCH,0

MOVBX,OFFSETBUFF

MOVCL,[BX+1];将缓冲区的第二个字节单元的数送

;给cl

CMPCX,0

JZABCD

PUSHCX

ADDBX,2

PUSHBX

L0:

SUBBYTEPTR[BX],30H;将字符转化为相对应的数字

INCBX

LOOPL0

POPBX

MOVAX,0

MOVCH,0

MOVCL,[BX-1]

L1:

MOVDL,10

MULDL

ADDAL,BYTEPTR[BX];将转化后的数保存在al中

INCBX

LOOPL1

POPCX

ABCD:

RET

ABCENDP

DEFPROC

MOVSI,OFFSETRESULT;将有效地址result送给si

ADDSI,4

MOVWORDPTR[SI+1],"$"

MOVCX,5

AG1:

MOVDX,0

MOVBX,10

DIVBX

PUSHDX

ADDDL,30H;将数字转化为相对应字符

MOV[SI],DL

DECSI

POPDX

LOOPAG1

MOVCX,4

AG3:

INCSI

MOVAL,[SI]

CMPAL,30H

JNZNOZEARO

LOOPAG3;通过循环,找出result~result+4字单

;元第一个不为零的字符

INCSI

NOZEARO:

CALLDISPCRLF

MOVDX,SI

MOVAH,9

INT21H

RET

DEFENDP

DISPCRLFPROC

MOVDX,OFFSETINFO3

DISPINFO:

MOVAH,9

INT21H

RET

DISPCRLFENDP

TWOMENUPROC;显示提示框子程序

CALLDISPCRLF

MOVDX,OFFSETBINFO0

CALLDISPINFO

MOVDX,OFFSETBINFO1

CALLDISPINFO

MOVDX,OFFSETBINFO2

CALLDISPINFO

MOVDX,OFFSETBINFO3

CALLDISPINFO

MOVDX,OFFSETBINFO4

CALLDISPINFO

CALLDISPCRLF

RET

TWOMENUENDP

INPUTNUMBERPROC;输入子程序

MOVAH,9

INT21H

MOVDX,OFFSETBUFF;将buff的地址赋值给dx用于输入数

;字

MOVAH,0AH

INT21H

CALLABC

RET

INPUTNUMBERENDP

JISHUANPROC

CMP[ARRAY],0FFH;判断是否输入数字

JZNNN

CMP[ARRAY+2],0FFH

JZNNN

CMP[FLAGS],32H

JZISADD

CMP[FLAGS],31H;与减号的ascii作比较

JZSSUB

CMP[FLAGS],33H;与乘号的ascii作比较

JZISMUL

JMPISDIV

NNN:

CLC

RET

ISADD:

;进行加法运算的子程序

MOVBX,WORDPTR[ARRAY]

MOVAX,WORDPTR[ARRAY+2]

ADDAX,BX

JMPDISP

ISSUB:

;进行减法运算的子程序

MOVAX,WORDPTR[ARRAY];将[array]字单元中的内容送ax

MOVBX,WORDPTR[ARRAY+2]

CMPAX,BX

JBSMALL

SUBAX,BX

JMPDISP;调用disp子程序将所得的差值转化为

;字符

SMALL:

SUBBX,AX

MOVAX,BX

JMPDISP;将ax与bx中的数进行无符号减法

ISMUL:

;进行乘法运算的子程序

MOVAX,WORDPTR[ARRAY]

MOVBX,WORDPTR[ARRAY+2]

MULBX

MOVDX,0

JMPDISP

ISDIV:

;进行除法运算的子程序

MOVAX,WORDPTR[ARRAY]

MOVBX,WORDPTR[ARRAY+2]

MOVDX,0

DIVBX

MOVDX,0

DISP:

CALLDEF

STC;置进位位为1

RET

JISHUANENDP

EEXIT1:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2