汇编语言简单计算器程序课程方案报告[]
PIC16F877A简单计算器设计报告 汇编语言 四位无符号整数加减乘除
课程设计报告课程名称:单片机原理与接口技术课程设计设计题目:简单计算器院系:机电工程学院班级:2010级电气工程及其自动化专业姓名:学号:指导教师:史丽萍,闫广明,张波,张扬,王冠然设计时间:2013年12月一、设计方案描述与论证我们所设计的是一个简单计算器,它具有四位数以内的整数加减乘除运算。
可以在输入错误的时候退格,也可以初始化。
在初始化的状态下可以进行关机以减少耗能。
显示使用的数码管扫描显示的方法来显示数字,所以我们每一次运算前我们都需要将个位、十位、百位和千位相结合。
我们使用的是4×4的键盘,检测的时候是进行键盘扫描来完成确定哪一个键被摁下,然后是否释放。
键盘被摁下后,先判断是什么键。
如果是数字键,则进行数的输入,首先先把百位的数值赋给千位,十位赋给百位,个位赋给十位,然后把摁下键的对应数赋给个位。
如果是算法键,则将对应的算法寄存地址赋上相应算法的值,并且在下一次输入数字时把十位、百位和千位清零以完成下一次的赋值,而这一次的值将转换为一个数储存在相应的地址中。
当按下的是退格键,则将十位赋值给个位,百位赋值给十位,千位赋值给百位然后千位清零。
当按下的是等号键的时候,将前一次储存的数取出与这一次的数进行相应的运算然后将得到的二进制数拆分为个位、十位、百位和千位然后扫描显示就可以。
复位键是使用的中断,当个位、十位、百位和千位都不为零的时候按下将会初始化计算器的所有数据,如果个位、十位、百位和千位均为零这进入休眠状态等待下一次中断的唤醒。
二、硬件设计部分我们使用的是PIC16F877A单片机,使用四位的八段数码管,4×4的键盘和一个独立的中断键。
八段数码管我们使用的是共基极的接法,所以当给出低电平的时候导通,给出高电平的时候关断。
我们以RD端口来控制段选,分别以RB0控制a、RB1控制b、RB2控制c、RB3控制d、RB4控制e、RB5控制f、RB6控制g和RB7控制dp。
以RD1、RD2、RD3和RD4端口分别控制位选的千位、百位、十位和个位。
c课程设计计算器报告
c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。
2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。
2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。
3.第三章:控制结构,学习C语言的条件语句和循环语句。
4.第四章:函数,学习C语言的函数定义和调用。
5.第五章:数组和字符串,学习C语言的数组和字符串操作。
6.第六章:指针,学习C语言的指针概念和应用。
7.第七章:结构体和文件,学习C语言的结构体和文件操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生理解C语言的应用。
3.实验法:安排实验课程,让学生动手编写C语言程序。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
评估方式要求客观、公正,能够全面反映学生的学习成果。
我们将根据学生的实际情况,及时给予反馈,帮助学生提高。
六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。
c简单计算器课程设计报告
c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。
2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。
3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。
技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。
2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。
3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。
情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。
2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。
3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。
本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。
课程性质为实践操作类,强调学生在动手实践中掌握知识。
在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。
课程目标分解为具体学习成果,以便于后续教学设计和评估。
在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。
2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。
- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。
4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。
- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。
教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。
汇编语言课程设计--简单计算器设计
《微机原理与应用》课程设计实验题目:简单计算器设计年级: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 概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (2)3 系统概要设计 (2)3.1 系统的功能模块划分 (2)3.2 系统流程图 (3)4系统详细设计 (4)5 测试 (5)5.1 正确输出 (5)5.2 实际输出 (6)6 小结 (7)参考文献 (8)附录 (9)附录1 源程序清单 (9)汇编语言课程设计报告(2011)实现加减乘除四则运算计算器的设计1 概述1.1 课程设计目的运用汇编语言,实现简单计算器的一般功能.通过该程序设计,让我们熟悉并掌握DOS系统功能调方法用及BIOS系统功能调用方法,同时在程序设计过程中熟悉并掌握各种指令的应用,知道编程的具体流程,以及掌握DEBUG的一系列的功能执行命令,及用它进行调试,运行功能。
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
由于汇编语言如此的接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。
由此可见汇编语言的重要性,学好这门课程,同样可为相关的专业打下基础。
汇编语言程序设计课程设计是在教学实践基础上进行的一次试验,也是对该课程所学理论知识的深化和提高。
因此,要求学生能综合应用所学知识,设计和制造出具有具有一定功能的应用系统,并且在实验的基本技能方面进行了一次全面的训练。
此外,它还可以培养学生综合运用所学知识独立完成汇编程序课题的能力,使学生能够较全面的巩固和应用课堂上所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
它同样可以提高学生运用理论去处理实际问题的能力和独立思考的能力,使学生的编程思想和编程能力有所提高,最终达到熟练地掌握编写汇编源程序的基本方法的目的。
1.2 课程设计内容设计一个能实现加减乘除取余计算的程序。
汇编语言简单计算器程序课程设计报告
汇编语言课程设计报告( 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行显示结果。
计算机汇编语言实验报告
计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。
二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。
2.编译并运行程序,测试其功能的正确性。
3.运用调试工具进行程序的调试,检查代码的运行流程。
三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。
我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。
2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。
然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。
最后,使用输出指令来显示结果。
3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。
4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。
如有错误,进行适当的修改和调试。
5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。
四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。
程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。
经过多次测试,程序的功能、正确性和性能都符合预期要求。
五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。
在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。
同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。
六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。
我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。
同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。
汇编计算器程序实验报告
《汇编语言程序设计》综合程序设计实验报告题目:计算器一、项目简介在我们生活中无时不刻不用到计算,虽说计算并不是很麻烦,但有的时候复杂的运算仍需要花费我们大量的时间去解决。
所以要有这样一个程序解决这个问题。
基于这个目的,而且在这个学期中,我们又接触到了汇编语言,运用汇编语言编写了计算器,来解决这个实际并且经常遇到的问题。
改程序主要针对加减乘除运算,可以进行相对复杂的问题,包含括号的相关运算。
该问题主要注意四则运算的优先级问题:惩处运算比加减运算优先级高,统计运算按从左到右的顺序计算,含有括号是应该先计算括号里面的内容。
二、小组成员具体分工徐其仲:调试汇编语言环境,设计汇编程序功能李秦:实现程序功能,撰写实验报告三、需求分析与设计问题:利用汇编语言编写计算器内容:从键盘输入一个四则运算表达式,按=号输出计算结果,并当结束时询问:是否继续?如果按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输出,从而实现回车换行功能。
项目报告 简易计算器 单片机汇编语言
项目报告三、简易计算器一、任务分析利用MOVC、DB指令编写程序。
用单片机实验箱来实现简易计算器的功能,实现的现象是“1+2=3”,是通过独立式按键来控制数码管来实现“1+2=3”的。
二、硬件电路图三、程序框图主程序:按键子程序:四、程序代码;显示1+2=3,效果”1+23“逐个数码管显示,数码管动态显示ORG 0000HAJMP MAINORG 0100HMAIN: MOV SP,#60HMOV DPTR,#TAB;---------------------------------M1: ACALL ANJIANMOV A,50HCJNE A,#0,M2AJMP M1;--------------------------------- M2: CJNE A,#1,M3MOV 20H,AMOV P1,#20HMOVC A,@A+DPTRMOV P0,AAJMP M1;----------------------------------- M3: CJNE A,#2,M4MOV P1,#10HMOVC A,@A+DPTRMOV P0,AAJMP M1;---------------------------------- M4: CJNE A,#3,M5MOV 21H,AMOV P1,#08HMOVC A,@A+DPTRMOV P0,AAJMP M1;---------------------------M5: MOV A,20HADD A,21HINC AMOV P1,#04HMOVC A,@A+DPTEMOV P0,AAJMP M1;------------------------ ANJIAN: MOV 50H,#0JB P2.0,J1ACALL DELAY10MSJB P2.0,J1AJ0: JNB P2.0,$ACALL DELAY10MSJNB P2.0,AJ0MOV 50H,#1RETJ1: JB P2.1,J2ACALL DELAY10MSJB P2.1,J2AJ1: JNB P2.1,$ACALL DELAY10MSJNB P2.1,AJ1MOV 50H,#2RETJ2: JB P2.2,J3ACALL DELAY10MSJB P2.2,J3AJ2: JNB P2.2,$ACALL DELAY10MSJNB P2.2,AJ2MOV 50H,#3RETJ4: JB P2.3,RETTACALL DELAY10MSJB P2.3,RETTAJ4: JNB P2.3,$ACALL DELAY10MSJNB P2.3,AJ4MOV 50H,#4RETT: RET;----------------------------DELAY10MS: MOV R5,#20L1: MOV R6,#250DJNZ R6,$DJNZ R5,L1RET;---------------------------TAB: DB 00H,06H,46H,5BH,4FHEND五、仿真效果按下k1键第一位数码管显示 1按下k2键第二位数码管显示+按下k3键第三位数码管显示2按下k4键第四位数码管显示1+2的值3六、心得体会在经过这次实验后,我发现在编程时必须先想好流程图不然在完美的程序也出不了结果。
汇编课程设计计算器
汇编课程设计计算器一、课程目标知识目标: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文本框以及相关按钮组成,按钮方面应人性化对按钮进行全面分析设计,使使用者能更好更简洁的使用相关操作。
汇编语言课程设计任务书--简易计算器,实现整数(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日:收集资料,进行问题分析,得到程序流程图。
纯软件六位简单计算器汇编语言程序设计
课程设计报告(年度第一学期)名称:微机原理及应用题目:纯软件六位简单计算器汇编语言程序设计成绩:日期日一、课程设计的目的与要求纯软件六位简单计算器汇编语言程序设计能完成十位十进制数的加、减、乘、除运算以及平方运算,操作过程与普通计算器相同,即先输入一个操作数,然后按下+、-、×、÷键,再输入下一个操作数,按等号键开始运算并显示结果。
若结果超过十位,则显示“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中输入一空格以备计算结果时用。
重庆交通大学汇编语言计算器实验报告
重庆交通⼤学汇编语⾔计算器实验报告重庆交通⼤学设计性实验报告班级: 计信2013级2班学号: 631306060207 姓名:李国昊实验项⽬名称:计算器实验项⽬性质:设计性实验实验所属课程: c#课程实训实验室(中⼼): B01 407 指导教师:何伟实验完成时间: 2015 年 6 ⽉ 6 ⽇⼀、实验⽬的学⽣靠所学知识在c#语⾔环境下独⽴完成计算器的设计与功能的实现。
⼆、实验内容及要求实现计算器的基本加、减、乘、除,清零、三⾓函数、指数、开⽅、数制转换等功能。
三、实验设备及软件使⽤c#进⾏编程四、实验过程及步骤1、设计主界⾯2、设计各部分窗体3、⽤内置函数编写代码并实现各部分功能4、调试程序五、主要代码及运⾏结果//进制转换namespace TaskFour{public partial class FrmMtoN : Form{public FrmMtoN()}private void Form1_Load(object sender, EventArgs e) {radioButton1.Checked = true;textBox1.Text = "0";label2.Text = "⼆t进?制?:阰0000";label3.Text = "⼋?进?制?:阰0000";}public string MToN(string src,int m,int n){src = src.ToUpper();double srcInt = 0;int temp=0;string dest = "";string strDest="";for (int i = 0; i < src.Length; i++){string srci = "";switch (src[i]){case'A': srci = "10"; break;case'B': srci = "11"; break;case'C': srci = "12"; break;case'D': srci = "13"; break;case'E': srci = "14"; break;case'F': srci = "15"; break;default: srci = src[i].ToString(); break;}temp = int.Parse(srci);srcInt = srcInt + temp*Math.Pow(m, src.Length-i-1); } //srcInt 把?原-来ぁ鋗进?制?转羇换?为a⼗?进?制? while ((int)srcInt!=0){switch (temp.ToString()){case"10": stemp = "A"; break;case"11": stemp = "B"; break;case"12": stemp = "C"; break;case"13": stemp = "D"; break;case"14": stemp = "E"; break;case"15": stemp = "F"; break;default: stemp = temp.ToString(); break;}dest += stemp;srcInt = srcInt / n;}for (int j = dest.Length-1; j >= 0; j--){strDest += dest[j];}if (string.IsNullOrEmpty(strDest))strDest = "0000";return strDest;}private void button1_Click(object sender, EventArgs e){string src = textBox1.Text.Trim();if (radioButton1.Checked == true){label2.Text = "⼆t进?制?:阰" + MToN(src, 10, 2);label3.Text = "⼗?六ⅷ?进?制?:阰" + MToN(src, 10, 16); }else if (radioButton2.Checked == true){label2.Text = "⼗?进?制?:阰" + MToN(src, 2, 10);label3.Text = "⼗?六ⅷ?进?制?:阰" + MToN(src, 2, 16);{label2.Text = "⼆t进?制?:阰" + MToN(src, 16,2);label3.Text = "⼗?进?制?:阰" + MToN(src, 16,10);}}private void panel1_Paint(object sender, PaintEventArgs e){}private void radioButton2_CheckedChanged(object sender, EventArgs e) { }}}//开⽅与指数运算namespace TaskFour{public partial class FrmOther : Form{public FrmOther(){InitializeComponent();}private void button3_Click(object sender, EventArgs e) {textBox1.Text = "0000";label4.Text = "结á果?为a:阰0000";}private void button4_Click(object sender, EventArgs e) {textBox2.Text = "0000";textBox3.Text = "0000";label5.Text = "结á果?为a:阰0000";}public double StrToDouble(string str){double dNumber = 0.0;dNumber = double.Parse(str);}catch (Exception ex){MessageBox.Show("?⽰?:阰" + ex.Message); }return dNumber;}private void button1_Click(object sender, EventArgs e) { string str = textBox1.Text.Trim();double num = StrToDouble(str);double sum = Math.Sqrt(num);label4.Text = "结á果?为a:阰" + sum.ToString();}private void button2_Click(object sender, EventArgs e) { string str1 = textBox2.Text.Trim();string str2 = textBox3.Text.Trim();double num1 = StrToDouble(str1);double num2 = StrToDouble(str2);double sum = Math.Pow(num1,num2);label5.Text = "结á果?为a:阰" + sum.ToString();}private void FrmOther_Load(object sender, EventArgs e) { }private void groupBox2_Enter(object sender, EventArgs e) { }}}//常规四则运算namespace TaskFour{public partial class FrmSum : Form{public FrmSum()}private void FrmSum_Load(object sender, EventArgs e) {tb_1.Text = "0000";tb_2.Text = "0000";lbSum.Text = "0000";lbSum.BackColor = Color.White;private void btnReset_Click(object sender, EventArgs e) {tb_1.Text = "0000";tb_2.Text = "0000";lbSum.Text = "0000";cbbSum.Text = "@";}private void btnSum_Click(object sender, EventArgs e) {string str1 = tb_1.Text.Trim();string str2 = tb_2.Text.Trim();float f1 = 0.0f;float f2 = 0.0f;float fSum = 0.0f;try{f1 = float.Parse(str1);f2 = float.Parse(str2);}catch(Exception ex){MessageBox.Show("?醒?:阰"+ex.Message); return;}string str = cbbSum.Text.Trim();switch (str)case"-": fSum = f1 - f2; break;case"*": fSum = f1 * f2; break;case"/": if(f2 == 0) { MessageBox.Show("分?母?不?允ê许í为a0"); return; }; fSum = f1 / f2; break; case"@": MessageBox.Show("请?选?择?运?算?符?!?"); return;default: MessageBox.Show("⾮?法ぁ?操ù作痢?); return;}lbSum.Text = fSum.ToString();}private void lbSum_Click(object sender, EventArgs e){private void cbbSum_SelectedIndexChanged(object sender, EventArgs e) {}}}//三⾓函数运算namespace TaskFour{public partial class FrmTriFuc : Form{public FrmTriFuc(){InitializeComponent();}private void FrmTriFuc_Load(object sender, EventArgs e){lbSum.BackColor = Color.White;rbSin.Checked = true;tbNumber.Text = "0000";rbDuShu.Checked = true;}private void btnReset_Click(object sender, EventArgs e){lbSum.BackColor = Color.White;rbDuShu.Checked = true;tbNumber.Text = "0000";}public double StrToDouble(string str){double dNumber = 0.0;try{dNumber = double.Parse(str);}catch (Exception ex){MessageBox.Show("?⽰?:阰" + ex.Message); } return dNumber;}private void btnSum_Click(object sender, EventArgs e) { string str = tbNumber.Text.Trim();double num = StrToDouble(str);double sum = 0.0;if (rbDuShu.Checked == true){num = num / 180.0 * Math.PI;}if (rbSin.Checked == true){sum = Math.Sin(num);}else if (rbCos.Checked == true){sum = Math.Cos(num);}else if (rbTan.Checked == true){else if (rbArcsin.Checked == true){sum = Math.Asin(num) * 180 / Math.PI; }else if (rbArccos.Checked == true){sum = Math.Acos(num) * 180 / Math.PI; }else{sum = Math.Atan(num) * 180 / Math.PI; }lbSum.Text = sum.ToString();}}}运⾏结果:1.主界⾯2.常规运算4.进制转换5.开⽅与指数运算六、⼼得体会通过这次实训使我巩固了以前的知识并在此基础上对c#的特点和算法有了更深的了解。
汇编语言课程设计——计算器讲解
*******************实践教学*******************兰州理工大学技术工程学院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) 参考文献、致谢等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个人资料整理仅限学习使用课程设计说明书题目: 简单计算器院系:专业班级:学号:学生姓名:指导教师: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设计目的通过本次的课程设计,使自己加深对汇编语言的了解,应用《汇编语言程序设计》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能里的目的。
通过本次课程设计的训练,可以使我在基本思路和基本方法上对基于8086/8088和基于ARM核的汇编语言程序设计有一个比较感性的认识,并具备一定程度的设计能力,从而能够熟练掌握编写汇编语言源程序的基本方法和基本构架,学会编写顺序结构、分支结构、循环结构和子程序的汇编程序,掌握程序中数据的产生与输入输出的方法以及一些关于汇编语言更深层次方面有初步的认识。
2概要设计2.1 系统总体分析本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计我设计的这个简单计算器可以一次运行,多次使用。
本程序使用了函数和宏混用的方式实现了代码的较好的可读性,使程序看起来结构严谨。
2.2 主模块框图及说明本程序的功能结构图如图2-1:图 2-1功能结构图程序流程图如图2-2:图2-2流程图3 详细设计3.1 主模块及子模块说明主模块:主要完成程序的主体框架结构,提供人-程序的交互。
子模块:主要完成对数据的加工,处理。
3.2 各模块详细设计主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。
如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。
整个过程按“ESC”结束。
流程图如下图3-1:图3-1 主模块流程图代码如下:CURS MACRO A,BMOV AH,2 。
置光标位置MOV BH,0 。
页号为0MOV DH,A 。
设置光标的坐标为(A.B>MOV DL,BINT 10H 。
BIOS调用ENDM。
-------------------------------DISPMSG MACRO MESSAGELEA DX,MESSAGE 。
传递MESSAGE的偏移地址MOV AH,9 。
显示字符串INT 21H 。
DOS调用ENDM。
----------------------------------CLEAR MACRO COLOR 。
清屏MOV AH,6 。
屏幕初始化MOV AL,0 。
页号MOV CH,0 。
设置左上角的坐标为(0,0>MOV CL,0MOV DL,100 。
设置右上角的坐标为<100,100)MOV DH,100MOV BH,COLOR 。
卷入行属性INT 10H 。
BIOS调用ENDM.MODEL SMALL.STACK.DATA 。
数据段定义MSG0 DB '* * * * * * * * * * * * * * * * * * * *',0DH,0AH 。
,0dh,0ah,0dh,0ah DB ' * *',0DH,0AH。
db '* *',0dh,0ah。
db '* *',0dh,0ahDB ' * --------caculater-------- *',0DH,0AH 。
,0dh,0ah,0dh,0ahDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * NUM1:'DB ' *',0DH,0AH 。
,0dh,0ah,0dh,0ah,0dhDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DHDB ' * NUM2:'DB ' *',0DH,0AH 。
,0dh,0ah,0dh,0ah,0dhDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DHDB ' * RESULT:'DB ' *',0DH,0AH,0DH 。
,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh DB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * * * * * * * * * * * * * * * * * * * *','$'MSG1 DB 'choose +,-,*,/','$'MSG2 DB 'you choose wrong','$',0AH,0DHMSG3 DB 'Press ESC to Exit!',0DH,0AH,'$'MSG4 DB 'Press any key to continue!',0DH,0AH,'$'MSG5 DB '-','$'MSG6 DB '.','$'MSG7 DB 'error input!','$'MSG8 DB 'data2 is wrong!','$'NUM1 DW ?NUM2 DW ?子模块:完成对数据的进一步加工处理,转换格式并得出结果。
首先根据输入调用对应的“+”、“-”、“*”、“/”四大函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几大模块服务的,大致的流程图如下图3-2:NY图3-2 子模块流程图代码如下:BEGIN PROC NEARBACK: CLEAR 1EHCURS 2,20 。
设置光标为<2.20)DISPMSG MSG0 。
显示用户界面CURS 8,41 。
设置光标为<8,41),第一行MOV BX,0MOV CX,2NEWCHAR1:MOV AH,1 。
键盘输入并回显INT 21H 。
DOS 调用CMP AL,30H 。
检查输入的字符是不是数字JAE J1 。
如果不是,则转移至J1JMP D2 。
是,转移到D2执行J1: CMP AL,39H 。