汇编计算器课程设计报告

发布 2022-10-01 08:04:28 阅读 2086

课设报告。福建工程学院软件学院。

题目: 汇编计算器。

班级: 1301

姓名 学号:

指导老师:日期:

1、设计目的 3

2、概要设计 3

2.1 系统总体分析 3

2.2 主模块框图及说明 3

3、详细设计 4

福建工程学院软件学院。

题目: 汇编计算器。

班级: 1301

姓名 学号:

指导老师:日期:

本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。

用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”)按“=”后输出十进制表示的运算结果。

在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。

此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。

程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

根据题目要求,可以把程序的工作过程划分为运算表达式输入、计算、结果输出三部分。因此在编写程序时可以按此把程序大致划分为三个模块。

输入:界面的显示设置,以及输入的字符问题进行设计。

计算:该模块为计算器的核心部分,其中包括运算级的优先级转换和基本的加减乘除函数的函数的编写。

显示:对其结果进行一个输出显示。

1运算表达式输入。

.加减乘除函数。

1)加法指令指令格式: 加法 add dst, src; (dst)←(src)+(dst)

带进位加法 adc dst, src; (dst)←(src)+(dst)+cf

加1 inc opr; (opr)←(opr)+1

2)减法指令格式:

sub dst,src ; dst)←(dst)-(src)

带进位减法 sbb dst,src ; dst)←(dst)-(src)-cf

减1dec opropr)←(opr)-1

求补neg opropr)←0ffffh-(0pr)+1

比较cmp opr1, opr2opr1)-(opr2)

3)乘法指令乘法运算分为无符号数运算和有符号数运算,各有相应的指令,并使用双操作数。

指令格式:无符号数乘法 mul src;(ax)←(al)×(src)8位数乘法。

dx,ax)←(ax)×(src)16位数乘法。

4)除法指令除法运算分为无符号数运算和有符号数运算,各有相应的指令,并使用双操作数。当除数是8位或16位二进制数时,要求被除数是16位或32位的二进制数。指令格式:

无符号数除法 div src;(al)←(ax)/(src)8位二进制数除法的商。

ah)←(ax)/(src)8位二进制数除法的余数。

或(ax)←(dx,ax)/(src) 16位二进制数除法的商。

dx)←(dx,ax)/(src) 16位二进制数除法的余数。

.输出显示指令格式:

当数值存储区里面剩下一个数值(或者符号存储区里面没有符号)时,运算结束,需要把运算结果输出显示。

分析运算结果的特点:运算结果为一个2进制补码,整数,如果数据长度为16位,则运算结果范围是:0~65535。

运算结果的输出要解决的主要问题是:正负数区分、补码到ascii码转换并输出显示。运算结果的输出流程如图所示。

1)正负数区分。

运算结果有三种情况:正整数、负整数、零。运算结果以补码形式对这三种情况进行统一的存储,显示输出时不同。

负整数前面需要显示“-”号,因此要在进行器转换该程序直接对执行结果一补码形式输出。。另一方面,正整数和零的补码与原码相同。而负整数的补码则不一样。

把负整数进行取补码运算,把它转换为原码,可以实现运算结果统一的ascii码转换输出方法,而不需要分别为正整数和零、负整数分别设计两个不同的ascii码转换程序。

(2)补码到ascii码转换。

计算结果在屏幕上的输出显示实际上是ascii码的输出显示。假设程序采用的数据长度为16位,则运算结果范围是:0~65535,即屏幕最多得显示5位ascii码。

(3)利用除最高位法将一个多位数的各位进行一个输出。

分离方法是先除以10位数-1,得到的商即为最高位,余数为删除最高位后的多位数。接着令余数除以10位数-2,得到的商为次高位,……例如123,其位数是3(个位、十位、百位),则计算过程为:

123/103-1,商是1,余数是23

23/103-2,商是2,余数是3

3/103-3,商是3,余数是0

可见经过三次计算,得到的三个商刚好是对123的各位的分离结果,而且顺序跟输出方向相同。可以直接加30h转换输出,屏幕显示为“123”。

该图的流程程图所示。

把原码转换为ascii码。

这个转换过程实际上跟上文的“数值的补码转换方法”是相反操作。例如要把123在屏幕上输出显示,即要把123的百位、十位、个位分离,得到,然后转换为31h、32h、33h三个ascii码。众所周知,把一位数转换为ascii码只需加30h即可。

整体一个架构可以直观的看出整个计算器界面和基本的加减运算以及输入提示。

主程序模块。

主程序模块首先实现调用子程序加减乘除,优先级运算等,初始化数据段,将寄存器ax,bx,cx,dx初始化赋初值为0,,输入字符或数字并判断,调用子程序aaaa,bb等子程序,判断优先级,调用加减乘除运算子程序对所输入的式子判断出的相应运算符进行运算,输出运算结果,判断是否继续,继续则返回输入,不继续则退出程序。

1.显示计算器界面。

利用09h的功能号调用将所设计的界面直观的显示出来。

源**:tab1 db 13,10,"hui bian ji suan qi she ji$"

tab2 db 13,10," 1 2 3 4 $"

汇编计算器课程设计报告

课设报告。福建工程学院软件学院。题目 汇编计算器。班级 1301 姓名 学号 指导老师 日期 1 设计目的 3 2 概要设计 3 2.1 系统总体分析 3 2.2 主模块框图及说明 3 3 详细设计 4 福建工程学院软件学院。题目 汇编计算器。班级 1301 姓名 学号 指导老师 日期 本课程设计是...

C 课程设计 计算器

c 程序设计课程设计报告。题目 用vc 制作多功能计算器。学生姓名。学号。院 系。专业。2011 年 9 月 9 日。摘要 21 引言 2 1.1 课题背景 2 1.2课程设计目的 2 2 开发工具的介绍 3 2.1关于visual c 3 2.2可行性分析 4 2.3需求分析 4 3 功能说明 4...

VB课程设计计算器

单位学院 系 专业。学号。学生姓名。指导教师。完成日期 月日。摘要。visual basic是近年来在国内外得到迅速推广应用的可视化程序设计语言具有简单易学,功能强效率高等特点。它提供了开发windows应用程序最迅速,最简捷的方法,不但专业人员得心应手的开发工具,而且易于被非专业人员掌握使用。本课...