微机原理实验 简易计算器
数电实验二:简易计算器(设计报告)

数电实验2设计报告实验名称:简易计算器 实验目的:1.熟练掌握综合逻辑电路的设计方法及调试方法2.掌握Verilog HDL 数字系统设计方法3.熟悉PLD 实验箱的结构和使用及QuartusII 软件的基本操作4.掌握采用Quartus II 软件和实验箱设计实现逻辑电路的基本过程设计任务及要求:利用LPM 例化元件和适当的中小规模时序、组合逻辑电路设计一个4位简易计算器,实现2个4位二进制数的加、减、乘、除运算,完成主要模块的波形仿真,并将设计下载到实验箱进行功能测试。
要求:1、 用8个开关分别作为2个4位输入数据2、 运算结果用数码管显示电路设计过程:1、 设定加、减、乘、除四个LPM 例化元件加法器:2个四位二进制输入(加数、被加数),1个4位二进制输出(和)减法器:2个四位二进制输入(减数、被减数),1个4位二进制输出(差)乘法器:2个四位二进制输入(乘数、被乘数),1个8位二进制输出(积)除法器:24位二进制输出(分别代表商和余数)2、加入组合逻辑电路和4选一数据选择器,控制进行运算的种类(1)组合逻辑电路输入:功能:为了利用矩阵键盘对计算器对输入数字的加减乘除进行控制,我们画了这个组合逻辑电路,将矩阵键盘的行管脚和列管脚分别为输入后,当(1,1)位置的按键按下,则输出端输出2位2进制数11(控制减法操作),当(2,2)位置的按键按下,则输出端输出2位2进制数10(控制加法操作),当(3,3)位置的按键按下,则输出端输出2位2进制数01(控制乘法操作),当所有按键都没有按下时,输出默认为00,即控制除法操作。
(2)4选一数据选择器功能X1,y1为想要计算的两个4位2进制数,当S0,S1为11的时候,将X1,y1送入减法器输入端,当S0,S1为10的时候,将X1,y1送入加法器输入端,当S0,S1为01的时候,将X1,y1送入乘法器输入端,当S0,S1为00的时候,将X1,y1送入除法器输入端。
微机原理课程设计简易计算器

-O一一〜二O—二学年第一学期信息科学与工程学院自动化系课程设计计划书二o—年十二月六日一、课题名称简易计算器设计二、课题目的利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。
熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管设计。
加强对8088数据总线,地址总线及接口寻址的理解,加深对8255的端口控制的理解。
三、需求分析(1)能够实现99以内的加减乘法运算,并显示在2位LED上。
(2)对于减法运算产生的负数,可在LED上显示号,若负量超过9,则显示“E0S四、方案选择方案一:该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。
方案二:该方案则是将LED显示电路和键盘扫描电路分别接在两个不同的8255上,扫描和显示时,选中不同的8255。
方案三:该方案则只用一片8255驱动LED显示和键盘扫描电路。
方案评估:方案一:LED显示驱动电路实现起来较简单,但是很浪费系统总线资源,舍弃!方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,与建设资源节约型社会初衷冲突!舍弃!方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!)综上所述:采用方案三!五、程序流程图程序总流程图:判断输入流程图: 断电开始I六. 系统原理图键盘映射图:键盘编码图:系统原理图:注:1、复位电路单独画在旁边,其参数设置符合6MHZo2、74HC04反相器由于位置不够,本人自己画了一个小型的74HC04。
3、IOW, IOR信号线由于采用了最大系统组态,故由8288的IORC 和AIOWC 代替。
4.8088的CLK由8284A提供,其电路连接方式参照Datasheet5、最大系统组态连接方式参照课本。
6、LED与键盘扫描电路的上拉电阻阻值统一采用,保证数码管有足够亮度。
汇编语言课程设计--简单计算器设计

《微机原理与应用》课程设计实验题目:简单计算器设计年级: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设计目的汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。
同时,汇编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。
由于汇编语言如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。
用汇编语言编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言其程序速度更无法与汇编语言程序同日而语。
本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。
微机课设简易计算器

微机课程设计报告题目简易计算器仿真学院(部)信息学院专业通信工程班级2011240401学生姓名张静学号3312 月14 日至12 月27 日共2 周指导教师(签字)吴向东宋蓓蓓单片机十进制加法计算器设计摘要本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。
软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。
引言十进制加法计算器的原理与设计是单片机课程设计课题中的一个。
在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。
关键词:单片机、计算器、AT89C52芯片、汇编语言、数码管、加减乘除目录摘要 (01)引言 (01)一、设计任务和要求.............................1、1 设计要求1、2 性能指标1、3 设计方案的确定二、单片机简要原理.............................2、1 AT89C51的介绍2、2 单片机最小系统2、3 七段共阳极数码管三、软件设计...................................4、1 系统设计四、调试与仿真.................................5、1 Keil C51单片机软件开发系统5、2proteus的操作五、心得体会....................................参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................一、设计任务和要求1.1 设计要求本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计,设计任务为:设计一键盘显示装置,键盘上除需定义10个十进制数字键外还要相应的功能键,其它键不定义无响应。
单片机实践简易计算器实验报告

