汇编语言课程设计——计算器讲解
汇编语言程序设计————计算器

课程设计说明书题目: 表达式计算器学号:班级: 计算机创新实验班姓名:廖福轩目录一.设计内容 (2)二.设计方案 (2)1、主程序模块、 (2)2、赋权值模块、 (2)3、加减乘除运算子程序模块、 (2)4、调用赋权宏子程序模块、 (2)5、回车换行宏模块、 (2)6、9号功能显示字符串宏模块、 (2)三.设计框图 (3)四.程序代码 (4)五.运行结果 (9)六.设计总结 (9)计算器汇编语言程序设计一.设计内容从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能就是三位或四位十进制),+-*/位置任意。
并要求程序能反复执行直道对“还要继续不?(y/n)”之类的提示回答“n”或“N”为止。
四则运算主要包括以下几个模块:(1)主程序模块、(2)赋权宏模块、(3)加减乘除运算子程序模块、(4)调用赋权宏子程序模块、(5)回车换行宏模块、(6)9号功能显示字符串宏模块、二.设计方案1、主程序模块、主程序初始化数据段,调用显示宏show显示界面,输入字符或数字并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果,判断就是否继续,继续则返回输入,不继续则退出程序、2、赋权宏模块、通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使变元a与标号s对应、接着给对应的符号赋予权值,将其权值存入ch中、3、加减乘除运算子程序模块、运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的符号就是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号*则接着判断就是否为除号/,若为除号/则进行除法运算,然后判断就是否为加法,为加法则进行加法运算,接着判断就是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置、4、调用赋权宏子程序模块、该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为5,1,4,4,3,3,0、从而可以通过设定的权值来判断优先级、5、回车换行宏模块、通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah赋予dl输出,从而实现回车换行功能、6、9号功能显示字符串宏模块、通过定义宏show,用9号显示功能,通过变元str将字符串显示出来。
汇编语言课程设计_四则运算计算器设计

目录1 设计目的 (1)2 概要设计 (1)2.1 系统总体分析 (1)2.2 主模块框图及说明 (2)3 详细设计 (3)3.1 主模块及子模块说明 (3)3.2 各模块详细设计 (3)3.2.1 判定运算符模块设计 (3)3.2.2取运算数模块 (3)3.2.3计算模块 (4)3.2.4结果处理模块 (5)3.2.5输出模块 (5)3.2.6错误处理模块 (6)4 程序调试 (7)4.1 运行界面分析 (7)4.2 调试过程及分析 (7)5 心得体会 (8)5.1 设计体会 (8)5.2 系统改进 (8)参考文献 (10)附录 (11)实现加减乘除四则运算的计算器1 设计目的汇编语言是继机器语言后出现的计算机程序设计语言,是计算机所能提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特征并能够直接控制硬件的惟一语言。
因而了解之一语言的特性,并熟练掌握这一语言并应用于开发中便是计算机专业学生所必需掌握的技能之一。
本课程设计通过加减乘除四则运算计算器的设计,增强对于汇编语言寄存器、指令、伪指令、中断等的理解。
可通过编写的汇编程序完成基本的加减乘除四则运算。
主要功能:能实现加减乘除的计算;该程序接受的是16进制数;执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:C:\tasm>js 3+252 概要设计2.1 系统总体分析四则运算计算器应当实现对用户输入表达式的处理。
根据用户输入的表达式,完成加减乘除四则运算。
程序自动判定表达式输入,并完成对于输入的16进制数的转换,同时计算结果并以10进制数输出。
对于异常情况程序应当进行处理,保证程序的正确运行。
设计一个计算器,在DOS界面下输入<程序名> <表达式>可直接输出运算结果。
例如在DOS界面中输入JS 3+6,可直接输出9。
程序接受16进制数输入,以十进制数输出运算结果。
对于输出错误情况,程序自动给出错误提示,若输入的格式有误,程序给出“JS <Expression> [10]”(即输入样例)提示,若输入的表达式有误,程序给出“Error in expression !”(即表达式错误)提示。
汇编语言课程设计报告——实现加减乘除四则运算的计算器讲解

