课设报告
福建工程学院软件学院
题目:汇编计算器
班级: 1301
姓名
学号:
指导老师:
日期:
目录
1、设计目的 (3)
2、概要设计 (3)
2.1 系统总体分析 (3)
2.2 主模块框图及说明 (3)
3、详细设计 (4)
3.1 主模块及子模块概述 (4)
3.2各模块详运算 (4)
4、程序调试 (7)
4.1 运行界面分析 (7)
算法分析 (7)
4.2 调试过程与分析 (9)
5、心得体会 (11)
5.1 设计体会 (11)
5.2 系统改进 (11)
附录: (11)
1、设计目的
本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。
2、概要设计
用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进
制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。
2.1 系统总体分析
在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。
2.2 主模块框图及说明
此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。
程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。
3、详细设计
3.1 主模块及子模块概述
根据题目要求,可以把程序的工作过程划分为运算表达式输入、计算、结果输出三部分。因此在编写程序时可以按此把程序大致划分为三个模块。
输入:界面的显示设置,以及输入的字符问题进行设计
计算:该模块为计算器的核心部分,其中包括运算级的优先级转换和基本的加减乘除函数的函数的编写。
显示:对其结果进行一个输出显示。
3.2 各模块详运算
1运算表达式输入
2.加减乘除函数
(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
减1 DEC OPR ;(OPR)←(OPR)-1
求补NEG OPR ;(OPR)←0FFFFH-(0PR)+1
比较CMP OPR1,OPR2 ;(OPR1)-(OPR2)
(3)乘法指令乘法运算分为无符号数运算和有符号数运算,各有相应的指令,并使用双操作数。
指令格式:
无符号数乘法MUL SRC;(AX)←(AL)×(SRC)8位数乘法
(DX,AX)←(AX)×(SRC)16位数乘法
(4)除法指令除法运算分为无符号数运算和有符号数运算,各有相应的指令,并使用双操作数。当除数是8位或16位二进制数时,要求被除数是16位或32位的二进制数。指令格式:
无符号数除法DIV SRC;(AL)←(AX)/(SRC)8位二进制数除法的商
c++课程设计报告(AH)←(AX)/(SRC)8位二进制数除法的余数
或(AX)←(DX,AX)/(SRC)16位二进制数除法的商
(DX)←(DX,AX)/(SRC)16位二进制数除法的余数
3.输出显示指令格式:
当数值存储区里面剩下一个数值(或者符号存储区里面没有符号)时,运算结束,需要把运算结果输出显示。
分析运算结果的特点:运算结果为一个2进制补码,整数,如果数据长度为16位,则运算结果范围是:0~65535。运算结果的输出要解决的主要问题是:正负数区分、补码到ASCII 码转换并输出显示。运算结果的输出流程如图所示。
(1)正负数区分
运算结果有三种情况:正整数、负整数、零。运算结果以补码形式对这三种情况进行统一的存储,显示输出时不同。负整数前面需要显示“-”号,因此要在进行器转换该程序直接对执行结果一补码形式输出。。另一方面,正整数和零的补码与原码相同。而负整数的补码则不一样。把负整数进行取补码运算,把它转换为原码,可以实现运算结果统一的ASCII 码转换输出方法,而不需要分别为正整数和零、负整数分别设计两个不同的ASCII码转换程序。
(2)补码到ASCII码转换
计算结果在屏幕上的输出显示实际上是ASCII码的输出显示。假设程序采用的数据长度为16位,则运算结果范围是:0~65535,即屏幕最多得显示5位ASCII码。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论