单片机实践简易计算器实验报告本次实验的目的是通过单片机实现一个简易计算器,实现加减乘除四则运算。
在实验过程中,我们使用了STC89C52单片机,通过编写程序实现计算器的功能。
实验步骤:1. 确定硬件电路连接我们需要确定硬件电路连接。
本次实验使用的是STC89C52单片机,需要将其与LCD1602液晶屏、4x4矩阵键盘、蜂鸣器等硬件连接。
具体连接方式如下:STC89C52单片机:P0口:连接LCD1602液晶屏的数据线D0-D7P1口:连接LCD1602液晶屏的控制线RS、RW、EP2口:连接4x4矩阵键盘的行线R1-R4P3口:连接4x4矩阵键盘的列线C1-C4P4口:连接蜂鸣器2. 编写程序接下来,我们需要编写程序实现计算器的功能。
程序主要分为以下几个部分:(1)LCD1602液晶屏初始化(2)4x4矩阵键盘扫描(3)计算器功能实现(4)LCD1602液晶屏显示结果3. 调试程序编写完程序后,我们需要进行调试。
在调试过程中,我们需要注意以下几点:(1)检查硬件连接是否正确(2)检查程序是否有语法错误(3)检查程序是否能够正常运行4. 实验结果经过调试,我们成功实现了一个简易计算器。
在使用过程中,用户可以通过4x4矩阵键盘输入数字和运算符,计算器会自动进行计算,并在LCD1602液晶屏上显示结果。
同时,计算器还具有清零、退格等功能,方便用户进行操作。
总结:通过本次实验,我们学习了单片机的基本原理和编程方法,掌握了如何使用单片机实现一个简易计算器。
同时,我们还学习了如何进行硬件电路连接和程序调试,提高了我们的实践能力和动手能力。
简易计算器的设计

学号:课程设计题目简易计算器的设计学院自动化专业电气工程及其自动化班级姓名指导教师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显示出来。
8086简易计算器的设计-计算机硬件-微机原理-课程设计

计算机硬件技术实践报告题目简易计算器的设计姓名专业自动化(电站方向)班级学号上海电力学院自动化工程学院一、设计题目及目的本次课程设计的实验目的是:通过该实验掌握较复杂程序的设计;能独立完成用程序对8086、8255A控制键盘和LED显示的控制,完成计算器加减法的应用;独立编写程序,明白和掌握程序的原理和实现方式;学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用;进一步加强理论知识与应用相结合的实践和锻炼,为以后的设计提供经验。
这次设计实践,加深了我对专业知识和理论知识学习的认识和理解,使我的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
我们的具体任务是用8086设计一个能实现0~9整数加减乘除法的运算器,并用2位LED数码显示,键盘包括0-9,+ ,-,×,÷,=,NO/C共16个按键。
二、小组成员分工及成果在实验课程要求下,我们选择基于8086CPU的模拟计算器设计。
要完成设计首先需要构建简单的微型计算机应用系统,其次是确定组成各部件的芯片,然后画原理图,根据相应的原理以及实现过程,编写出相应的汇编代码。
再根据原理图连接硬件电路,电路连接完成后进行调试。
设计过程中我们用到了8086CPU、可编程并行输入/输出芯片8255A、74HC138、74HC373、矩阵式键盘、LED数码管。
我们的模拟计算器能实现2位十进制数以内的加减乘除法运算。
首先,本组的三个成员一起讨论研究简易计算器设计的主要方案。
粗略设计程序流程图以确定简易计算器设计的大概框架。
明确目的后各自查询资料了解设计原理、逐步清晰设计思路。
以下为大体分工:主要负责:1、设计主要程序,编写;2、查找资料验证修改;主要负责:1、选择需要用的各个芯片;2、设计硬件原理图;主要负责:1、各个芯片功能的资料查找;2、设计程序流程图三、设计方案思路用8086设计一个能实现0~9整数加减乘除法的运算器,并用2位LED数码显示,键盘包括0-9,+ ,-,×,÷,=,NO/C共16个按键。
简易计算器实验报告