汇编语言课程设计报告(2011 -- 2012年度第2学期)实现加减乘除四则运算的计算器专业_____________ 计算机科学与技术__________学生姓名____________________________________班级_______________________________________学号_______________________________________指导教师____________________________________完成日期___________________________________目录目录 (2)1概述 (1)1.1设计目的 (1)1.2设计内容 (1)2系统需求分析 (1)2.1 系统目标 (1)2.2主体功能 (1)2.3开发环境 (1)3系统概要设计 (2)3.1系统的功能模块划分 (2)3.2系统流程图 (3)4系统详细设计 (3)5测试 (4)5.1测试方案 (4)5.2测试结果 (4)6小结 (5)参考文献 (6)附录 (7)附录源程序清单 (7)实现加减乘除四则运算的计算器1.1设计目的本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上, 旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法, 提高分析问题、解决问题的综合应用能力。
1.2设计内容能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:c:\tasm>js 3+252系统需求分析2.1系统目标本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
比如,十进制数的加减乘除四则运算。
我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
汇编语言简单计算器程序课程方案报告[]
![汇编语言简单计算器程序课程方案报告[]](https://img.taocdn.com/s3/m/9cdac929de80d4d8d15a4fb0.png)
个人资料整理仅限学习使用课程设计说明书题目: 简单计算器院系:专业班级:学号:学生姓名:指导教师:2018年12月31日安徽理工大学课程设计<论文)任务书计算机科学与工程学院硬件教研室2018年 12月 17 日安徽理工大学课程设计<论文)成绩评定表摘要汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。
高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。
在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。
现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows 的应用程序也是可行的,但这不是汇编语言的长处。
汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
本次设计的简单计算器支持简单的四则运算。
关键词:汇编语言,简单计算器,高效,硬件AbstractAssembly language is a powerful programming language features, but also all the hardware features of computer and can directly control the hardware of the language. Assembly language, as a language, corresponding to high-level language compiler, you need a "assembler" to the assembly language source file compiled into machine executable code. Advanced assembler such as MASM, TASM assembler, and so for us to write high-level language offers many similar features, such as structured, abstract and so on. In such an environment prepared by the assembler, a large part of the directive for the assembler has been similar in the high-level language. Now the compilation environment has such a high, even if all windows in assembly language to write applications that are feasible, but this is not assembly language strengths. The strength lies in assembly language to write efficient hardware and requires precise control of the machine process. This simple calculator designed to support simple arithmetic.Keywords:assembly language, simple calculator, efficient, hardware目录1设计目的12概要设计22.1 系统总体分析22.2 主模块框图及说明23 详细设计43.1 主模块及子模块说明43.2 各模块详细设计44.程序调试124.1 运行界面分析124.2算法的分析124.3 调试过程及分析125心得体会135.1 设计体会135.2 系统改进13参考文献141设计目的通过本次的课程设计,使自己加深对汇编语言的了解,应用《汇编语言程序设计》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能里的目的。
汇编语言课程设计--简单计算器设计

《微机原理与应用》课程设计实验题目:简单计算器设计年级:2010级专业:电子信息工程组员:梁玮堃 21005108田少飞 21005116刘明 21005127陈晓琳 21005145指导教师:邓亚玲2013年01月组员分工组长梁玮堃:报告设计。
具体负责对设计报告版面设计、修改,流程图的设计,调试程序和应用程序的设计。
组员田少飞:程序调试。
负责计算器具体程序设计,编写主程序。
刘明:程序修改。
对已调程序进行修改,并设计相关功能程序。
陈晓琳:查阅资料。
通过上网或在图书馆查阅有关汇编语言及计算器设计资料。
目录1设计目的 (1)2概要设计 (2)2.1系统总体分析 (2)2.2程序流程图及说明 (3)3详细设计 (5)3.1主模块及子模块说明 (5)3.2各模块详细设计 (10)4程序调试 (13)4.1调试过程及分析 (13)4.2运行界面分析 (13)5心得体会 (17)5.1设计体会 (17)5.2系统改进 (17)参考文献 (18)1设计目的汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。
同时,汇编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。
由于汇编语言如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。
用汇编语言编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言其程序速度更无法与汇编语言程序同日而语。
本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。
汇编语言简单计算器程序课程设计报告

汇编语言课程设计报告( 2010 -- 2011 年度第 2 学期)课题名称: 实现加减乘除四则运算的计算器专业 计算机科学与技术学生姓名 汤浩军班级 B 计算机091学号 0910704117指导教师 王 志 宏完成日期2011年6月24日目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (4)3.1 主模块及子模块说明 (4)3.2 各模块详细设计 (4)4.程序调试 (6)4.1 运行界面分析 (6)4.2 算法的分析 (6)4.3 调试过程及分析 (6)5小结 (7)5.1 设计总结 (7)参考文献 (8)源程序清单 (9)1设计目的通过本次的课程设计,加深对汇编语言的了解,应用《汇编语言程序设计教程》等所学相关知识及查阅资料,完成加减乘除计算器的设计,以达到理论与实践更好的结合,进一步提高自身的水平和对汇编语言的认识。
2概要设计2.1 系统总体分析本次设计的加减乘除四则运算的计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计的这个计算器可以一次运行,多次使用。
2.2 主模块框图及说明本程序的功能结构图如图2-1:图 2-1功能结构图程序流程图如图2-2:图2-2流程图3 详细设计3.1 主模块及子模块说明主模块:主要完成程序的主体框架结构,提供人-程序的交互。
子模块:主要完成对数据的加工,处理。
3.2 各模块详细设计主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。
如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。
整个过程按“ESC”结束。
流程图如下图3-1:图3-1 主模块流程图子模块:完成对数据的进一步加工处理,转换格式并得出结果。
首先根据输入调用对应的“+”、“-”、“*”、“/”四大函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几大模块服务的,大致的流程图如下图3-2:Y图3-2 子模块流程图4.程序调试4.1 运行界面分析运行界面如图4-1图4-1 运行界面在NUM1这一行会提示输入第一个数据,NUM2这一行提示输入第二个数据,输入完成两个数据后程序会提示允许输入运算符,输入无误后在RESULT行显示结果。
8051汇编语言计算器设计

