微机原理与汇编语言程序设计汇编实验报告

发布时间:2023-03-10 05:12:39   来源:文档文库   
字号:

(此文档为word格式,下载后您可任意编辑修改!

昆明学院课程设计(大作业)
名:陈娟业:计算机应用技术任务起止日期:2014.6.23——2014.6.27课程设计题目:简单计算器程序设计
课程设计要求:
1、在屏幕上显示一个窗口,将光标定位在窗口内2、在窗口内输入一个表达式(单项运算)
3、程序根据表达式计算结果,并在表达式的后面显示一个“=”和运算结果工作计划及安排:
1次绘制程序流程图。2次用编写程序。3次用调试运行程序。4次编写课程设计说明书指导教师签字





院(系):信息技术号:


课程设计(大作业)成绩
学号:


姓名:陈娟



指导教师:周曦
课程设计题目:简单计算器程序设计
总结:经过一个星期的努力,这次课程设计终于成功完成了。我的心里是满满的喜悦,虽然在设计的过程中遇到了很多的困难,例如BIOS调用INT16H子程序完成清屏、设置显示方式、设置窗口等操作,还有就是由于自己的粗心总是把程序中部分的单词打错,也给程序设计的编译运行带来麻烦,浪费了许多的时间与精力。另外就是程序的编写十分复杂,工作量很大,所以编写程序就变成了一项十分困难的事。但在不断的查阅资料,询问学长学姐逐渐做出这份课程设计的过程中,我觉得这些付出很值得,也对微机原理与汇编语言程序设计有了更深入的了解,。编写程序的时间里也顺便复习了在这一学期中所学的微机原理与汇编语言,为后一星期的期末考试做了一些复习。

通过本次课程设计我学到了不少新的东西,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。总的来说,做完一个简单计算器程序设计的收获不仅仅是分数上的,对以后的学习方式方法很同学的学习合作也有了更深的看法。

指导教师评语:成绩:填表时间:






指导教师签名:


目录
1题目分析.............................................52基本理论.............................................53总体设计............................................63.1本程序的功能结构图..............................63.2字符输入及存储设计..............................83.3加、减、乘、除法运算的判断设计.................83.4加、减、乘、除法运算的设计.....................94实验器材............................................105方法步骤............................................116成效分析............................................116.1运行界面分析...................................116.2调试过程及分析.................................137心得体会............................................148参考文献............................................149附录................................................14

课程设计(大作业)报告
一、题目分析
本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。重点和难点主要包括以下几个方面:1利用BIOS调用中INT16H调用中的子程序完成清屏、设置显示方式、设置窗口等操作。


2利用INT21HDOS系统功能调用中的键盘输入接收十进制操作数和运算符由程序完成字符转换为二进制数,并存储起来。3根据运算符完成运算,由程序在屏幕上显示运算结果。1、十进制数转换为二进制数过程如下:
1BX0.2从键盘接收一个按键的ASCIIAL中,并判断是否为09之间的字符,若不是转退出;否则将AL中内容减30H转换为相应数字的二进制数,并扩展到AX中,然后将BX中内容乘以10后,再加上AX的内容。
3转(2)继续执行
因此程序退出后,BX中的内容即为所输入十进制数的二进制值。例如:首先将BX0后,先输入数字“5,则(AL=35H,属于09之间的数字,减30H后,AL=05H,扩展后,AX=0005HBX乘以10后,加上AX中的内容,BX=0005H
然后输入数字“8,则(AL=38H,属于09之间的数字,减30H后,AL=38H,扩展后,AX=0008HBX)乘以10后,加上AX中的内容,BX=0037H,为十进制数“58”的二进制值。
十进制数显示过程如下(被显示的数据<9999
1)将被显示的内容送入BX中;
2BX除以1000,余数送BX,商在AL中,范围为0~93)显示AL中的内容;
4BX)除以100,余数送BX,商在AL中,范围为0~95)显示AL中的内容。以此类推,直到分离出个位数字为止。在这里有一个特殊问题需要讨论:例如“53”这个十进制数,除以1000100的商都为0,不应显示。为了能够实现高位的“0”不显示,程序中设置一个标志M,初始值都设置为1。若M=1且商为0,则这个0不现实;若M=1商不为0,则说明这是第一个非0数字,开始显示,并将M设置为0;若M=0则商值都显示。如果结果本身就是0,则个位的0显示。
二、基本理论
本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运