简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。
二、实验原理1、四则运算的优先级规则在数学运算中,先计算括号内的表达式,然后按照先乘除后加减的顺序进行计算。
乘除法的优先级高于加减法,如果在同一级运算中,按照从左到右的顺序进行。
2、数据结构的选择使用栈(Stack)数据结构来存储操作数和运算符。
栈具有先进后出的特点,非常适合处理表达式中的括号和优先级。
3、算法思路首先,将输入的表达式进行解析,将数字和运算符分别存储到不同的栈中。
然后,根据运算符的优先级进行计算,将计算结果重新压入栈中,直到表达式计算完毕。
三、实验设备及环境1、编程工具:选择了 Python 语言作为主要的编程工具,使用PyCharm 集成开发环境进行代码编写和调试。
2、操作系统:Windows 10 操作系统。
四、实验步骤1、定义数据结构定义两个栈,一个用于存储操作数(operandStack),一个用于存储运算符(operatorStack)。
2、表达式解析遍历输入的表达式字符串,将数字转换为整数并压入操作数栈,将运算符压入运算符栈。
遇到左括号直接压入运算符栈,遇到右括号则进行括号内的运算。
3、运算处理当运算符栈不为空时,取出栈顶的运算符和两个操作数进行计算。
根据运算符的优先级进行相应的运算,将结果压入操作数栈。
4、最终结果当表达式解析完毕后,操作数栈中的唯一元素即为表达式的计算结果。
五、代码实现```pythonclass SimpleCalculator:def __init__(self):selfoperandStack =selfoperatorStack =def calculate(self, expression):for char in expression:if charisdigit():selfoperandStackappend(int(char))elif char in '+/()':if char =='(':selfoperatorStackappend(char)elif char ==')':while selfoperatorStack-1!='(':operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackpop()else:while selfoperatorStack and selfhasHigherPrecedence(selfoperatorStack-1, char):operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackappend(char)while selfoperatorStack:operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)return selfoperandStackpop()def hasHigherPrecedence(self, op1, op2):if op1 in '/' and op2 in '+':return Trueelif op1 in '+' and op2 in '+':return Falseelif op1 in '/' and op2 in '/':return Falsereturn Falsedef performOperation(self, operand1, operand2, operator):if operator =='+':return operand1 + operand2elif operator =='':return operand1 operand2elif operator =='':return operand1 operand2elif operator =='/':if operand2 == 0:raise ValueError("除数不能为 0")return operand1 / operand2if __name__ =="__main__":calculator = SimpleCalculator()expression ="2 + 3 (4 1) / 2"result = calculatorcalculate(expression)print("计算结果:", result)```六、实验结果与分析1、测试用例及结果输入表达式:"2 + 3 4",计算结果:14输入表达式:"(2 + 3) 4",计算结果:20输入表达式:"5 2 3",计算结果:-1输入表达式:"10 / 2 + 1",计算结果:62、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。
简易计算器

实验六简易计算器实验目的: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。
微机原理课设--简易计数器设计

1.总体设计思想及主要功能1.1总体设计思想程序主要分为主程序,输入子程序,输出子程序,加法子程序,减法子程序,乘法子程序,除法子程序。
根椐输入的符号选用不同的运算子程序,最后调用输出子程序。
各个程序的具体做法,详见后面的流程图和分析。
本程序的关键是在输入、输出程序,值得特别注意的地方是call 和ret的调用,而且还要清楚跳转的返回地址;由于计算器比数学用表等计算工具要先进得多,应该积极倡导学生加速用计算器取代数学用表的进程。
从键盘输入数据与运算符;可以进行加、减、乘、除四则运算,输入和输出的数均必须为十进制的。
输入的数据最大为双字的,。
如果输入的除数为0;输出错误信息。
输入的表达式有误,输出错误信息。
输入的两个数,不能除尽时,输出除数输入错误信息。
如果输入了空格,同样输出错误信息。
输出的数据最大可输出4字,为的是输出乘除法的结果。
除法最后所得结果可为小数点后四位值。
1.2实现的主要功能(1)输入和输出的数均为十进制的。
(2)输入的数据最大为双字的且必须是数字,当输入字母或其他非数字符号时,输出错误信息。
(3)如果输入的除数为0;输出错误信息。
(4)输入的表达式有误,输出错误信息。
(5)输入的两个数,有一个大于双字,输出错误信息。
(6)如果输入了空格,输出错误信息。
(7)输出的数据最大可输出4字,为的是输出乘法的结果。
(8)除法有不能整除的情况时,输出小数结果保留小数点后四位并显示除数输入错误信息。
2.简单计算器的流程图2.1 主程序的流程图主程序设计思路说明:输入的数据如果超过双字,就会溢出,因为我定义的存储器为双字的。
输入什么样的数都会有一个范围,一定得有这个信息。
根据输入的符号调用相应的函数。
除法和别的不一样,还要输出余数,并且,除数不能是0。
所以我就在里面调用了输出函数,要输出两次,而外面只能输出一次,为了更好输出结果,我就只好这样了。
输入y可以继续进行运算,要注意的是,要把原来的数给清0,不然得不到答案。
微型计算机原理与接口技术简易计算器系统设计