8051汇编语言计算器设计摘要:本计算器是以MCS-51系列8051单片机为核心构成的简易计算器系统。
该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据存储下来。
整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入LED显示器动态显示。
整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换成显示器显示;功能模块三,显示器静态显示.关键字:AT89C51 单片机按键控制 LED显示第一章引言计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备组成。
低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。
高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。
本计算器整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换成显示器显示;功能模块三,显示器动态显示.具体设计如下:1、由于要设计的是简单的计算器,可以进行四则运算,为了得到教好的显示效果,采用LCD显示数据和结果。
2、另外键盘包括数字键(0-9)、符号键(+、-、*、/)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算机键盘。
3、执行程序:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。
4、错误提示:当单片机执行程序中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算器得到的结果大于计算器的显示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD上提示错误。
第二章系统硬件结构设计硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。
汇编课程设计(有符号多位十进制数的四则运算计算器)

汇编语言课程设计实验报告一、课程设计目的《汇编语言程序设计》是计算机专业一门重要的核心课程,也是一门实践性很强的课程,而课程设计则是其中一个重要的应用实践环节。
本次课程设计的目的是提高分析问题、解决问题的能力以及实际动手能力,进一步加深对汇编语言程序设计基本理论的理解,熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础二、实验环境编译机器:IBM兼容PC操作系统:Windows XP -SP2 中文版编译工具:MASM 5.0三、课程设计内容1、编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示:-278+32=-132――12=11*-32=-1234/-18=要求程序能接收键入的算式,在接收到‘=’号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。
如果键入算式后再键入‘.’,则显示结果并结束整个程序。
(‘/’为整除)程序设计框图:程序源代码:2、已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16位无符号二进制数,用以说明串的长度。
试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。
程序设计框图:程序代码:DATA SEGMENT; DICTIONARY 字典字符串,首两个字节为 16 位无符号二进制数,说明字符串长度。
DICTIONARY DB 00,16H,"add an book dad egg "DB 100H DUP(20H) ; 空的缓冲区。
MSG_INTRO DB "Input the Word to Search : ","$"MSG_NOTFOUND DB "Not Found, Now Insert it . ",0AH,0DH,"$"MSG_NEWDICT DB 0AH,0DH,"New Dictionary : ","$"MSG_FOUND DB 0AH,0DH,"Found Word in Dictionary : ","$"MSG_POSITION DB 0AH,0DH,"Position : ","$"MSG_DICTLENGTH D B 0AH,0DH,"New Dictionary Length : ","$"MSG_NEWLINE DB 0AH,0DH,"$"BUFFER DB 10H DUP(20H) ; BUFFER 用于保存需要查询的单词。
单片机课程设计一汇编语言实现四位数计算器

单片机课程设计一汇编语言实现四位数计算器
四位数计算器是一种能够进行基本数学运算的设备,它可以对四位数进行加法、减法、乘法和除法运算。
这个计算器的设计基于单片机和汇编语言,它可以方便地进行各种数学运算,满足用户的需求。
我们需要一个单片机作为计算器的核心。
单片机是一种集成电路,可以完成各种计算和控制任务。
我们选择一款适合的单片机,并将其与其他必要的电子元件进行连接,以构建一个完整的计算器系统。
接下来,我们需要使用汇编语言编写相应的程序来实现计算器功能。
汇编语言是一种低级语言,可以直接控制计算机的硬件,实现各种操作。
通过编写汇编语言程序,我们可以实现加法、减法、乘法和除法等运算。
在程序中,我们首先需要设计一个界面,将计算器的输入和输出与单片机相连接。
用户可以通过按键输入需要计算的四位数和运算符,计算器将根据用户的输入进行相应的运算,并将结果显示在数码管上。
在程序的编写过程中,我们需要考虑各种可能的输入情况,例如用户输入的数字是否超出了四位数的范围,用户是否输入了错误的运算符等。
我们需要对这些情况进行处理,保证计算器的运算结果是准确的。
除了基本的加减乘除运算,我们还可以在计算器中添加其他功能,
例如开根号、取余数等。
这些功能的实现也需要通过编写相应的汇编语言程序来完成。
通过单片机和汇编语言的结合,我们可以实现一个功能完备的四位数计算器。
这个计算器可以方便地进行各种数学运算,满足用户的需求。
通过合理的设计和编程,我们可以使计算器的使用变得简单而高效,为用户提供便利的计算体验。
汇编语言简易计算器