算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
首先我们要解决的是输入问题,这里我们用INT21H的一号功能调用来进行输入;然后我们要进行的是判断是进行何种运算,当输入的运算符号不是+-*/”中的一种时,则报错,提示重新输入。当输入的是qQ时,则清屏。由于运算过程中出现的进借位问题,会导致输出的结果为一位数,二位数,或者是负数,所以在选择输出的方式时功能调用会很不方便,因为功能调用要求有一个输出字符的缓冲区,由于输出的结果形式太多,缓冲区太难确定,而且若结果为负数,负号也得事先进行设置,所以单字符输出是一个合理的选择。最后还要对这个简易计算器进行功能完善,例如为了使程序符合我们使用者的操作习惯,我们可以添加按回车键换行输入,即当键入回车键后,可以换行重新输入;可以设置按Qq键清屏。
三、总体设计
3.1本程序的功能结构图如图3-1
3-1功能结构图
程序设计流程图
该程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,时也是我编写的程序的一个总体的框架。通过流程图,可以看出程序开始运行时,首先输出提示语句,再输入字符,并判断输入的字符是否为Qq,若是,则清屏重新输入,否则继续输入;判断输入的是不是回车键,若是就回车换行输入,不是则继续输入;判断输入的是否为0~9+-=这些字符,若不是会报错,是则将其存储到定义的数据区BX里面,再判断如果输入的不是=功能键,继续输入,若是,则判断是做加法运算还是减法运算,最后输出结果,并重新输入,继续上面的步骤。
3.2字符输入及存储设计利用INT21H1号中断一个一个地输入字符,并将输入地字符和Qq较,如果相等则清屏并重新输入,不等就判断输入的字符是否为0DH即回车键对应的ASCII码值,再看输入的是否为0~9+-=这几个字符,若是则存储,若不是就在屏幕上输出错误提示,程序如下:
CHARPROCNEAR

MOVBX,0NEWCHAR:
MOVAH,01HINT21H;通过键盘输入一个十进制数CMPAL,30HJLEXITCMPAL,39HJGEXIT;输入字符不在0-9之间,转结束SUBAL,30H否则减30HASCII转化为二进制
MOVAH,0;扩展至AXXCHGAX,BXMOVCX,10MULCXXCHGAX,BXADDBX,AX;完成(BX)×10+AX,结果送入BX
JMPNEWCHAR;转NEWCHAREXIT:RETCHARENDP3.3加、减、乘、除法运算的判断设计由于输入字符的格式固定为两位数加两位数的格式,则只需把存在BUF数据区的第三个字符提出来并与加号的ASCII码值进行比较即可判断为加法过算还是减法运算了,若相等则为加法过算不等则为减法运算,具体程序实现如下:
ADD_TOPROCNEARCALLCHAR调子程序CHAR完成第一个运算转换MOVX,BX;第一个数送X单元中
CMPAL,2DHJZMINU运算符=“-”,MINU,执行

减法
CMPAL,2AHJZMUL_运算符=“*”,MUL_,执行乘法
CMPAL,2FHJZDIV_;运算符=“/,转DIV_,执行除
CMPAL,51HJZEXIT8CALLCHARCALLCR_MOVY,BXADDBX,XJMPTO_3.4加、MINU:CALLCHARCALLCR_MOVY,BXMOVBX,XCMPBX,YJLT_SUBBX,YJMPTO_MUL_:CALLCHARCALLCR_MOVY,BXMOVAX,XAL)=“Q”,转EXIT8否则调子程序CHAR输入第2个数;调子程序CR_,显示“=”;执行加法运算,结果送入BX;转TO_减、乘、除法运算的设计
;调子程序CHAR,输入第2个数;调子程序CR_,显示“=”;第二个数送入Y单元;被减数<减数,转T_;否则完成XY,结果送入BX;转TO_,显示运算结果;调子程序CHAR,输入第2;调子程序CR_,显示“=”;第二个数送入Y单元

MULY;完成X*YMOVBX,AX;结果送入BX
JMPTO_TO_,显示运算结果
DIV_:CALLCHAR;调子程序CHAR,输入第2CALLCR_;调子程序CR_,显示“=”MOVY,BX;第二个数送入Y单元MOVDX,0MOVAX,XDIVY;完成X/YMOVBX,AX;结果送入BX
JMPTO_;转TO_,显示运算结果
T_:MOVDL,2DHMOVAH,02HINT21H;显示“-
MOVBX,YSUBBX,X;完成Y-X,结果送入BX
TO_:CALLBIN;调BIN,显示运算结果
四、实验器材
1.硬件环境:微型计算机(Intelx86系列CPU)一台2.软件环境:Windows98/2000/XP操作系统

任意一种文本编辑器(EDITNOTEPAD(记事本)UltraEDIT等)汇编程序(MASM.EXE连接程序(LINK.EXE调试程序(DEBUG.EXE

文本编辑器建议使用EDITNOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用DEBUG.EXE
五、方法步骤


1、用EDIT建立汇编语言源程序2、用MASM汇编生成目标文件3、用LINK进行连接生成可执行文件4、程序的运行
六、成效分析
6.1运行界面分析

6.1-1运行界面

6.1-2清零界面




6.1-3程序运算状态界面
6.2调试过程及分析


本文来源:https://www.2haoxitong.net/k/doc/0343e2f7294ac850ad02de80d4d8d15abe23008a.html

《微机原理与汇编语言程序设计汇编实验报告.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式