微型计算机原理与接口技术简易计算器系统设计计算器是一种能够进行基本算术运算的设备,它通常包括数字输入、运算功能、显示屏和输出等部分。
在设计计算器系统时,我们首先需要确定计算器的硬件结构和组成,然后再考虑如何实现各个功能模块之间的接口。
首先,我们需要确定计算器的硬件结构,包括中央处理器(CPU)、存储器、输入设备、输出设备和控制器等。
其中,CPU负责执行计算器的运算逻辑,存储器用于存储运算过程中的数据,输入设备用于接收用户的输入,输出设备用于显示计算结果,控制器用于控制各个部件之间的数据传输和协调工作。
接下来,我们需要考虑如何实现输入设备和CPU之间的接口。
常见的计算器输入设备有键盘和按钮,这些设备通常以二进制码的形式将输入的数字和操作符传输给CPU。
在接口设计中,我们可以使用行列扫描和键盘编码等技术,将键盘上每个按钮与一个独立的编码对应,通过扫描键盘的行和列,可以确定用户按下的是哪个按钮,并将对应的编码传输给CPU。
接着,我们需要考虑如何实现CPU和存储器之间的接口。
存储器通常分为寄存器和内存两部分,寄存器用于存储CPU运算过程中的中间结果,内存用于存储用户输入的数据和计算结果。
在接口设计中,我们可以使用地址线和数据线来实现CPU与存储器之间的数据传输。
通过选择不同的地址线,CPU可以读取和写入不同的数据,从而实现数据的存储和读取等操作。
最后,我们需要考虑如何实现CPU和输出设备之间的接口。
输出设备通常是液晶显示屏或数码管等,它们用于显示计算结果。
在接口设计中,我们可以使用数据线和控制线来实现CPU与输出设备之间的数据传输和控制。
通过向输出设备发送指定的数据和控制信号,CPU可以控制输出设备实现相应的显示功能。
综上所述,微型计算机原理与接口技术是一个涉及计算机硬件结构、工作原理和接口设计的重要课程。
在本简易计算器系统设计中,我们考虑了计算器的硬件结构和组成,以及输入设备、存储器、CPU和输出设备之间的接口。
微型计算机原理与接口技术简易计算器系统设计