目录1.设计目的..................................................... 2.总体设计.....................................................2.1 系统总体分析......................................................2.2 主模块框图及说明.................................................. 3.详细设计.....................................................3.1 主模块及子模块说明................................................3.2 各模块详细设计.................................................... 4.程序调试.....................................................4.1 运行界面分析......................................................4.2 算法的分析........................................................4.3 调试过程及分析.................................................... 5.心得体会.....................................................5.1 设计体会..........................................................5.2 系统改进.......................................................... .参考文献.......................................................致谢摘要汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
汇编语言 十进制加减法计算器课程设计

十进制加减法计算器单片机设计一、设计目的通过课程设计使学生更进一步掌握单片机原理与应用课程的有关知识,提高用汇编语言编程的能力,并将所学的内容加以综合。
通过查阅资料,了解所学知识的应用情况。
二、课程设计要求设计十进制加减法计算器。
要求能(不同时)显示3位输入和4位输出。
要求程序实现功能(1)十进制加减法计算:输入范围为(1~999),该程序输入两个定点数,每个3位,输出4位;A为加,B为减,C为等于,输出为四位计算结果。
数据输入采用规范化输入,即必须输入3个数才算完成一个运算数的输入,两个运算数之间输入运算符A或者B,输入完成按C显示计算结果。
(2)计算器复位功能:DEL均为清零重启,任何时候按下DEL中一个将重新开始。
三、硬件设计现实生活中人们熟知的计算器,其功能主要如下:(1)键盘输入;(2)数值显示;(3)加、减运算(此次只要求加减);(4)对错误的控制及提示。
此次计算器设计的最终结果是使其工作流程为:开机不显示,等待键入数值,键入三个数字,通过LCD显示出来,当键入+、-运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入三个数字将显示键入的数值,按等号就会在LCD上输出运算结果。
同时考虑到操作中可能出现的错误时,计算器会进行自动控制。
根据设计要求,选用8098 单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计。
此次设计的系统模块图如下,单片机输入模块运算模块显示模块具体设计考虑如下:1、单片机工作时电源引脚外接电源,工作电压为5V,同时本次设计通过内部振荡器和时钟发生器产生时钟信号。
2、8098单片机可寻址的存储器空间为64K空间,其内部仅带有只能用作寄存器的256个字节容量的RAM,所以在此设计过程中,需要外接存储器芯片,我们选用容量足够大的62128存储器芯片。
3、本次设计的接口电路采用8255可编程并行I/O芯片,8255A具有通常意义的接口所需要的基本功能,有着很强的适应性,此次设计中它起的作用是将显示器和键盘与单片机连接,通过向其控制寄存器送入控制字,以规定8255的工作方式和实现确定的功能,如本次设计的电路图,8255的A口、C口均工作于输出方式,而B口工作于输入方式。
汇编语言计算器课程设计概要

图4 执行方法
在计算器内,输入数字测试本程序的正确与否。
按照提示输入第一个十进制数,如“6”,回车。
下一步,会提示请输入运算符,如加,回车。
最后一步,输入第二个十进制数,如“3”,回车。
则显示出其运算结果。
如所示:
课程设计说明书参考文献 NO.11 [1] 詹仕华. 汇编语言程序设计[M]. 北京: 中国电力出版社, 2008.2:73-102 [2] 宋彩莉 , 王禾 . 汇编语言程序设计学习指导[M]. 西安: 西安交通大学出版社 , 2008.2:45-87 [3] 李敬兆, 陈子旭. 汇编语言程序设计[M].合肥: 中国科学技术大学出版社, 2008.9: 173-197 [4] 钱晓捷, 周玲. 新汇编语言程序设计[M]. 北京: 电子工业出版社, 2006.3:101-120 [5] 周佩玲, 彭虎, 傅忠谦. 微机原理与借口技术[M]. 北京: 电子工业出版社, 2007.1: 113-141 [6] 马春燕. 微机原理与接口技术(基于 32 位机)实验与学习辅导[M]. 北京: 电子工业出版社, 2007.1:23-70 [7] 何小海, 严华. 微机原理与借口技术[M]. 北京:科学出版社, 2006.7:143-180 [8] 王爽, 胡雄. 汇编语言[M]. 北京: 清华大学出版社, 2009.9:29-70 [9] 曹加恒, 谢子殿. 新一代汇编语言课程设计[M]. 北京: 高等教育出版社, 2006.3:
113-138 [10] 杨路明. 汇编语言程序设计[M]. 长沙: 中南大学出版社, 2008.5:173-203 沈阳大学科技工程学院。
汇编语言程序设计————计算器

