汇编语言实现简单的计算器运算
- 格式:doc
- 大小:27.50 KB
- 文档页数:3
*******************实践教学*******************兰州理工大学技术工程学院2013年春季学期汇编语言实训课程设计题目:四则运算计算器专业班级:计算机科学与技术姓名:___郭利强_____学号: 11730108指导教师:刘树群成绩:计算机科学与技术专业(11级)汇编语言实训课程设计任务书题目:四则运算计算器班级: 11计算机科学与技术1班学生姓名:郭利强学号: 11730108 题目类型:软件工程(R)指导教师:刘树群一.题目简介四则运算计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
二.设计任务1、查阅文献资料,一般在5篇以上;2、要求可以进行四则运算;3、完成软件结构设计和算法设计;4、完成系统的软件开发和测试工作;5、撰写设计说明书;6、做好答辩工作。
三.主要内容、功能及技术指标1、实现功能及指标:①使用Win32的窗口程序模式,实现四则运算程序的设计与开发;②界面友好。
2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。
在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。
3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200行,否则要进一步划分。
4、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
单片机课程设计一汇编语言实现四位数计算器
四位数计算器是一种能够进行基本数学运算的设备,它可以对四位数进行加法、减法、乘法和除法运算。
这个计算器的设计基于单片机和汇编语言,它可以方便地进行各种数学运算,满足用户的需求。
我们需要一个单片机作为计算器的核心。
单片机是一种集成电路,可以完成各种计算和控制任务。
我们选择一款适合的单片机,并将其与其他必要的电子元件进行连接,以构建一个完整的计算器系统。
接下来,我们需要使用汇编语言编写相应的程序来实现计算器功能。
汇编语言是一种低级语言,可以直接控制计算机的硬件,实现各种操作。
通过编写汇编语言程序,我们可以实现加法、减法、乘法和除法等运算。
在程序中,我们首先需要设计一个界面,将计算器的输入和输出与单片机相连接。
用户可以通过按键输入需要计算的四位数和运算符,计算器将根据用户的输入进行相应的运算,并将结果显示在数码管上。
在程序的编写过程中,我们需要考虑各种可能的输入情况,例如用户输入的数字是否超出了四位数的范围,用户是否输入了错误的运算符等。
我们需要对这些情况进行处理,保证计算器的运算结果是准确的。
除了基本的加减乘除运算,我们还可以在计算器中添加其他功能,
例如开根号、取余数等。
这些功能的实现也需要通过编写相应的汇编语言程序来完成。
通过单片机和汇编语言的结合,我们可以实现一个功能完备的四位数计算器。
这个计算器可以方便地进行各种数学运算,满足用户的需求。
通过合理的设计和编程,我们可以使计算器的使用变得简单而高效,为用户提供便利的计算体验。
计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。
二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。
2.编译并运行程序,测试其功能的正确性。
3.运用调试工具进行程序的调试,检查代码的运行流程。
三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。
我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。
2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。
然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。
最后,使用输出指令来显示结果。
3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。
4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。
如有错误,进行适当的修改和调试。
5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。
四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。
程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。
经过多次测试,程序的功能、正确性和性能都符合预期要求。
五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。
在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。
同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。
六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。
我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。
同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。
学号:课程设计题目简易计算器的设计学院自动化专业电气工程及其自动化班级姓名指导教师2014 年1月9日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 简易计算器的设计初始条件:用8086CPU、8255A并行通信接口、七段LED数码管接口、小键盘控制电路接口、外围电路芯片及元器件实现一个简易计算器,完成相应的程序编写。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)可进行2位十进制的加减乘除法运算。
(2)键盘输入数据,同时LED数码管显示,模拟计算器的工作。
(3)键盘上要求有0~9数字键,+、-、×、÷、=功能键,清除键C。
(4)撰写课程设计说明书。
内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:12月26日----- 12月 28 日查阅资料及方案设计12月29日----- 1 月 2 日编程1 月 3日----- 1 月 7日调试程序1 月 8日----- 1 月 9日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1设计的任务及要求 (2)2方案的设计 (3)2.1方案设计论证 (3)2.2方案概述与原理硬件电路图 (3)3系统模块与功能 (5)3.18086CPU芯片 (5)3.2 8255A 并行通信接口芯片 (5)3.3 译码电路 (6)3.4 小键盘电路 (6)3.5 四位七段 LED 数码管显示电路 (7)4软件设计框图与程序 (8)4.1计算器系统程序总体流程图 (8)4.2 模块程序流程图与程序 (8)4.2.1流程图 (8)4.2.2键盘扫描流程图 (9)4.3输入运算 (10)4.3.1输入运算的流程图 (10)4.3.2输入运算程序 (10)4.4显示部分 (11)4.4.1显示部分流程图 (11)4.4.2显示部分程序 (12)5系统仿真 (14)6小结与体会 (15)参考文献 (16)附录:设计源程序 (17)本科生课程设计成绩评定表摘要这次微机原理的课程设计的题目是简易计算器的设计,设计一个可以实现2位十进制加减乘除运算功能的电路,并用LED显示出来。
精选10个汇编语言程序案例集
1. 汇编语言编写的计算器程序,这个程序可以接受用户输入的两个数字,然后执行加减乘除等运算,并将结果输出到屏幕上。
2. 文件复制程序,这个程序可以使用汇编语言编写,实现将一个文件的内容复制到另一个文件中的功能。
3. 简单的操作系统内核,使用汇编语言编写一个简单的操作系统内核,可以包括基本的文件管理和进程调度功能。
4. 汇编语言写的游戏,例如经典的贪吃蛇游戏或者俄罗斯方块游戏,这些游戏可以使用汇编语言编写。
5. 串口通信程序,使用汇编语言编写一个可以通过串口进行通信的程序,可以实现数据的发送和接收。
6. 硬件驱动程序,编写一个简单的汇编语言程序,可以控制硬件设备,例如控制LED灯的亮灭。
7. 汇编语言编写的加密解密算法,实现一个简单的加密解密算
法,例如凯撒密码或者简单的异或运算。
8. 简单的图形界面程序,使用汇编语言编写一个简单的图形界面程序,可以实现基本的窗口和按钮等功能。
9. 汇编语言编写的网络通信程序,实现一个简单的网络通信程序,可以进行基本的数据传输和接收。
10. 汇编语言编写的嵌入式系统程序,例如可以编写一个控制LED灯的嵌入式系统程序,可以通过按键控制LED的亮灭。
实验六简易计算器实验目的:1.掌握汇编语言程序的综合应用。
实验设备:计算机一台。
预装Windows XP、宏汇编MASM5。
实验内容A:编写能够实现以下要求的汇编语言程序,并上机实现。
1.编程实现一个3位的加、减计算器(两个运算数和结果均不超过3位),在键盘上键入XXX+XXX=,即可显示出结果并结束工作。
实验内容B:编写能够实现以下要求的汇编语言程序,并上机实现。
1.A程序只能实现大数减小数,如3-2,2若-3则不行。
修改程序使得可以处理。
2.A程序结果总要输出3位,如结果为3,输出便为003。
修改程序使得能够去掉前面的无效0。
预习要求:1.阅读实验内容A的参考源程序,对其结构以及实现方法进行分析,在理解的基础上掌握编程方法。
2.根据要求,编写实验内容B的源程序。
3.编辑建立实验内容A和实验内容B的源程序文件,存入U盘保存。
4.写出预习报告,报告中应有实验内容B的源程序清单。
实验步骤:1.编辑建立实验内容A的源程序,对其进行汇编、链接获得可执行文件。
运行可执行文件,实现实验内容A的要求。
2.参考实验内容A的源程序,编辑建立实验内容B的源程序,对其进行汇编、链接获得可执行文件。
如果在汇编、链接过程中有错误产生,则根据提示信息逐一修改错误,直到无错误产生。
运行可执行文件,实现实验内容B的要求。
重要提示:1.为了能够实现小数减大数得到负数结果,需要在做运算前先进行一次比较,若被减数小于减数则交换两数,并先输出一“-”。
2.为了能够去掉无效0,可以先将3位结果存起来(如同保存输入字符一样),然后从最高位开始查找不为0的位,从此位开始执行输出。
实验内容A参考程序:NAME DEMO7DATA SEGMENTSTRING DB 100 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA BX,STRINGLP1: MOV AH,1 ; 将输入的字符存入string起始的区域中,直到输入“=” INT 21HMOV [BX],ALINC BXCMP AL,'='JNE LP1LEA BX,STRINGMOV CX,0LP2: MOV AL,[BX] ; 将第1个加数转换成二进制CMP AL,'+'JE LP3CMP AL,'-'JE LP3AND AL,0FHMOV AH,0PUSH AXMOV AX,10MUL CXPOP CXADD CX,AXINC BXJMP LP2LP3: PUSH AXPUSH CXMOV CX,0INC BXLP4: MOV AL,[BX] ; 将第2个加数转换成二进制CMP AL,'='JE LP5AND AL,0FHMOV AH,0PUSH AXMOV AX,10MUL CXPOP CXADD CX,AXINC BXJMP LP4LP5: POP AX ; 根据要求做加法或减法POP BXCMP BL,'+'JNE LP6ADD AX,CXJMP LP7LP6: SUB AX,CXLP7: MOV CL,100 ; 将结果转换成十进制输出 DIV CLPUSH AXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV AL,AHMOV AH,0MOV CL,10DIV CLPUSH AXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV DL,AHADD DL,30HMOV AH,2INT 21HRETSTART ENDPCODE ENDSEND BEGIN实验B参考程序:DATA SEGMENTSTRING DB 100 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA BX,STRINGLP1: MOV AH,1 ; 将输入的字符存入string起始的区域中,直到输入“=”INT 21HMOV [BX],ALINC BXCMP AL,'='JNE LP1LEA BX,STRINGMOV CX,0LP2: MOV AL,[BX] ; 将第1个加数转换成二进制CMP AL,'+'JE LP3CMP AL,'-'JE LP3AND AL,0FHMOV AH,0PUSH AXMOV AX,10MUL CXPOP CXADD CX,AXINC BXJMP LP2LP3: PUSH AXPUSH CXMOV CX,0INC BXLP4: MOV AL,[BX] ; 将第2个加数转换成二进制 CMP AL,'='JE LP5AND AL,0FHMOV AH,0PUSH AXMOV AX,10MUL CXPOP CXADD CX,AXINC BXJMP LP4LP5: POP AX ; 根据要求做加法或减法POP BXCMP BL,'+'JNE LP6ADD AX,CXJMP LP7LP6:CMP AX, CXJA LPXCHG AX, CXpush axmov dx, 45mov ah, 2int 21hpop axLP: SUB AX, CXLP7: MOV CL,100 ; 将结果转换成十进制输出 DIV CLPUSH AXMOV DL,ALCMP DL,0JE L1ADD DL,30HMOV AH,2INT 21HPOP AXMOV AL,AHMOV AH,0MOV CL,10DIV CLPUSH AXMOV DL,ALCMP DL,0ADD DL,30HMOV AH,2INT 21HPOP AXMOV DL,AHADD DL,30HMOV AH,2INT 21HRETL1: POP AXMOV AL,AHMOV AH,0MOV CL,10DIV CLPUSH AXMOV DL,ALCMP DL,0JE L2ADD DL,30HMOV AH,2INT 21HL2: POP AXMOV DL,AHADD DL,30HMOV AH,2INT 21HRETSTART ENDP CODE ENDSEND BEGIN。
51单片机简易计算器设计报告(一)背景介绍在数字化时代,计算器作为一种简单易用的工具,越来越得到人们的关注和热爱。
而基于51单片机的简易计算器,不仅可以成为一种学习电子技术的手段,还具有满足简单计算需求的实用性。
设计思路本计算器采用键盘输入和数码管输出的电路设计,为用户提供加、减、乘、除、小数点、退位以及等于等功能。
1.键盘输入采用矩阵键盘的方式,将所有按键按行列排列,并利用51单片机中断方式来读取键值。
2.计算处理通过编写相应的程序代码,计算出用户输入的两个数值及操作符的结果,并将结果存储在数据缓存器中,最后将其输出至数码管。
3.数码管显示根据计算结果的数据类型,将其经过相应的转换处理后,通过数码管将结果输出至用户。
设计技术1.软件编写软件编写方面,采用汇编语言进行编写,代码总长度为2.2KB 左右。
其中,以中断方式读取键值、实现数值存储与判断、计算处理、数码管的结果输出等作为关键点进行编写。
2.硬件搭建硬件搭建方面,需要按照电路图进行搭建,并将51单片机与相关周边电路进行连接。
根据设计思路,将键盘、数码管、电源、指示灯等设备按照需求进行连接。
可改进之处虽然 51单片机的简易计算器的搭建能够满足基本计算需求,但其在以下几方面还有可改进之处:•添加计算科学函数,如三角函数、对数函数等。
•改进操作方式,使其更加符合人体工程学原理。
•添加储存器,使用户能够将计算结果进行存储和调用。
总结通过本次对基于51单片机的简易计算器的设计与实现,我们深入了解了电子技术的基本概念和硬件搭建原理,并了解到了简单嵌入式系统的工作原理。
虽然该计算器在功能和效率方面还有待改进,但对于初学者来说,其对于电子技术的学习和实验还是很有价值和意义的。
•编写的汇编代码过于繁琐,可考虑使用高级语言编写以提高效率和易读性。
•在电路搭建时需注意布线的合理性,尽量避免出现干扰和信号损失的问题。
综上所述,基于51单片机的简易计算器的设计和实现虽存在一些不足,但还是很有价值的。
十进制加减法计算器单片机设计一、设计目的通过课程设计使学生更进一步掌握单片机原理与应用课程的有关知识,提高用汇编语言编程的能力,并将所学的内容加以综合。
通过查阅资料,了解所学知识的应用情况。
二、课程设计要求设计十进制加减法计算器。
要求能(不同时)显示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口工作于输入方式。
IBMPC汇编语言程序设计第二版答案在IBMPC汇编语言程序设计第二版中,你将学习到关于汇编语言的基本概念和技巧,以及如何在IBMPC上进行程序设计。
本文将为你提供该教材的答案,以帮助你更好地理解和掌握相关知识。
第一章:引言本章主要介绍了汇编语言的概念和历史背景,以及为什么学习汇编语言在计算机科学领域中至关重要。
课后习题包括:1. 解释汇编语言的概念和作用。
2. 证明学习汇编语言的重要性。
第二章:基本概念本章讨论了汇编语言的基本概念,包括寄存器、内存、指令、操作数等。
课后习题包括:1. 列出IBMPC的主要寄存器及其作用。
2. 解释内存和指令的概念。
3. 指出指令中的操作数是什么以及如何使用它们。
第三章:汇编语言程序的结构本章介绍了汇编语言程序的结构,包括程序开始和结束的标记、数据段和代码段的定义等。
课后习题包括:1. 解释并举例说明程序开始和结束标记的作用。
2. 编写一个简单的汇编语言程序,包含数据段和代码段的定义。
第四章:数据传送和运算指令本章详细讨论了数据传送和运算指令,并提供了具体的例子和实践习题。
课后习题包括:1. 解释MOV指令的功能和用法。
2. 使用ADD指令完成两个数相加的程序。
第五章:程序控制指令本章讲解了程序控制指令,如条件和无条件转移指令、循环指令等。
课后习题包括:1. 说明条件转移指令如何工作。
2. 使用循环指令编写一个计算阶乘的程序。
第六章:子程序本章介绍了子程序的概念和使用方法,以及如何传递参数和返回值。
课后习题包括:1. 解释子程序的作用和优势。
2. 编写一个带有参数和返回值的子程序。
第七章:栈与堆栈本章详细讨论了栈的概念和操作,以及堆栈的使用方法。
课后习题包括:1. 说明栈和堆栈的区别。
2. 编写一个使用堆栈实现函数调用的程序。
第八章:位操作与逻辑运算本章介绍了位操作和逻辑运算的指令,以及如何使用它们进行位级别的操作。
课后习题包括:1. 解释位操作指令的功能和应用。
汇编语言实现简单的计算器运算
DA TAS SEGMENT
x dw 0
op db 0
DIV ARRAY dw 10000,1000,100,10,1
DA TAS ENDS
stack segment
db 100 dup(?)
stack ends
CODES SEGMENT
ASSUME CS:CODES,DS:DA TAS,ss:stack START:
MOV AX,DATAS
MOV DS,AX
next:
call do_cal ;输入第一个表达式如:5+3=
call show ;输出表达式结果
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h ;回车换行
jmp next ;跳回输入第二个表达式
do_cal: ;输入表达式
call input ;输入数
cmp al,'e'
jz exit
MOV OP,AL
CMP OP,'+'
jnz next1
call do_add
jmp next5
next1:
CMP OP,'-'
JNZ NEXT2
CALL DO_SUB
JMP NEXT5
NEXT2:
CMP OP,'*'
JNZ NEXT3
CALL DO_MUL
JMP NEXT5
NEXT3:
CMP OP,'/'
JNZ NEXT4
CALL DO_DIV
jmp next5
NEXT4:
cmp op,'='
call show
next5:ret ;判断运算符input: ;输入数字xor bx,bx
mov cx,10
skip: MOV AH,1
INT 21H
cmp al,'0'
jl skip1
cmp al,'9'
jg skip1
push ax
mov ax,bx
mul cx
mov bx,ax
pop ax
and al,0fh
xor ah,ah
add bx,ax
jmp skip
skip1:ret
do_add: ;加法
mov x,bx
call input ;输入第二个数
add bx,x
ret
do_sub: ;减法
mov x,bx
call input ;输入第二个数
sub x,bx
mov bx,x
ret
do_mul: ;乘法
mov x,bx
call input ;输入第二个数
mov ax,bx
mul x
mov bx,ax
ret
do_div: ;除法
mov x,bx
xor dx,dx
call input ;输入第二个数
mov ax,x
cwd
div bx
mov bx,ax
ret
show: ;显示输出
MOV CX,5
MOV AX,bx
MOV SI,OFFSET DIV ARRAY LP1: mov dx,0
DIV WORD PTR [SI]
PUSH DX
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
add si,2
POP AX
LOOP LP1
ret
exit: MOV AH,4CH
INT 21H
CODES ENDS
END START。