1、微机原理实验报告 汇编语言汇编语言课程设计报告课程设计报告 ( 2012 - 2013 年度第年度第 1 学期学期) 实验名称: 实现加减乘除四则运算的计算器 专业专业 生物医学工程生物医学工程 学生姓名学生姓名 班级班级 学号学号 指导教师指导教师 2 实现加减乘除四则运算的计算器 1 实验目的 深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高 分析问题、解决问题的综合应用能力。通过使用汇编语言设计实现简单计算器,以 此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调 用等汇编语言知识的有效运用 2 实验内容 课题名称:实现加减乘除四则运算的计算器
2、主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行 程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有 加、减、乘、除四项运算功能。 3 实现方法 本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程 序,每运行一次可执行程序,可以实现数的加减乘除四则运算。由自己调用中断输 入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是 加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输 入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用 什么样的方式进行输出,如何实现清屏等也是要解决
3、的问题。 第一步,用 INT 21H 的 1 号功能调用来进行输入。利用 1 号功能调用来输入, 即把单个字符一个个的输入并存储到一个数据区里。我们要做的是两个数的运算, 先认定输入的格式为 1234+5678=或者 1111*2222=,当然如果输入不是这样的格式 计算出来的结果就不一定是我们想要的结果了。在存储的时候也是有选择的存储, 当输入的并非格式里所要求的字符时则报错。 第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算 还是除法运算,即判断输入的运算符是+号、 -号、 *号、 /号中的哪 一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减 乘
4、除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行 计算。 微机原理实验报告 3 第三步,根据计算器程序所要实现的功能完成各个功能模块。设计程序主体部 分,根据主体部分所需的功能模块对各个子模块一一进行设计编写。子模块中包含 有:do_add 加法运算模块,do_sub 减法运算模块,do_mul 乘法运算模块,do_div 除法运算模块,input 输入模块等。 最后还要对这个简易计算器进行功能完善。为了使程序符合我们使用者的操作 习惯,设计当用户根据提示信息输入一个算式后,按下 enter 键或是=符号键 时,程序依据输入的算式进行计算,并将结果显示在屏幕上。如果用户输
5、入错误, 则返回,提示信息让用户重新输入算式,当用户按下 Q 或 q 键时退出程序。在各个 子功能模块设计好的情况下,通过主题模块的合理调用,最终实现一个具有简单运 算功能的计算器。 3.2 程序流程图及说明 此程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,同时 也是我编写的程序的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序开始运行时,首先输出提示语句, 当用户输入后,程序根据所输入的内容进行判断,通过判断的结果来决定调用哪个 功能模块,首先要判断输入的字符是否为 Q 或 q,若是,则退出程序,不是则继续 输入。还要判断输入的是否为 0-9, + , - , *
6、, /这些字符,若不是会报 错,是则将根据运算符号调用相应的功能模块完成运算。最后将运算的结果显示在 屏幕上,并返回主题程序,使用户可以重新输入。 4 程序开始 输入一个算式 Q/q? 0f+- */? 存储数据 判断运算符号 调用运算功能模块 输入出错 N Y Y 输出提示语句 退出 Y N Y 按下 Enter 或=键 显示结果 微机原理实验报告 5 源程序清单 B_P EQU BYTE PTR W_P EQU WORD PTR D_P EQU DWORD PTR CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H ;主程序开始 NEWSTAR: JMP STAR EVEN NUM1 DW 0,0 NUM2 DW 0,0 NUM3 DW 0,0 JGV4 DW 0,0 YSF LABEL WORD YSF1 DB 0 YSF2 DB 0 JUV DB 0 UV DB 0 ;使DS:SI指向第一有效字符 OVERS L