目录一.设计内容 (2)二.设计方案 (2)1.主程序模块. (2)2.赋权值模块. (2)3.加减乘除运算子程序模块. (2)4.调用赋权宏子程序模块. (2)5.回车换行宏模块. (2)6.9号功能显示字符串宏模块. (2)三.设计框图 (3)四.程序代码 (4)五.运行结果 (9)六.设计总结 (9)计算器汇编语言程序设计一.设计内容从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。
并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止。
四则运算主要包括以下几个模块:(1)主程序模块.(2)赋权宏模块.(3)加减乘除运算子程序模块.(4)调用赋权宏子程序模块.(5)回车换行宏模块.(6)9号功能显示字符串宏模块.二.设计方案1.主程序模块.主程序初始化数据段,调用显示宏show显示界面,输入字符或数字并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果,判断是否继续,继续则返回输入,不继续则退出程序.2.赋权宏模块.通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使变元a与标号s对应.接着给对应的符号赋予权值,将其权值存入ch中.3.加减乘除运算子程序模块.运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的符号是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号*则接着判断是否为除号/,若为除号/则进行除法运算,然后判断是否为加法,为加法则进行加法运算,接着判断是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置.4.调用赋权宏子程序模块.该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级.5.回车换行宏模块.通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah赋予dl输出,从而实现回车换行功能.6.9号功能显示字符串宏模块.通过定义宏show,用9号显示功能,通过变元str将字符串显示出来。
汇编语言课程设计答辩简易计算器PPT学习教案

实现功能
可以实现加减乘除四则运算以及清屏 、退出 功能
输入、输出问题
用INT 21H的一号功能调用来进行输入,
输出则用单字符输出。
完善功能
当键入回车键后,可以换行重新输入;当键入C 或c键时,清除整个屏幕上的输入和输出的字符 并可以重新输入并运算;当按下Q或q键退出程。
目录
第2页/共14页
判断输入的是不是回车键,若是就回车换行输入,不是则继 续输入;
判断输入的是否为数字以及+,-,=这些字符,若不是会报 错,是则将其存储到定义的数据区里面,再判断输入的是进行 什么运算符,进行相应的运算,输出结果。 继续上面的步骤
目录
第4页/共14页
调试过程
1、初始界面 2、加法运算实现 3、减法运算实现 4、乘法运算实现 5、除法运算实现 6、清屏
除法运算实现
运行界面如图:
第10页/共14页
当输入C或c时则清屏,程序运行后清 除整个 窗口内 输入和 输出的 字符并 可以继 续输入 并计算 。如图 :
清屏
第11页/共14页
实训总结
经调试,基本上任务要求设计的所有功能都实现,调 试出的计算结果均正确。
一周的课程设计结束了,给我的总体感觉就是忙 碌但充实,而且真正学到了东西。
从构思到设计流程图到编写源程序都是我一个人 独立完成的,虽然这个过程比较痛苦,但是我真正的 去体验了,当我编写的程序一遍一遍地报错,出的结 果一次次和正确结果有出入的时候我真的好想放弃, 但是我选择了坚持。
在胡安明老师的指导下,我一一改正了程序存在 的错误,最终使得该程序得以正确实现加减乘除功能 。
程序流程图
目录
第3页/共14页
程序使用说明
汇编课程设计计算器

汇编课程设计计算器一、课程目标知识目标:1. 学生能理解汇编语言的基本概念,掌握计算器程序的基本结构。
2. 学生能运用汇编语言实现加、减、乘、除等基本运算。
3. 学生了解计算机内部运算的原理,理解寄存器、内存等硬件资源在程序执行过程中的作用。
技能目标:1. 学生能运用汇编语言编写简单的计算器程序,具备基本的编程能力。
2. 学生能通过调试和优化程序,提高计算器程序的执行效率。
3. 学生能运用所学知识解决实际计算问题,具备一定的实际问题分析解决能力。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,增强学习动力。
2. 学生养成严谨、细致的学习态度,提高团队协作能力。
3. 学生认识到编程在日常生活和未来发展中的重要性,培养创新精神和实践能力。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能自主阅读汇编语言教材,理解计算器程序的基本结构。
2. 学生能独立编写简单的计算器程序,并通过调试和优化提高程序性能。
3. 学生能以小组形式合作完成复杂计算器程序的设计与实现,提高团队协作能力。
4. 学生在课程学习过程中,主动探索新知识,培养解决问题的能力和创新思维。
二、教学内容本课程教学内容主要包括以下几部分:1. 汇编语言基础知识:- 认识汇编语言,了解其发展历程和特点。
- 学习汇编语言的语法和基本指令。
- 了解计算机内部结构,理解寄存器、内存等硬件资源的作用。
2. 计算器程序设计:- 分析计算器程序的需求,明确功能模块。
- 学习汇编语言编写程序的基本方法,设计计算器程序框架。
- 掌握加、减、乘、除等基本运算的汇编实现。
3. 调试与优化:- 学习使用汇编语言调试工具,掌握调试技巧。
- 分析程序性能,提出优化方案。
- 实践优化过程,提高计算器程序执行效率。
4. 教学案例与实战:- 选取典型计算器案例,进行讲解和分析。
- 学生分组合作,完成复杂计算器程序的设计与实现。
- 组织课堂讨论,分享编程心得和经验。
汇编语言程序的设计————计算器