×××学号×××××《微型计算机原理与接口技术》计程课设2008级本科)(简易计算器系统设计目:题系(部)院:××××××××××电气工程及其自动化业:专作者姓名:×××××××职称:指导教师:××××完成日期:年月日××××课程设计任务书目录一、设计目的 (1)二、设计任务与要求 (1)三、总体方案论证 (1)3.1方案1 (1)3.1.1 8255A与键盘接口 (2)3.1.2 8255A与LED数码管接口 (5)3.2方案2 (8)3.2.1使用设备 (8)3.2.2 参数定义 (8)3.2.3使用方法 (8)四、硬件设计 (9)五、软件设计 (9)5.1程序设计思路 (9)5.2程序中的关键技术 (10)六、流程图设计 (11)七、程序调试运行 (13)7.1程序编写 (13)7.2上机编译与调试 (13)7.3运行结果 (14)八、总结 (16)参考文献 (17)微机原理与接口技术课程设计成绩评定表 (24)一、设计目的1、进一步加深对微机系统的理解和认识,提高微机系统的应用水平。
2、进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。
3、初步加强自己的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。
二、设计任务与要求1、可以进行十进制数四则运算。
用按键输入数据;具有清零和复位功能;具有连续运算功能。
2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。
微机原理课程设计任务书04(简易计算器)

2、能实现10以内的加、减、乘、除单步运算并显示结果,
3、能够显示“错误”提示;
4、能够中止还未输入完的计算式。
课程设计任务书
3.对本课程设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
2、《数字电子技术基础》阎石高等教育出版社2001
3、《电子电路基础》童诗白高等教育出版社1995第2版
4、《电子技术课程设计指导》高等教育出版社 彭介华2002
课程设计任务书
5.本课程设计课题工作进度计划:起迄日期 Nhomakorabea工作内容
12年
12月21日~月日12月21日~12月25日12月26日~12月28日
皖西学院
课程设计任务书
系别:
机电学院
专业:
电气自动化
学生姓名:
学号:
课程设计题目:
简易计算器设计
起迄日期:
12月24日~1月4日
课程设计地点:
教学实验楼B楼
指导教师:
下达任务书日期: 12年12月21日
课程设计任务书
1.本次课程设计应达到的目的:
1、综合运用相关课程中所学到的理论知识去独立完成某一设计课题;
12月29日~1月3日
12月31日~1月4日
1月5日
下达设计任务书
完成原理设计
系统仿真
安装调试
撰写设计报告
答辩或成绩考核
教研室主任审查意见:
负责人签字:
年月日
1、根据技术指标及实验室条件自选方案设计出原理电路图(用propel 99),分析工作原理,选择元件参数。
微机原理简易计算器课程设计.

DATA SEGMENT STRING DB 0DH,0AH,'PLEASE PRESS +,-,*,/:$' BUFF DB 10 DB 0 DB 10 DUP(0 ARRAY1 DB 0DH,0AH,'PLEASE INPUT DATA1:$' ARRAY2 DB 0DH,0AH,'PLEASE INPUT DATA2:$' ARRAY3 DB 0DH,0AH,' INPUT THE CHANGE NUMBER:$' ARRAY4 DB 0DH,0AH,'s(10-16,w(16-10,q or others(+-*/:$' ARRAY DW 2 DUP(0 RESULT DB 10 DUP(0,'$' str db 0AH,0DH num db 4 dup(?,'H$' tab db '0123456789ABCDEF' CRLF DB 0DH,0AH,'$' wro db 13,10,'input is wrong:$' m dw 10 dup(? rec db 5 dup(? MESSAGE5 DB 'Please enter the number....',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX PP1: mov dx,offset ARRAY4 mov ah,09 int 21h MOV AH,01 INT 21H PUSH AX MOV DX,OFFSET CRLF MOV AH,9 INT 21H POP AX CMP AL,'q' JZ last CMP AL,'s' JZ next1 cmp al,'w' jz next2 jmp aged LAST:MOV AH,4CH INT 21H AGED: MOV DX,OFFSET ARRAY1 MOV AH,9 INT 21H MOVDX,OFFSET BUFF MOV AH,0AH INT 21H CALL ABC CMP CX,0 JZ LAST MOV [ARRAY],AX MOV DX,OFFSET ARRAY2 MOV AH,9 INT 21H MOV DX,OFFSET BUFF MOV AH,0AH INT 21H CALL ABC CMP CX,0 JZ LAST MOV[ARRAY+2],AX INPUTAG: MOV DX,OFFSET STRING MOV AH,09H INT 21H MOV AH,01 INT 21H PUSH AX MOV DX,OFFSET CRLF MOV AH,9 INT 21H POP AX CMP AL,'+' JZ A1 CMP AL,'-' JZ A2 CMP AL,'*' JZ A3 CMP AL,'/' JZ A4 JMP INPUTAG next1:jmp ijk next2:jmp main A1: MOV AX,[ARRAY] MOVBX,[ARRAY+2] ADD AX,BX CALL DEF JMP PP1 A2: MOV AX,[ARRAY] MOV BX,[ARRAY+2] CMP AX,BX JB KK SUB AX,BX JMP K1 KK: PUSH AX MOV AH,02H MOV DL,'-' INT 21H POP AX SUB BX,AX MOV AX,BX K1: CALL DEF JMP PP1 A3: MOV AX,[ARRAY] MOV BX,[ARRAY+2] MUL BX CALL DEF JMP PP1 A4: MOV AX,[ARRAY] MOV BX,[ARRAY+2] MOV DX,0 DIV BX CALL DEF JMP PP1 ABC PROC MOV CH,0 MOV BX,OFFSET BUFF MOV CL,[BX+1] CMP CX,0 JZ ABCD PUSH CX ADD BX,2 PUSH BX L0: SUB byte ptr [BX],30H INC BX LOOP L0 POP BX MOV AX,0 MOV CH,0 MOV CL,[BX-1] L1: MOV DL,10 MUL DL ADD AL,BYTE PTR [BX] INC BX LOOP L1 POP CX ABCD: RET ABC ENDPDEF PROC MOV SI,OFFSET RESULT ADD SI,4 MOV byte ptr [SI+1],"$" MOV CX,5 AG1: MOV DX,0 MOV BX,10 DIV BXPUSH DX ADD DL,30H MOV [SI],DL DEC SI POP DX LOOP AG1 MOV CX,4 AG3: INC SI MOV AL,[SI] CMP AL,30H JNZ NOZEARO LOOP AG3 INC SI NOZEARO: MOV DX,SI MOV AH,9 INT 21H RET DEF ENDP IJK : MOVDX,OFFSET ARRAY3 MOV AH,9 INT 21H begin: mov ax,data mov ds,ax xor bx,bx mov cx,10 next: mov ah,1 int 21h cmp al,13 jz conv sub al,30h jl qqq cmp al,10 jl sss jmp qqq sss: push ax mov ax,bx mul cx mov bx,ax pop ax and al,0fh xor ah,ah add bx,ax jmp next conv: mov ax,bx mov ch,4 lea bx,tab mov cl,4 lea si,num lopa: rol ax,cl push ax and ax,000fh mov di, ax mov al, [bx+di] mov [si],al inc si pop ax dec ch jnz lopa lea dx,str mov ah,9 int 21h jmp pp1 qqq: lea dx,wro mov ah,09 int 21h jmp ijk main : push ds mov ax,data mov ds,ax mov bx,0 LEA DX,MESSAGE5 MOV AH,09H INT 21H newchar: mov ah,1 int 21h cmp al,13 jz ini sub al,30h jl qq cmp al,10 jl add_to sub al,27h cmp al,0ah jl qq cmp al,10h jge qq add_to: mov cl,4 shl bx,cl mov ah,0 add bx,ax mov m,bx jmp newchar ini: mov ax,m mov bx,10 mov si,4 change: mov dx,0 div bx mov [rec+si],dl dec si cmp ax,0 ja change mov dx,offset crlf mov ah,09 int 21h output: inc si movdl,[rec+si] add dl,30h mov ah,02h int 21h cmp si,4 jb output jmp pp1 qq :lea dx,wro mov ah,09 int 21h jmp main CODE ENDS END START。
简易计算器实验

目录第一节引言 (1)1.1 AT89C51单片机介绍 (1)1.2 LED数码管显示器概述 (4)1.3 输入设备键盘的简述 (5)第二节系统总体方案及硬件设计 (6)2.1 设计要求 (6)2.2 设计方案 (6)2.3 硬件系统设计 (6)2.3.1时钟电路设计 (6)2.3.2复位电路 (7)2.3.3显示驱动电路 (7)2.3.4蜂鸣器提示 (8)第三节软件设计 (9)3.1键盘的扫描 (9)3.2按键的处理 (10)3.3 动态数码显示 (11)第四节Proteus软件仿真 (12)4.1 Proteus ISIS简介 (12)4.2 Proteus工作过程 (12)4.2.1加法演示结果 (13)4.2.2减法演示结果 (14)4.2.3乘法演示结果 (15)4.2.4除法演示结果 (15)结束语 (26)参考文献 (27)计算器模拟系统第一节引言本设计是一个计算器模拟系统,可以实现加减乘除的运算以及对计算器的数字信息的输入和运算结果并且显示在相应的LED上,输入完毕要求有声音提示。
对于计算器模拟系统的实现,很多种语言都可以实现,但C语言是我们学到的一种高级语言程序,用它来实现程序较为简单,易于实现。
又由于要求模拟的计算器显示8位数字,所以采用八位LED动态显示,为了简化线路采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。
输出采用动态扫描的方式,每次中断时间一到,选通所要显示那一个的L ED ,并对其送相应的二进制代码,使其显示一位字符。
中断时间很短,人眼分辨不出,所以可以实现数字一起显示出来由于输入采用4X4矩阵式键盘,所以本设计避免了I/O口扩展使程序简化。
对于键盘为了消除抖动,需要进行延迟,再判断,确实有键按下后,可以根据该行不同的值用选择分支语句进行相应的操作。
八个引脚用来扫描键盘的输入,八个引脚用来驱动八位LED显示,八个引脚用作八位LED的位选信号。
简易计算器实验报告

目录1.概述 (1)2.系统软件设计 (1)2.1设计目标和实现方法 (1)2.2整体方案论证 (1)3.系统硬件的设计 (2)3.1复位电路的设计 (2)3.2时钟振荡器电路的设计 (3)3.3输入电路的设计 (4)3.4输出电路的设计 (7)4.系统程序的设计与介绍 (9)4.1读键输入程序流程图设计 (9)4.2 LED显示程序流程图设计 (11)4.3主程序流程图设计 (12)5.程序设计体会........................................... . (12)附 1 源程序代码 (14)附 2 计算器电路图 (24)1.概述随着社会的发展,科学的进步,人们的生活水平在逐步地提高,尤其是微电子技术的发展犹如雨后春笋般的变化。
电子产品的更新速度快就不足惊奇了。
计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。
现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。
本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。
通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。
1、对字符液晶显示模块的工作原理,如初始化、清屏、显示、调用及外特性有较清楚的认识,并会使用LCD(液晶显示模块)实现计算结果的显示;掌握液晶显示模块的驱动和编程,设计LCD和单片机的接口电路,以及利用单片机对液晶显示模块的驱动和操作;2、在充分分析内部逻辑的概念,进行软件和调试,学会使用,并能够以其为平台设计出具有四则运算能力简易计算器的硬件电路和软件程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【实验题目】简易计算器设计【实验目的】综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等;结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。
【基本要求】1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E;2) 16个按键的分配可以自行指定;【扩展要求】1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E;2)增加÷的功能,有小数显示;【实验程序】;该程序实现了基本要求及扩展要求的2)DSEG SEGMENTBUFF DB 6 DUP(?)LED_7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH, 39H,5EH,79H,71H,00H,40HPOSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEHUNIT10 DW 10000,1000,100,10,1NEWNUM DB 0COUNT DB 0FLAG DB 0 ;是否有键按下的标志NEGTI DB 0 ;是否为负数的标志NUM DW 0NUM1 DW 0NUM2 DW 0TAG DB 0 ;运算种类标志POINT DB 0 ;除法结果添加小数点标志RESULT DW 0DSEG ENDSCSEG SEGMENTASSUME DS:DSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,300CH ;8255初始化MOV AL,81HOUT DX,ALLEA SI,BUFF MOV CX,6NEXT:MOV BYTE PTR[SI],16INC SILOOP NEXTCALL SHOW ;将显示缓冲区中内容在LED上一次显示出来MOV COUNT,0 ;记按下了几位数NEXT2:CALL SHOWCALL SCAN ;判断是否有按键按下CMP FLAG,1JZ OKJMP NEXT2OK:MOV FLAG,0MOV POINT,0MOV DX,3000H ;判断是哪一个键被按下MOV AL,0FFHOUT DX,ALMOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FHXL:ROL CL,1INC CHMOV DX,3000HMOV AL,CL1/ 7OUT DX,ALMOV DX,3008HIN AL,DXAND AL,0FHCMP AL,0FHJZ XL ;选中下一列被扫描CMP AL,0EHJNZ FOURMOV CL,0 ;CL保存行号JMP FREEFOUR:CMP AL,0DHJNZ BAMOV CL,4JMP FREEBA:CMP AL,0BHJNZ SHIERMOV CL,8JMP FREESHIER:CMP AL,07HJNZ XLMOV CL,12FREE:ADD CH,CL ;行列值相加为按键代表的值CMP CH,9JBE SHUZICMP CH,12 ;加法JZ JIAFACMP CH,13 ;减法JZ JIANFACMP CH,14 ;乘法JZ CHENGFACMP CH,15 ;除法JZ CHUFACMP CH,11 ;等号时进行运算JZ YUNSUANCMP CH,10 ;此键清屏重新输入JZ CLEARSHUZI:INC COUNTMOV NEWNUM,CHCALL COPY ;将新输入的按键值送入显示缓冲区的最末位MOV DX,3000H ;将LED关显示MOV AL,0FFHOUT DX,ALCALL DELAY2JMP NEXT2JIAFA:MOV TAG,1 ;置加法标志CALL TO_DEC ;将输入的数转化为十进制数保存MOV AX,NUMMOV NUM1,AXJMP START ;继续输入第二个按键数JIANFA:MOV TAG,2CALL TO_DECMOV AX,NUMMOV NUM1,AXJMP STARTCHENGFA:MOV TAG,3CALL TO_DECMOV AX,NUMMOV NUM1,AXJMP STARTCHUFA:MOV TAG,4CALL TO_DECMOV AX,NUMMOV NUM1,AXJMP STARTCLEAR:JMP STARTYUNSUAN:CALL TO_DEC ;将第二次输入的数转化为十进制数保存MOV AX,NUMMOV NUM2,AXCMP TAG,1JZ SJIAFCMP TAG,2JZ SJIANFCMP TAG,3JZ SCHENGFCMP TAG,4JZ SCHUFYEAH:CALL CHULI ;将结果中零的位置16关显示MOV TAG,0MOV NEGTI,0CALL SHOWJMP NEXT2SJIAF:CALL JIAJMP YEAHSJIANF:CALL JIANJMP YEAH SCHENGF:CALL CHENGJMP YEAHSCHUF:CALL CHUJMP YEAHMOV AH,4CHINT 21HJIA PROC NEARPUSH AXPUSH CXPUSH SIMOV AX,NUM1ADD AX,NUM2JC YC1 ;溢出MOV RESULT,AXCALL TO_SHOWSHU JMP OVER1YC1:LEA SI,BUFFMOV BYTE PTR[SI],14 INC SIMOV CX,5SS0:MOV BYTE PTR[SI],16 INC SILOOP SS0OVER1:POP SIPOP CXPOP AXRETJIA ENDPJIAN PROC NEAR PUSH AXPUSH CXPUSH SIMOV AX,NUM1CMP AX,NUM2JA POSITIVEMOV NEGTI,1 ;结果为负数MOV AX,NUM2SUB AX,NUM1JC YC2JMP OVPOSITIVE:MOV AX,NUM1SUB AX,NUM2JC YC2OV:MOV RESULT,AXCALL TO_SHOWSHUJMP OVER2YC2:LEA SI,BUFFMOV BYTE PTR[SI],14INC SIMOV CX,5SS2:MOV BYTE PTR[SI],16INC SILOOP SS2OVER2:POP SIPOP CXPOP AXRETJIAN ENDPCHENG PROC NEARPUSH AXPUSH CXPUSH SIMOV AX,NUM1MUL NUM2JC YC3MOV RESULT,AXCALL TO_SHOWSHUJMP OVER3YC3:LEA SI,BUFFMOV BYTE PTR[SI],14INC SIMOV CX,5SS3:MOV BYTE PTR[SI],16 INC SILOOP SS3OVER3:POP SIPOP CXPOP AXRETCHENG ENDPCHU PROC NEAR PUSH AXPUSH CXPUSH DXPUSH SIXOR DX,DXMOV AX,NUM1DIV NUM2PUSH DXMOV RESULT,AX CALL TO_SHOWSHU MOV POINT,1LEA SI,BUFFADD SI,5MOV CX,5PEA:MOV AL,[SI-1]MOV [SI],ALDEC SILOOP PEAPOP DXMOV AX,10MUL DXXOR DX,DXDIV NUM2MOV [SI],ALPOP SIPOP DXPOP CXPOP AXRETCHU ENDPCHULI PROC NEAR PUSH SI PUSH CXLEA SI,BUFFADD SI,5XX:CMP BYTE PTR[SI],0 JNZ NOZEROMOV BYTE PTR[SI],16 DEC SIJMP XX NOZERO:CMP NEGTI,1JNZ ZHENGINC SIMOV BYTE PTR[SI],17 ZHENG:POP CXPOP SICHULI ENDPTO_DEC PROC NEAR PUSH SIPUSH AXPUSH BXPUSH CXLEA SI,BUFFMOV AL,COUNT XOR AH,AHADD SI,AXDEC SIXOR AX,AXXOR CH,CHMOV CL,COUNT AGAIN:ADD AX,AXMOV BX,AXADD AX,AXADD AX,AXADD AX,BXMOV BH,0MOV BL,[SI]ADD AX,BXDEC SILOOP AGAINMOV NUM,AXPOP CXPOP BXPOP AXPOP SIRETTO_DEC ENDPTO_SHOWSHU PROC NEARPUSH SIPUSH DIPUSH AXPUSH BXPUSH CXLEA DI,BUFFADD DI,5LEA SI,UNIT10MOV AX,RESULTMOV BYTE PTR[DI],0DEC DILOP0:XOR CL,CLMOV BX,[SI]LOP1:SUB AX,BXJB LOP3INC CLJMP LOP1LOP3:ADD AX,BXMOV [DI],CLINC SIINC SIDEC DICMP BX,1JNZ LOP0POP CXPOP BXPOP AXPOP DIPOP SIRETTO_SHOWSHU ENDPSHOW PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DICMP POINT,1 ;是否需添加小数点JNZ NOPOINTMOV CH,0FFHAA3:LEA SI,BUFFLEA DI,POSITIONMOV AL,[SI]LEA BX,LED_7XLATMOV DX,3004HOUT DX,ALMOV DX,3000HMOV AL,[DI]OUT DX,ALCALL DELAY ;延时,使一位稳定显示INC SIINC DIMOV AL,[SI]LEA BX,LED_7XLATOR AL,80H ;填小数点MOV DX,3004HOUT DX,ALMOV DX,3000HMOV AL,[DI]OUT DX,ALCALL DELAY ;延时,使一位稳定显示INC SIINC DIMOV CL,4AA2:MOV AL,[SI]LEA BX,LED_7XLATMOV DX,3004HOUT DX,ALMOV DX,3000HMOV AL,[DI]OUT DX,ALCALL DELAY ;延时,使一位稳定显示INC SIINC DIDEC CHJZ REALSTOPDEC CLJNZ AA2JMP AA3NOPOINT:MOV CH,0FFHAA1:LEA SI,BUFFLEA DI,POSITIONMOV CL,6AA:MOV AL,[SI]LEA BX,LED_7XLATMOV DX,3004HOUT DX,ALMOV DX,3000HMOV AL,[DI]OUT DX,ALCALL DELAY ;延时,使一位稳定显示INC SIINC DIDEC CHJZ REALSTOPDEC CLJNZ AAJMP AA1REALSTOP:POP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETSHOW ENDPDELAY PROC NEARPUSH BXPUSH CXMOV BX,3FFHDEL1:MOV CX,0FFFHDEL2:LOOP DEL2DEC BXJNZ DEL1POP CXPOP BXRETDELAY ENDP DELAY2 PROC NEARPUSH BXPUSH CXMOV BX,3FHDEL3:MOV CX,0FFHDEL4:LOOP DEL4DEC BXJNZ DEL3POP CXPOP BXRETDELAY2 ENDPSCAN PROC NEARPUSH AXPUSH DXKS:MOV DX,3000HMOV AL,0OUT DX,ALMOV DX,3008HIN AL,DXAND AL,0FH ;屏蔽高四位CMP AL,0FHJZ JIESHUMOV FLAG,1JIESHU:POP DXPOP AXRETSCAN ENDPCOPY PROC NEARPUSH SIPUSH CXPUSH AXMOV CX,5LEA SI,BUFFADD SI,5NEXT1:MOV AL,[SI-1]MOV [SI],ALDEC SILOOP NEXT1MOV AL,NEWNUM MOV [SI],ALPOP AXPOP CXPOP SI RET COPY ENDPCSEG ENDS END START。