汇编语言程序设计————计算器
汇编语言程序设计————计算器
课程设计说明书题目: 表达式计算器学号:班级: 计算机创新实验班姓名:廖福轩目录一.设计内容 (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 !”(即表达式错误)提示。
汇编语言课程设计四则运算计算器..【范本模板】
微机原理实验报告汇编语言课程设计报告( 2012 —- 2013 年度第1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋实现加减乘除四则运算的计算器1 实验目的深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。
通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
第一步,用INT 21H的1号功能调用来进行输入.利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。
我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了.在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错.第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+'号、‘—'号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。
汇编语言课程设计--简单计算器设计
《微机原理与应用》课程设计实验题目:简单计算器设计年级: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设计目的汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。
同时,汇编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。
由于汇编语言如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。
用汇编语言编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言其程序速度更无法与汇编语言程序同日而语。
本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。
汇编小项目
汇编小项目标题:汇编小项目——编写一个简单的计算器引言:在计算机科学领域,汇编语言是一种底层的机器语言,它使用符号化的指令来控制计算机的操作。
本文将介绍如何使用汇编语言编写一个简单的计算器,以加深对汇编语言的理解。
1. 汇编语言的概述汇编语言是一种与机器语言直接对应的低级语言,它使用助记符来表示机器指令。
与高级语言相比,汇编语言更接近计算机硬件的实现细节。
通过编写汇编语言程序,我们可以直接控制计算机的各个部件。
2. 计算器的设计思路我们将设计一个简单的计算器,可以进行加法和减法运算。
该计算器可以接受用户输入的两个数字,并输出运算结果。
3. 程序实现步骤3.1 初始化程序我们需要初始化程序的数据段和堆栈段。
数据段用于存储程序中使用的常量和变量,而堆栈段用于存储程序执行过程中的局部变量和返回地址。
3.2 获取用户输入程序需要提示用户输入两个数字,并将其存储到指定的内存位置。
用户输入的数字可以通过调用操作系统提供的输入函数来实现。
3.3 进行运算接下来,我们需要编写代码来实现加法和减法运算。
可以使用汇编语言提供的加法和减法指令来完成运算操作,并将结果存储到指定的内存位置。
3.4 输出结果我们需要将运算结果输出给用户。
可以通过调用操作系统提供的输出函数来实现。
4. 示例代码以下是一个简单的汇编语言程序示例,用于实现加法和减法运算:```section .datanum1 db 0num2 db 0result db 0section .textglobal _start_start:; 获取用户输入; ...; 进行加法运算; ...; 进行减法运算; ...; 输出结果; ...; 程序结束mov eax, 1xor ebx, ebxint 0x80```5. 总结通过编写一个简单的计算器程序,我们可以更好地理解汇编语言的基本概念和操作。
汇编语言虽然复杂,但它是计算机科学中不可或缺的一部分。
希望本文对读者对汇编语言的学习和掌握提供一些帮助。
汇编语言课程设计四则运算计算器
*******************实践教学*******************兰州理工大学技术工程学院2013年春季学期汇编语言实训课程设计题目:四则运算计算器专业班级:计算机科学与技术姓名:___郭利强_____学号: 11730108指导教师:刘树群成绩:计算机科学与技术专业(11级)汇编语言实训课程设计任务书题目:四则运算计算器班级: 11计算机科学与技术1班学生姓名:郭利强学号: 11730108 题目类型:软件工程(R)指导教师:刘树群一.题目简介四则运算计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
二.设计任务1、查阅文献资料,一般在5篇以上;2、要求可以进行四则运算;3、完成软件结构设计和算法设计;4、完成系统的软件开发和测试工作;5、撰写设计说明书;6、做好答辩工作。
三.主要内容、功能及技术指标1、实现功能及指标:①使用Win32的窗口程序模式,实现四则运算程序的设计与开发;②界面友好。
2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。
在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。
3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200行,否则要进一步划分。
4、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
汇编语言简单计算器程序课程设计报告
汇编语言课程设计报告( 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行显示结果。
汇编语言程序设计————计算器
目录一.设计内容 (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选题背景及意义运用汇编语言,实现简单计算器的一般功能.通过该程序设计,让我们熟悉并掌握DOS系统功能调方法用及BIOS系统功能调用方法,同时在程序设计过程中熟悉并掌握各种指令的应用,知道编程的具体流程,以及掌握DEBUG的一系列的功能执行命令,及用它进行调试,运行功能。
2主要设计内容及预期目标设计一个能实现加减乘除取余计算的程序。
将键盘输入的表达式预放入一缓冲区中,然后从该缓冲区的第一个字符开始读取判断,当读到一个有效的表达式时对表达式进行相应的运算后,输出用十六进制数表示的运算结果。
目标:要求该程序接受从键盘输入的十六进制数,执行相应的计算后,计算结果以十六进制数输出。
3 概要设计本题目实现的模块图如图3-1所示图3-1 概要模块(1)界面设置主要实现确定界面样式的功能,以菜单形式显示。
(2)选择算法设置用于选择加、减、乘、除法来进行运算。
(3)十进制转换设置应用十进制的转换算法来处理加、减、乘、除法四则运算。
4 详细设计4.1 界面设置通过定义数据段,利用09H显示出功能列表。
通过定义数据段,以字符串的形式输入每个提示信息,利用09H键盘输入并回显命令显示每一个功能提示,是计算器的功能列表有序清晰的显示在屏幕上。
4.2 选择算法设置首先选择要进行的四则运算,若选择1,则进行加法;若选择2,则进行减法;若选择3,则进行乘法;若选择4,则进行除法。
汇编计算器程序实验报告
《汇编语言程序设计》综合程序设计实验报告题目:计算器一、项目简介在我们生活中无时不刻不用到计算,虽说计算并不是很麻烦,但有的时候复杂的运算仍需要花费我们大量的时间去解决。
所以要有这样一个程序解决这个问题。
基于这个目的,而且在这个学期中,我们又接触到了汇编语言,运用汇编语言编写了计算器,来解决这个实际并且经常遇到的问题。
改程序主要针对加减乘除运算,可以进行相对复杂的问题,包含括号的相关运算。
该问题主要注意四则运算的优先级问题:惩处运算比加减运算优先级高,统计运算按从左到右的顺序计算,含有括号是应该先计算括号里面的内容。
二、小组成员具体分工徐其仲:调试汇编语言环境,设计汇编程序功能李秦:实现程序功能,撰写实验报告三、需求分析与设计问题:利用汇编语言编写计算器内容:从键盘输入一个四则运算表达式,按=号输出计算结果,并当结束时询问:是否继续?如果按q或Q,则退出,按其余任意键则继续。
计算器主要包括以下几个模块:(1)主程序模块主程序模块首先实现调用子程序clear清屏,初始化数据段,调用显示宏show显示界面,将寄存器ax,bx,cx,dx初始化赋初值为0,调用回车换行宏,输入字符或数字并判断调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级,调用加减乘除子程序match对判断出的相应运算符进行运算,输出运算结果,判断是否继续,继续则返回输入,不则退出程序。
(2)赋权宏模块通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使变元a与标号s对应,接着给对应的符号赋予权值,将其权值存入ch中。
(3)加减乘除运算子程序模块运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的符号是否为乘号,若为乘号,则将number中的数字与其下一位的数字相乘,并把结果存入该位置。
类似的若不为乘号则接着判断。
(4)调用赋权宏子程序模块该模块实现了赋权宏fq为(,),*,、,+,-,=等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级(5)清屏子程序模块本模块先将即将用到的ax,bx,cx,dx寄存器入栈保存,通过ah=06h屏幕上卷功能,用bh=07h将屏幕设置为黑底白字,给dh,dl赋值将其清屏位置设定在30行80列范围,从而实现了清屏功能,然后再讲ax,bx,cx,dx寄存器出栈(6)回车换行宏模块通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah 赋予dl输出,从而实现回车换行功能。
汇编课程设计计算器
汇编课程设计计算器一、课程目标知识目标:1. 学生能理解汇编语言的基本概念,掌握计算器程序的基本结构。
2. 学生能运用汇编语言实现加、减、乘、除等基本运算。
3. 学生了解计算机内部运算的原理,理解寄存器、内存等硬件资源在程序执行过程中的作用。
技能目标:1. 学生能运用汇编语言编写简单的计算器程序,具备基本的编程能力。
2. 学生能通过调试和优化程序,提高计算器程序的执行效率。
3. 学生能运用所学知识解决实际计算问题,具备一定的实际问题分析解决能力。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,增强学习动力。
2. 学生养成严谨、细致的学习态度,提高团队协作能力。
3. 学生认识到编程在日常生活和未来发展中的重要性,培养创新精神和实践能力。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能自主阅读汇编语言教材,理解计算器程序的基本结构。
2. 学生能独立编写简单的计算器程序,并通过调试和优化提高程序性能。
3. 学生能以小组形式合作完成复杂计算器程序的设计与实现,提高团队协作能力。
4. 学生在课程学习过程中,主动探索新知识,培养解决问题的能力和创新思维。
二、教学内容本课程教学内容主要包括以下几部分:1. 汇编语言基础知识:- 认识汇编语言,了解其发展历程和特点。
- 学习汇编语言的语法和基本指令。
- 了解计算机内部结构,理解寄存器、内存等硬件资源的作用。
2. 计算器程序设计:- 分析计算器程序的需求,明确功能模块。
- 学习汇编语言编写程序的基本方法,设计计算器程序框架。
- 掌握加、减、乘、除等基本运算的汇编实现。
3. 调试与优化:- 学习使用汇编语言调试工具,掌握调试技巧。
- 分析程序性能,提出优化方案。
- 实践优化过程,提高计算器程序执行效率。
4. 教学案例与实战:- 选取典型计算器案例,进行讲解和分析。
- 学生分组合作,完成复杂计算器程序的设计与实现。
- 组织课堂讨论,分享编程心得和经验。
简易计算器的汇编语言程序设计报告
陕西理工学院--VF课程设计报告设计内容:计算器程序设计学院信息:管理学院班级:会计1204班制作人员:史凡史明坤学号:1220034149指导教师:周作涛目录一、程序功能设计界面............... 错误!未定义书签。
二、程序流程图及其说明.............. 错误!未定义书签。
1 程序流程图 (4)2 流程图说明..................... 错误!未定义书签。
三、程序调试 (5)1.初始界面 (5)2.加法运算实现界面............... 错误!未定义书签。
3.除法运算实现................... 错误!未定义书签。
4.减法运算....................... 错误!未定义书签。
5. 乘法运算实现.................. 错误!未定义书签。
6.清屏后的界面................... 错误!未定义书签。
四、心得体会 (6)五、参考文献 (9)六、附录(代码) ...................... 错误!未定义书签。
一、程序基本概况1 程序界面该课程设计的任务是做一个简易计算器,可以实现加减乘除四则运算。
我们要解决的问题有:以什么方式输入数字、判断是进行什么运算、运算过程中的进位和借位问题以及如何实现清屏等问题。
首先我们要解决的是输入问题,这里我们用vf的自定义的按钮来进行个人输入;然后我们要进行的是判断是进行何种运算,到底是“+、-、*、/”中的哪一种。
当点击ON/c时,则清屏。
点击退格时则消减一位数字。
具体界面如下图:2程序功能介绍本次设计的为简易计算器程序,可以进行简单的四则运算,并对计算的结果及过程能及时并准确的显示。
二、初步设计构想本次课程设计以设计简易计算器为主,功能较为简单,内容相对较少,但其界面必须清晰明了,不能过于繁琐,应由一个text文本框以及相关按钮组成,按钮方面应人性化对按钮进行全面分析设计,使使用者能更好更简洁的使用相关操作。
汇编语言程序的设计————计算器
课程设计说明书题目: 表达式计算器学号: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将字符串显示出来。
汇编语言课程设计任务书--简易计算器,实现整数(2个字节的无符号数)的四则运算
简易计算器,实现整数(2个字节的无符号数)的四则运算
指导教师
谷赫
答疑教师
谷赫
设计时间
2011年12月31日-----2012年1月6日
设计要求
一、设计目的
1.对已学过的汇编语言程序设计知识进行综合运用;
2.能按要求设计出可执行的汇编源程序并进行调试。
二、设计任务
1、通过键盘输入操作数和运算符后,显示出算式和运算结果。
知识改变生活精品word文档值得下载值得拥有知识改变生活精品word文档值得下载值得拥有汇编语言程序设计课程设计任务书简易计算器实现整数2个字节的无符号数的四则运算指导教师设计时间2011年12月31日2012设计要求一设计目的1
《汇编语言程序设计》课程设计任务书
专业
计算机科学与技术
班级
电算B10209
01月04日:根据流程图,编写汇编语言源程序。
01月05日:调试汇编语言源程序,完成基本功能,得出最后结果。
01月06日:准备资料,进行答辩。
注:上交设计报告。重点阐述程序的有关算法说明、程序的流程图以及子程序的功能和参数的说明及程序代码。
系(教研室)主任签字:年月日
2、分析问题,给出程序流程图。
3、适当的使用子程序。
4、调试汇编语言源程序。
三、知识点掌握掌握并深入理解汇编语言程序 Nhomakorabea计方法;
掌握汇编语言提供的指令及其使用方法;
掌握中断的基本概念,并熟悉DOS功能调用的使用方法;
学会汇编语言源程序调试的全过程。
四、时间安排
12月31日:收集资料,进行问题分析,得到程序流程图。
汇编语言课程设计四则运算计算器概要
微机原理实验报告汇编语言课程设计报告( 2012 -- 2013 年度第1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋实现加减乘除四则运算的计算器1 实验目的深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。
通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
第一步,用INT 21H的1号功能调用来进行输入。
利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。
我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。
在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。
第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。
纯软件六位简单计算器汇编语言程序设计
课程设计报告(年度第一学期)名称:微机原理及应用题目:纯软件六位简单计算器汇编语言程序设计成绩:日期日一、课程设计的目的与要求纯软件六位简单计算器汇编语言程序设计能完成十位十进制数的加、减、乘、除运算以及平方运算,操作过程与普通计算器相同,即先输入一个操作数,然后按下+、-、×、÷键,再输入下一个操作数,按等号键开始运算并显示结果。
若结果超过十位,则显示“E”。
在位计算机上实现,要求尽量与真实计算器相似。
分工:一人负责界面、主程序框架,另一人负责算法,具体分配二人可协调。
二、设计正文1.设计思想阐述本设计为纯软件计算器,基本需要完成加、减、乘、除运算以及平方运算。
从加法出发,通过对原有字节加法与加法的十进制调整,扩展为多字节相加;同理,将减法扩展为多字节相减。
乘法,可以在加法实现的基础上,将乘法实现为多次相加;除法,可以在减法的基础上,与乘法不同的是,需要考虑商和余数两个问题,即对被除数不断的减去除数,直至其比被除数小,则此时余下的数为余数,减掉的次数为商。
设计开始时,我们讨论了两种存储数据的方法,一种是将数据存为十六进制数,一种是按每一位的字符形式存储。
前者在运算上有优势,乘法和除法可转化为移位操作,但是不便于显示;后者在运算上稍微复杂,但由于有十进制调整命令,而且显示与读入都很方便。
所以程序中采用了按每一位的字符存储的方法。
2.系统工作原理介绍(系统框图、接线原理图)由于本设计为纯软件,无实物连接与硬件搭建。
3.系统软件介绍(程序框图、源程序)(1)主要函数介绍1)madd多字节相加函数,能够完成两个已字符形式按十进制位存储的十进制数的加法运算。
实现过程是,对应数位相加,十进制调整后,结果存放于AL,进位存放于AH。
然后将AL存到结果变量中,AH赋值到AL,AL清零。
2)msub多字节相减函数,能够完成两个已字符形式按十进制位存储的十进制数的减法运算。
实现过程是,对应数位相减,同时减去AH(借位),十进制调整后,结果存放于AL,若有结尾,则AH置1。
汇编--计算器
目录一、计算器的具体功能.......................................... 错误!未定义书签。
二、软件设计流程极其描述.................................. 错误!未定义书签。
三、源程序代码 (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)。
CODES ENDS
END START
五.运行结果
六.设计总结
本次设计让我学到了很多关于汇编的知识,首先,本次设计是以四 则运算为主题,通过在课堂上学习的基本知识和基本方法以及平时积累 的知识和方法来实现对带符号数的加减乘除运算,在设计过程中,对我 已有的知识进行了巩固,对我之前不太了解的知识有了一定的了解,通 过亲身去编写程序,使得自己的实际动手能力得以增强。其次,通过本 次设计,使我对模块化,结构化的程序设计方法掌握的更加透彻,再 者,就是对于宏的定义,调用以及子程序的定义,调用的方法掌握的更
目录
一.设计内容 2 二.设计方案 2
1.主程序模块. 2 2.赋权值模块. 2 3.加减乘除运算子程序模块. 2 4.调用赋权宏子程序模块. 2 5.回车换行宏模块. 2 6.9号功能显示字符串宏模块. 2 三.设计框图 3 四.程序代码 4 五.运行结果 9 六.设计总结 9
计算器汇编语言程序设计
SUB AL,30H
MOV AH,0
XCHG AX,[DI]
MUL BX
MOV BX,10
XCHG AX,[DI]
ADD [DI],AX
JMP INPUT
CALL FUN
RET
MAIN ENDP
FUN
PROC
NEAR;***********************************************************
2.赋权宏模块.
通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使 变元a与标号s对应.接着给对应的符号赋予权值,将其权值存入ch中.
3.加减乘除运算子程序模块.
运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的 符号是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相 乘,并把结果存入该位置,类似的若不为乘号*则接着判断是否为除号/, 若为除号/则进行除法运算,然后判断是否为加法,为加法则进行加法 运算,接着判断是否为减法,为减法则进行减法运算并将结果存入当前
12345
*$'
STR3 DB 13,10, '*
67890
*$'
STR4 DB 13,10, '*
+-*/=
*$'
STR5 DB
0AH,0DH,'*******************************************$'
STR6 DB 13,10, 'PLEASE INPUT A FORMULA: $'
LET0:
CMP WORD PTR SIGN2,0;判断配对标志位
JE LET1
;经过左括号和右括号抵消为0则
跳转 LET1:
LET2:
LET3: LET4: 权值
LET5: 计算
LET6:
JMP LET8
;否则跳转到BC显示输入错误
CMP WORD PTR SIGN1,0
JE LET2
ADD DI,2
DB 10 DUP(0) ;保存该运算符对应的权值
ERROR DB 'WRONG!$'
DATAS ENDS
SHOW MACRO STR
;宏定义,显示字符串
LEA DX,STR
MOV AH,9
INT 21H
ENDM
FQ MACRO ASCII,A,B ;宏定义,给运算符赋权值
CMP AL,ASCII
JNE S&A
通过这次设计,我在汇编语言方面收获了很多东西,具体而言,在 宏定义,宏调用和子程序定义,调用方面我学到了比以前更多的知识, 尤其是通过子程序调用宏这种嵌套模式可以简化许多复杂的程序,让程 序更加简洁易懂,此外,这次设计让我认识到了上课认真听讲的必要 性,老师在课堂上讲解的许多知识都很重要,在本次设计中就充分体现 了这一点,所以学好课堂老师讲解的知识是很有必要的。
(1) 主程序模块. (2) 赋权宏模块.
(3) 加减乘除运算子程序模块.
(4) 调用赋权宏子程序模块.
(5) 回车换行宏模块.
(6) 9号功能显示字符串宏模块.
二.设计方案
1.主程序模块.
主程序初始化数据段,调用显示宏show显示界面,输入字符或数字 并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级, 调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算 结果,判断是否继续,继续则返回输入,不继续则退出程序.
DYFQ PROC
;子程序DYFQ调用宏FQ,判断优先级
FQ 28H,1,5
;调用宏FQ为(赋权值
S1:FQ 29H,2,1
;调用宏FQ为)赋权值
S2:FQ 2AH,3,4
;调用宏FQ为*赋权值
S3:FQ 2FH,4,4
;调用宏FQ为/赋权值
S4:FQ 2BH,5,3
;调用宏FQ为+赋权值
S5:FQ 2DH,6,3
加熟练。 本次设计是要实现对有符号数的加减乘除等四则运算,程序开始先
定义了显示界面的诸多字符串,经过显示界面,接下来,定义了判断数 字和判断运算符的存储区,通过这两个存储区来判断当前位置输入的是 数字还是运算符,然后,定义了保存数字和保存运算符的存储区,提示 错误的字符串,显示宏,赋权宏,回车换行宏等,通过主程序对各个宏 及子程序的调用,判断出输入的是数字还是运算符,若是运算符又是运 算符中的哪类运算符,然后,进行加减乘除运算,最后将运算结果存入 保存数字的存储区中,运用到显示输出模块将最后的运算结果显示出 来,从而实现了对带符号数的四则运算功能。
INT 21H
CMP AL,'='
JE LET0
CMP AL,28H
;第二种情况,第一次输入的与28H
也就是‘(’比较
JB INPUT
;小于28H=(则重新输入
CMP AL,39H
JA INPUT
;大于39H=9则重新输入
CMP AL,2FH
;判断是数字还是符号
JBE LET1
;是符号转入响应操作
INC WORD PTR SIGN1 ;是数字的话将数字标志位加1
MOV CH,B
JMP S7
ENDM
HCHH MACRO
;宏义,回车换行
MOV AH,2
MOV DL,0DH
INT 21H
MOV AH,2
MOV DL,0AH
INT 21H
ENDM
CODES SEGMENT
MAIN PROC FAR
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
PUSH AX
MOV AX,0
MOV BX,0
CMP CL,2AH
;乘法运算
JNE CHU
SUB DI,2
XCHG BX,[DI]
SUB DI,2
XCHG AX,[DI]
IMUL BX
MOV [DI],AX
ADD DI,2
JMP FINISH
CHU:
CMP CL,2FH
;除法运算
JNE JIA
SUB DI,2
STR7 DB 'CONTINUE(Y/N)?$'
SIGN1 DW 0
;值为0代表输入的不是数字,为1代
表输入的是数字
SIGN2 DW 0
;值为0代表输入的符号是匹配的,
为1输入的符号不匹配
NUMBER DW 20 DUP(0) ;保存输入的数值
OPERATOR DB '$'
;判断输入的运算符是否为空
XCHG BX,[DI]
SUB DI,2
XCHG AX,[DI]
CWD
IDIV BX
MOV [DI],AX
ADD DI,2
JMP FINISH
JIA:
CMP CL,2BH
;加法运算
JNE JIAN
SUB DI,2
XCHG BX,[DI]
SUB DI,2
ADD [DI],BX
ADD DI,2
JMP FINISH
6.9号功能显示字符串宏模块.
通过定义宏show,用9号显示功能,通过变元str将字符串显示出 来。
三.设计框图
开始
加载数据段附加段 显示界面
input输入数字或字符
输入的是=,数字,符号? SIGN1=0?
保存数字 显示错误 = 数字 符号 SIGN2=0? n y 下移2位将SIGN1赋0 设优先级,并判断是何符号 n y 根据符号决定运算,将值存入numb
的计算的第二个数的位置.
4.调用赋权宏子程序模块.
该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为 5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级.
5.回车换行宏模块.
通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将 0ah赋予dl输出,从而实现回车换行功能.
JNE LET7
MOV CH,2
;改变(的权值
LET7:
MOV [SI],CH
;紧跟着保存符号的权值
JMP INPUT
LET8:
LEA DX,ERROR
MOV AH,9
INT 21H
JMP EXIT
RET
FUN
ENDP;********************************************************************
;调用宏FQ为-赋权值
S6:FQ 3DH,7,0
;调用宏FQ为=赋权值