课程设计说明书题目: 表达式计算器学号:41212241班级: 计算机创新实验班:廖福轩目录一.设计容 (2)二.设计方案 (3)1.主程序模块. (3)2.赋权值模块. (3)3.加减乘除运算子程序模块. (3)4.调用赋权宏子程序模块. (3)5.回车换行宏模块. (3)6.9号功能显示字符串宏模块. (2)三.设计框图 (3)四.程序代码 (4)五.运行结果 (11)六.设计总结 (11)计算器汇编语言程序设计一.设计容从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。
并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止。
四则运算主要包括以下几个模块:(1)主程序模块.(2)赋权宏模块.(3)加减乘除运算子程序模块.(4)调用赋权宏子程序模块.(5)回车换行宏模块.(6)9号功能显示字符串宏模块.二.设计方案1.主程序模块.主程序初始化数据段,调用显示宏show显示界面,输入字符或数字并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果,判断是否继续,继续则返回输入,不继续则退出程序.2.赋权宏模块.通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使变元a与标号s对应.接着给对应的符号赋予权值,将其权值存入ch中.3.加减乘除运算子程序模块.运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的符号是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号*则接着判断是否为除号/,若为除号/则进行除法运算,然后判断是否为加法,为加法则进行加法运算,接着判断是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置.4.调用赋权宏子程序模块.该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级.5.回车换行宏模块.通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah赋予dl输出,从而实现回车换行功能.6.9号功能显示字符串宏模块.通过定义宏show,用9号显示功能,通过变元str将字符串显示出来。
汇编语言课程设计——计算器讲解

*******************实践教学*******************兰州理工大学技术工程学院2015年春季学期汇编语言实训课程设计题目:____ 计算器专业班级:_2013级软件工程(1)班__姓名:_______郭益婷_ _学号: 13740104指导教师:刘树群成绩:__________ _____2015计算器任务书题目:计算器学生姓名学号:杜政毅13740102,惠攀龙13740108,郭益婷13740104班级:13软件工程1班题目类型:软件工程(R)指导教师:刘树群1、设计目的用汇编语言编程设计一个简单的计算器,实现四则运算数的交互式输入,并显示运算结果。
通过设计,掌握键盘和鼠标控制、显示输出和基本算术运算指令的应用,进一步提高综合运用知识的能力。
2、设计内容(包括原始数据、技术参数、条件、设计要求等):使用按键式操作,对任意给定的正确四则运算序列,能按照意图分部计算出其计算的有效结果数值并输出。
3、设计要求题目的选择是根据汇编语言的特点主要针对系统内部的一些中断调用、系统功能调用、系统数据处理、文件数据处理、以及相关的API而设计的,是对所学课程知识较为系统的应用。
由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。
不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善程序。
另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师审查同意后也可作为课程设计的题目。
4、提交的成果1. 设计说明书一份,内容包括:包含任务书一份1) 中文摘要100字,关键词3-5个。
2) 实训题目、内容、要求。
3)总体设计(包含几大功能模块)。
4)详细设计(各功能模块的具体实现算法——流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。
6)调试分析(包含各模块的测试用例,及测试结果。
)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)8) 参考文献、致谢等。
汇编--计算器

目录一、计算器的具体功能.......................................... 错误!未定义书签。
二、软件设计流程极其描述.................................. 错误!未定义书签。
三、源程序代码 (12)四、课程设计体会 (23)五、参考文献 (23)附录 (23)一、计算器的具体功能1、输入一个正数后按回车可以直接输出该正数;2、输入一个负数后按回车可以直接输出该负数;3、可以进行有符号数的加运算;4、可以进行有符号数的减运算;5、可以进行有符号数的加、减运算;6、可以进行有符号数的乘运算;7、可以进行有符号数的除运算;8、可以进行有符号数的乘、除运算;9、可以进行有符号数的加、减、乘、除四则运算;10、支持使用括号改变运算顺序;11、输入一个数值不是很大的合法的算术表达式并按回车,可以得到正确的结果。
二、软件设计流程极其描述《一》、软件设计简要流程下页所示:以上为主流程图以上为中缀表达式转化为后缀表达式的流程图。
其每次向S2中输入一个字符,DI就会加1。
当压入‘(’后,再压入0作为运算符优先级的判断;当压入‘+’或‘-’后,再压入01作为运算符优先级的判断;当压入‘*’或‘/’后,再压入02作为运算符优先级的判断。
以上为计算后缀表达式数值的流程图以上为输出运算结果程序的流程图《二》、简要流程中五大步骤的具体描述1、步骤(一):从键盘输入合法中缀算术表达式,并将其存储到S1中此处用系统功能1号调用,每次从键盘输入一个字符,就将其存入到数组S1中,然后在判断此字符是否为回车,如果不是,则循环,继续输入字符,否则,程序往下执行。
2、步骤(二):调用子程序CHANGE将中缀式转化为后缀式此处最核心的就是中缀表达式转化为后缀表达式的算法。
具体思路为:用一个栈来存储与运算符号.先将字符’@’压入栈中,并假设其优先级为0.然后遍历S1中的字符,遇到数字直接存入S2中并且输完数字后向S2中输入一空格以备计算结果时用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************实践教学*******************兰州理工大学技术工程学院2015年春季学期汇编语言实训课程设计题目:____ 计算器专业班级:_2013级软件工程(1)班__姓名:_______郭益婷_ _学号: 13740104指导教师:刘树群成绩:__________ _____2015计算器任务书题目:计算器学生姓名学号:杜政毅13740102,惠攀龙13740108,郭益婷13740104班级:13软件工程1班题目类型:软件工程(R)指导教师:刘树群1、设计目的用汇编语言编程设计一个简单的计算器,实现四则运算数的交互式输入,并显示运算结果。
通过设计,掌握键盘和鼠标控制、显示输出和基本算术运算指令的应用,进一步提高综合运用知识的能力。
2、设计内容(包括原始数据、技术参数、条件、设计要求等):使用按键式操作,对任意给定的正确四则运算序列,能按照意图分部计算出其计算的有效结果数值并输出。
3、设计要求题目的选择是根据汇编语言的特点主要针对系统内部的一些中断调用、系统功能调用、系统数据处理、文件数据处理、以及相关的API而设计的,是对所学课程知识较为系统的应用。
由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。
不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善程序。
另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师审查同意后也可作为课程设计的题目。
4、提交的成果1. 设计说明书一份,内容包括:包含任务书一份1) 中文摘要100字,关键词3-5个。
2) 实训题目、内容、要求。
3)总体设计(包含几大功能模块)。
4)详细设计(各功能模块的具体实现算法——流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。
6)调试分析(包含各模块的测试用例,及测试结果。
)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)8) 参考文献、致谢等。
5、主要参考资料[1]李敬兆等编.《汇编语言程序设计》.合肥:中国科学技术大学出版社,2008.9[2]李敬兆等编.《汇编语言程序设计实验教程及习题解答》.合肥:中国科学技术大学出版社,2008.9[3]王爽等编.《汇编语言》.北京:清华大学出版社,2003.5[4]曹加恒等编.《新一代汇编语言课程设计》.北京:高等教育出版社,2003.6[5]杨路明等编.《汇编语言程序设计》.长沙:中南大学出版社,2005.8 [6]詹仕华等编.《汇编语言程序设计》.北京:中国电力出版社,2008.2 [7]詹仕华等编.《汇编语言程序设计习题解答及课程设计、设计辅导》.北京:中国电力出版社,2008.2[8]宋彩莉等编.《汇编语言程序设计学习指导》.西安:西安交通大学出版社,2008.26、各阶段时间安排(共1周)摘要汇编语言是一种功能很强的程序设计语言,也是利用计算器所有特性并能直接控制硬件的语言。
汇编语言,作为一门语言,对应于高级语言的编译器,需要一个”汇编器”来把汇编语言原文件会变成机器可执行的代码。
高级汇编语言器如:MASM,TASM等等为我们后来写汇编程序提供了很多类似高级语言的特征,比如结构化,抽象等。
在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。
现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处,回避啊预言的长处在于编写高效且需要对机器硬件精确控制的程序。
本次设计简单计算器支持简单的四则运算。
关键词:汇编语言,计算器,高效,硬件目录汇编语言实训任务书 (2)摘要 (4)前言 (6)1.1系统分析 (7)1.2功能分析 (7)2 系统总体设计 (9)2.1系统总体分析 (9)2.2主模块框图及说明 (9)3 详细设计 (11)3.1主模块及子模块说明 (11)3.2 各模块详细设计 (11)4系统测试 (22)4.1 测试界面图 (22)4.2算法的分析 (26)5 软件使用说明书 (27)5.1计算器功能说明 (27)5.2操作键功能说明 (27)设计总结 (28)参考文献 (29)致谢 (30)前言运用汇编语言,制作一个计算的程序,实现简单计算器的一般功能,使用Win32编程设计一个功能及界面风格类似于Windows计算器的计算器程序,只要求实现标准型计算器。
主要实现的功能:包含基本的四则运算、倒数运算、平方根运算。
支持存储区的存储、清除、调出、累加等功能。
程序主界面应有操作提示、输入和输出。
输入数值及所需符号后可以进行正确的运算,程序计算其结果值并输出。
表达式中运算分量为有正负号整数,运算符为+、-、*、/,最后结果以十进制数表示。
且程序主界面需为一个由仿windws界面。
汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:能够直接访问与硬件相关的存储器或I/O端口;能够不受编译器的限制,对生成的二进制代码进行完全的控制;能够对关键代码进行更准确的控制;能够根据特定的应用对代码做最佳的优化,提高运行速度;能够最大限度地发挥硬件的功能。
1总体分析1.1系统分析该课程的设计任务是做一个简易计算器,可以实现加减乘除四则运算。
我们要解决的问题有:以什么方式输入数字、判断是进行什么运算、运算过程中的进位和借位问题、以及如何实现清屏等问题。
本次设计的简单计算器,主要是为了解决数学中的加,减,乘,除,开方的运算问题。
由于在设计之中考虑到了可能会多次计算数据,为此在本次课程设计中我们设计的计算器可一次运行,多次使用。
本程序使用了函数和宏混用的方式实现了代码的较好的可读性,使程序看起来结构严谨。
1.2功能分析图1-1计算器●显示区:文本框,用于显示输入的操作数及结果。
●数字键入区:在显示区中显示数字、小数点、正负号等。
●运算区:包含双目运算符(+ - * /)、单目运算符(sqrt()、%、1/x)、等于号等。
●记忆区:清除记忆(MC)、显示记忆(MR)、记忆当前(MS)、记忆加(M+)以及记忆区存储情况的标签。
●清除键区:退格(Backspace)、清除当前数据(CE)、初始化操作(C)。
2 系统总体设计2.1系统总体分析本次设计的计算器,主要是为了解决数学中的加、减、乘、除、开方运算的问题。
由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计我设计的这个简单计算器可以一次运行,多次使用。
根据题目,可以把程序的工作过程主要划分为界面设计、运算表达式输入、计算、结果输出四部分。
因此在编写程序时可以按此把程序大致划分为四个模块。
第一步,界面设计,使用汇编语言设计一个界面风格及功能类似于Windows计算器程序,实现标准型、可靠性、简单性、易学性、实用性的界面。
第二步,运算表达式的输入,对于输入,键盘、鼠标都可进行输入操作。
第三步,计算,通过汇编语言使计算器实现四则运算、倒数运算、平方根运算等计算。
第四步,对于输出,必须能在显示区显示正确的结果。
2.2主模块框图及说明主程序及窗口主程序结构如图2-1,按照Windows程序标准框架,主程序用于获得并保存本程序的句柄,并调用窗口主程序WinMain创建窗口并进入消息循环。
WinMain程序将获取的消息分发给消息处理程序Calculate进行处理。
图2-1主模块框图3 详细设计3.1主模块及子模块说明主模块:主要完成程序的主体框架结构,提供人-程序的交互。
子模块:主要完成对数据的加工处理。
3.2 各模块详细设计程序源文件包含两个部分:头文件(Calculator.inc):头文件中引入程序所需要的库以及常量和函数申明源文件(Calculator.asm):汇编程序源代码(1)在Calculator.inc头文件中统一定义程序所需的头文件及引入库(代码如下)。
;--------------------------- 头文件声明---------------------------include \masm32\include\windows.incinclude user32.incinclude kernel32.incinclude comctl32.inc;include \masm32\include\comdlg32.inc;include \masm32\include\gdi32.incinclude masm32.incinclude shell32.inc;--------------------------- 引入库声明---------------------------includelib user32.libincludelib kernel32.libincludelib comctl32.libincludelib masm32.libincludelib shell32.lib;includelib \masm32\lib\gdi32.lib;includelib \masm32\lib\comdlg32.lib(2)WinMain主程序用于创建窗口并获取和分发消息(代码如下)。
WinMain proc hInst:DWORD, hPrevInst:DWORD, CmdLine:DWORD, CmdShow:DWORDLOCAL wc:WNDCLASSEX ;窗口类LOCAL msg:MSG ;消息LOCAL hWnd:HWND ;对话框句柄Movwc.cbSize,sizeof WNDCLASSEX ;WNDCLASSEX的大小mov wc.style,CS_BYTEALIGNWINDOW or CS_BYTEALIGNWINDOW ;窗口风格or CS_HREDRAW or CS_VREDRAWmov wc.lpfnWndProc,OFFSET Calculate ;窗口消息处理函数地址mov wc.cbClsExtra,0 ;在窗口类结构后的附加字节数,共享内存mov wc.cbWndExtra,DLGWINDOWEXTRA ;在窗口实例后的附加字节数(!注意点)mov eax,hInstmov wc.hInstance,eax ;窗口所属程序句柄mov wc.hbrBackground,COLOR_BTNFACE+1 ;背景画刷句柄mov wc.lpszMenuName,NULL ;菜单名称指针mov wc.lpszClassName,OFFSET DialogName ;类名称指针invoke LoadIcon,hInst,addr IconName ;加载Iconmov wc.hIcon,eax ;图标句柄invoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor,eax ;光标句柄mov wc.hIconSm,0 ;窗口小图标句柄invoke RegisterClassEx,addr wc ;注册窗口类invoke CreateDialogParam,hInst,addr DialogName,0,addr Calculate,0 ;调用对话框窗口mov hWnd,eax ;保存对话框句柄invoke ShowWindow,hWnd,CmdShow;最后一个参数可设置为SW_SHOWNORMALinvoke UpdateWindow,hWnd ;更新窗口StartLoop: ;消息循环invoke GetMessage,addr msg,0,0,0 ;获取消息cmp eax,0je ExitLoopinvoke TranslateMessage,addr msg ;转换键盘消息invoke DispatchMessage,addr msg ;分发消息jmp StartLoopExitLoop: ;结束消息循环mov eax,msg.wParamretWinMain endp(3)消息处理程序用于处理用户消息(代码如下)。