8086计算器仿真

合集下载

proteus仿真8086操作方法

proteus仿真8086操作方法
Proteus 7.5 版本新增 8086 的仿真功能,对初学者提供了很 大的帮助,对价格昂贵的硬件设备试验提供了更大的空间,下面出 略介绍仿真操作过程: 略介绍仿真操作过程: 首先,Proteus 不提供对汇编语言的编译,因此我们需要借用 首先,Proteus 外部软件对汇编程序(如:QMASM、MASM......)进行编译链 外部软件对汇编程序(如:QMASM MASM......)进行编译链 QMASM、 接,下面正式介绍 8086 的仿真过程。
双击打开 双击打开 8255 的仿真 图形(就是那 个红框框)
双击 8086
出现这 个界面 后,点 击红框 框里面 的那个 文件夹 符号
选择红框 框里面的 EXE 文 件,一次 一个暂停键出现汇编调试界面

用8086实现6位十进制计算器

用8086实现6位十进制计算器

综合实验报告2015-2016 学年第一学期课程名称:微机原理与接口技术题目:数字计算器设计院系:电控学院班级:2013320602 学号:************ ******指导教师:***日期:2016.1.6设计任务书摘要本次对数字计算器的设计通过将可编程外围接口芯片8255A 与键盘和七段LED 连接,通过对8255A 编程及对键盘的操作实现计算功能:键盘码包括数字0~9、运算符号+-*/=和清零“CL”键,通过键盘依次输入第一个运算数字、运算符号、第二个运算数字、“=”,在七段LED 灯上显示运算结果,期间数字输入有误可按“CL”键之后重新输入。

关键词: 8255A ;数码管;键盘AbstractThe design of digital calculator by programmable peripheral interface chip 8255 a and seven segment LED to connect with the keyboard, in 8255 a programming and computing functions to the operation of the keyboard: the keyboard codes include the Numbers 0 to 9, operation + - * / symbols = and reset "CL" button, the input through the keyboard, sign of operation, the second operation the first number crunching Numbers, "=", the result on the seven segment LED lights display, digital input incorrectly can press "CL" after enter again.Keywords: 8255A;Digital tube; The keyboard目录设计任务书 (1)摘要 (1)Abstract (1)Keywords: (1)目录 (2)前言 (3)内容 (4)一、设计要求 (4)二、设计步骤 (4)三、软件环境及调试过程 (5)四、设计原理 (5)五、软件流程及程序设计 (6)六、系统调试 (12)七、仿真结果与分析 (14)设计总结 (15)参考文献: (15)附录: (15)前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。

基于8086的Proteus软件仿真应用

基于8086的Proteus软件仿真应用

基于8086的Proteus软件仿真应用作者:王峻崧来源:《智富时代》2018年第10期【摘要】英国的实验中心电子开发的Proteus软件支持模拟电路,数字电路,单片机和模拟ARM的仿真。

在Proteus7.5开始,可以支持8086 CPU,它为计算机学习和研究提供了极大的方便。

本文从实际应用出发,在Proteus软件中模拟LED右流水灯亮的过程。

【关键词】8086处理器;微机原理;仿真一、引言随着科学技术的不断发展,微型计算机已广泛应用于社会和经济的各个方面,因为它们的体积小,重量轻,功耗低,结构简单,可靠性高,使用方便,以及拥有高性价比。

而嵌入式系统的发展,使微型计算机系统在通信、机电一体化等方面的应用更加广泛。

本次设计,通过汇编语言控制开关的状态,用8086CPU控制8255A的端口PA,再利用74ls245芯片通过控制8只LED发光二极管,PB口接1只开关,编写程序LED灯右循环亮。

二、设计方案2.1设计原理本次设计的内容为模拟流光灯控制系统设计与实现。

根据需要,选择的芯片有8086cpu芯片,74273芯片,74ls254芯片,8255A可编程并行接口。

然后编写程序,用Proteus8软件进行仿真,控制8个LED灯实现流水效果。

2.2设计环境及设备PC机一台、windows 10系统2.3模拟灯右循环亮工作原理2.3.1现象:右向移动流水灯的实验现象是首先最左边的灯亮,然后是最左边的灯灭,此时左起第二个灯亮,依次轮流亮,直到第八个灯亮。

然后循环上述过程。

2.3.2原理:右向移动流水灯是根据发光二极管的显示原理,首先点亮最右的二极管,然后进位置一,通过带进位的循环右移指令编写程序以实现模拟流水灯的右向移动。

三、系统硬件介绍3.1 8086处理器介绍8086CPU是INTEL系列微处理器中具有代表性的高性能16位微处理器.它使用的HMOS 工艺制造,外形封装为双列直插,有40个引脚。

使用单个5V电源,8086处理器的主时钟频率为4.77MHZ。

微机原理实验---Emu8086仿真软件的使用实验

微机原理实验---Emu8086仿真软件的使用实验
新建文件(四种模板): COM模板:适合简单程序段,从代 码段的偏移地址为100H处开始存放 指令(即:源代码之前应有ORG 100H)。
EXE模板:适合完整程序的编写。 BIN模板:一般不用,因为不能 正确解释伪指令。
BOOT模板:编写程序,数据段 的段地址为07C0H。
选择COM模板, 软件出现源代码编辑器的界面, 如图所示:
(2)
存器的内容:
MOV AX,1000H ; AX=?
MOV BX,2000H ;BX=?
MOV CX,3000H ;CX=?
MOV DX, AX ;AX=? , DX=?
MOV AX, CX ;CX=?, AX =?
MOV CX, BX ;BX =?, CX =?
MOV BX, DX ;DX=?, BX=?
HLT
思考:该程序段实现什么功能?(3) 记录每条指来自执行后相关寄存器、存储器的内容:
MOV AX, 0B800H MOV DS, AX ; DS AX MOV CX, 5F41H MOV BX, 15EH MOV [BX], CX ; 将 CX的值传送到 BX 指出的内存
单元B800H:015EH中 HLT
(3)编辑源程序并保存,汇编源程序的文件扩展名 必须是ASM 。 在源代码编辑器的空白区域,编写程序。
程序编写结束,点击菜单【文件】【另存为……】, 将源程序保存,文件扩展名为.asm。
(4)编译程序 点击工具栏的【编译】按钮,对程序编译,检查语法 是否有错。如果程序有错误,编译不通过,并给出错 误提示的信息。
EMU8086集源代码编辑器,汇编/反汇编工 具以及可以运行debug的模拟器(虚拟机器) 于一身。它能够编译源代码,并在模拟器上一 步一步的执行。

EMU8086 仿真软件在《 微机原理》 课程教学中的应用

EMU8086 仿真软件在《 微机原理》 课程教学中的应用

EMU8086 仿真软件在《微机原理》课程教学中的应用楼俊君(上海电力学院电自学院信控系,上海200090)摘要:针对微机原理教学中存在的问题,提出了用EMU8086 仿真软件来解决的办法,并通过两个实例说明了该软件在汇编程序设计和接口技术方面的应用。

关键词:微机原理;EMU8086;应用0 前言《微机原理》课程是目前高校计算机专业及其相关专业学生必修的一门专业基础课,是学生学习后续课程、毕业设计和今后工作的重要技术基础。

该课程的任务是以美国Intel公司生产的16位CPU8086 为主线,介绍微型计算机的硬件结构、工作原理、汇编语言程序设计方法及微型计算机的接口技术[1]。

由于该门课程对实践动手能力要求高,涉及的信息量大、知识点多、教学内容较抽象,学生普遍反映该门课很难学。

其中汇编语言程序设计和接口技术是学生学习的两大难点。

因为汇编程序设计涉及到汇编指令系统中相应指令的使用,而8086/8088CPU的指令系统共包含92种基本指令,对指令系统的学习即是对这92 种基本指令的功能和用法的介绍,这很容易让学生感到枯燥乏味,提不起学习兴趣。

并且汇编程序运行的传统方法界面不直观,无论是教师演示或是学生实验使用起来都感到不方便。

接口技术涉及到对可编程接口芯片的访问,这部分内容较抽象,学生学习起来感觉到很难理解。

作为该课程的授课教师,如何才能解决教学中存在的上述两大难点问题呢?笔者经过较长时间的探索和实践,发现用EMU8086这款仿真软件可较好地解决上述问题。

1 EMU8086 介绍EMU8086 是Digital River 公司推出的16位CPU8086的仿真软件,它将汇编语言程序设计和虚拟接口技术有机地结合起来,其内部集成了汇编程序编译器、连接器、参考例程、学习指南,并提供了交通灯、机器人、步进电机等七个虚拟外设,是学习Intel 8086 微处理器的理想工具。

EMU8086 的工作界面为纯WINDOWS,界面友好,由菜单栏、快捷按钮栏和用户工作区构成,它能模拟真实微处理器工作的每一步骤,通过单步调试显示指令执行后CPU 内部寄存器、存储器、堆栈、变量和标志寄存器的当前值,操作简单直观,通过它学生可以很快掌握汇编程序设计和接口技术等知识。

8086仿真课程设计

8086仿真课程设计

8086仿真课程设计一、课程目标知识目标:1. 让学生掌握8086微处理器的结构、工作原理及指令系统;2. 使学生了解并掌握8086汇编语言编程的基本方法;3. 帮助学生理解8086内存管理、中断处理及I/O操作等相关知识。

技能目标:1. 培养学生运用8086汇编语言进行程序设计和调试的能力;2. 培养学生分析和解决实际问题的能力;3. 提高学生团队协作和沟通表达的能力。

情感态度价值观目标:1. 培养学生对计算机硬件及汇编语言的兴趣,激发学生主动学习的热情;2. 培养学生严谨、细致的科学态度,树立正确的价值观;3. 引导学生认识到科技进步对社会发展的作用,增强学生的社会责任感。

课程性质分析:本课程为计算机科学与技术专业核心课程,旨在使学生掌握8086微处理器的基本原理和汇编语言编程技能,为后续相关课程打下基础。

学生特点分析:学生具备一定的计算机基础知识,但对硬件及汇编语言的了解有限,需要通过本课程的学习,提高理论知识和实践技能。

教学要求:1. 理论与实践相结合,注重培养学生的动手能力;2. 注重启发式教学,引导学生主动思考、分析和解决问题;3. 强调团队合作,培养学生的沟通能力和协作精神。

二、教学内容1. 8086微处理器概述:包括发展历程、结构特点、工作原理等;教材章节:第一章2. 8086指令系统:介绍指令的分类、格式、功能及使用方法;教材章节:第二章3. 8086汇编语言编程:涵盖汇编语言基础、伪指令、宏指令等内容;教材章节:第三章4. 8086内存管理:讲解内存组织、存储器分配、地址转换等;教材章节:第四章5. 8086中断处理:介绍中断分类、中断处理过程、中断向量表等;教材章节:第五章6. 8086 I/O操作:讲解I/O端口、I/O指令、编程方法等;教材章节:第六章7. 实践环节:设计并实现8086汇编语言程序,进行调试与优化;教材章节:第七章8. 课程总结与拓展:总结8086微处理器相关知识,探讨其在新一代处理器中的应用;教材章节:第八章教学内容安排与进度:1. 前六章内容,每章安排2个课时,共计12个课时;2. 第七章实践环节,安排4个课时;3. 第八章课程总结与拓展,安排2个课时。

Emu8086仿真软件_使用手册

Emu8086仿真软件_使用手册

Emu8086-Assembler and Microprocessor Emulator是一个可在Windows 环境下运行的8086CPU汇编仿真软件。

它集成了文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器为一体,并具有在线使用指南,这对刚开始学习汇编语言的人是一个很有用的工具。

您可以在真器中单步或连续执行程序,其可视化的工作环境让使用者操作更容易。

您可以在程序执行中动态观察各寄存器、标记位以及存储器中的变化情况。

仿真器会在模拟的PC中执行程序,以避免程序运行时到实际的硬盘或内存中存取数据。

此外,该软件完全兼容Intel新一代处理器,包括了PentiumⅢ、Pentium4的指令。

一.软件启动启动界面如图1所示,用户可以选择新建文本、程序实例、启动指南、近期文档。

注册的用户名随意,密码112,即可成功。

二.新建文件单击图1中的“New”选项,软件会弹出如图2所示的选择界面。

●COM模板——适用于简单且不需分段的程序,所有内容均放在代码段中,程序代码默认从ORG 0100H开始;●EXE模板——适用于需分段的复杂程序,内容按代码段、数据段、堆栈段划分。

需要注意的是采用该模板时,用户不可将代码段人为地设置为ORG 0100H,而应由编译器自动完成空间分配;●BIN模板——二进制文件,适用于所有用户定义结构类型;●BOOT模板——适用于在软盘中创建文件。

此外,若用户希望打开一个完全空的文档,则可选择empty workspace的选项。

三.编译和加载程序用户可根据上述选择的模板中编写程序,如图3所示。

该编辑界面集文档编辑、指令编译、程序加载、系统工具、在线帮助为一体,其菜单功能如表1所示。

编写完程序后,用户只需单击工具栏上的“compile”按钮,即可完成程序的编译工作,并弹出如图4所示的编译状态界面。

若有错误则会在窗口中提示,若无错误则还会弹出保存界面,让用户将编译好的文件保存相应的文件夹中。

8086仿真实验

8086仿真实验

1微机接口实验篇1.1仿真实验平台简介硬件仿真实验平台采用了英国Labcenter公司开发的Proteus电路分析与实物仿真及印制电路板设计软件。

该软件包括两个软件模块:ISIS和ARES,ISIS主要用于原理图设计及电路原理图的交互仿真,ARES主要用于印制电路板的设计。

本章实验所使用的Proteus 软件的版本为(注意:及其以后版本的Proteus支持8086 CPU仿真),只使用ISIS。

ISIS提供的Proteus VSM(Virtual System Modeling)实现了混合式的SPICE电路仿真,它可以将虚拟仪器、高级图表应用、CPU仿真和第三方软件开发与调试环境有机结合起来,在搭建硬件模型之前即可在计算机上完成原理图设计、电路分析及程序代码实时仿真、测试及验证。

1.1.1仿真操作界面旋转编辑图 1-1Proteus ISIS 的工作界面安装Proteus软件后,会在桌面建立两个图标,分别是ISIS和ARES。

双击桌面上的ISIS图标或者单击“开始”→“程序”→“Proteus 7 Professional”→“ISIS 7 Professional”,都可以启动Proteus ISIS。

启动后的工作界面如错误!未找到引用源。

所示,主要包括:菜单栏、标准工具栏、模式选择工具栏、旋转镜像工具栏、预览窗口、元器件选择按钮、元器件选择窗口、仿真控制按钮、图形编辑窗口等。

其中:原理图编辑窗口:用于编辑电路原理图(放置元器件和进行元器件之间的连线);预览窗口:用于显示显示原理图缩略图或预览选中的元器件;编辑模式工具栏:用于选择原理图编辑窗口的编辑模式;旋转镜像工具栏:用于对原理图编辑窗口中选中的对象进行旋转和镜像等操作;元器件选择按钮:用于在元器件库中选择所需元器件,并将选择的元器件放入元器件选择窗口中;元器件选择窗口:用于显示并选择从元器件库中挑选出来的元器件;仿真控制按钮:用于控制实时交互式仿真的启动、前进、暂停和停止。

8086汇编语言实现简易计算器

8086汇编语言实现简易计算器

8086汇编语⾔实现简易计算器8086汇编语⾔实现简易计算器本周看了⼀个很有意思的知识。

C语⾔的编译器最初是怎么来的?最初应该是由汇编语⾔实现⼀个简化版C语⾔,然后使⽤简化版的C语⾔进⾏多次迭代,功能更新,从⽽出现了如今强⼤的C语⾔。

本⼈找到了⼀个古⽼的课程设计,当时学汇编时候的⼀个⼩demo分享出来。

1.概述为了更深⼊地理解计算机⼯作原理以及CPU的功能和结构,掌握汇编语⾔的使⽤。

本⽂以简易计算器程序的汇编语⾔实现为主要任务,进⾏对程序的⼀些算法和汇编语⾔语法的论述。

计算器是最简单的计算⼯具,简单计算器具有加、减、乘、除四项运算功能。

想要⽤汇编语⾔实现简单的计算器,就必须通过对数据存储,寄存器的使⽤,加减乘除相关指令以及模块的调⽤等汇编语⾔知识进⾏运⽤,以实现⼀个基本功能完善,界⾯友好,操作简便易⾏的计算器。

⽤汇编语⾔实现简单计算器还涉及到输⼊输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。

通过对各种指令的合理使⽤,设计各个功能模块。

当实现各个程序模块后,通过程序的调⽤最终实现⼀个简单的计算器。

本⽂以⽤8086汇编语⾔实现简易计算器为⽬标,对程序的算法以及结构进⾏分析和解释。

汇编语⾔的语句类型有指令语句、伪指令语句和宏指令语句。

在实现简易计算器的过程中暂不需要宏指令语句,故对此语句不进⾏介绍。

计算器的实现需要使⽤输⼊输出,DOS系统的01H,02H,09H号调⽤可以完成所需功能。

由于简易计算器对结果没有很⾼的范围要求,故对四则运算只需考虑ADD,SUB,MUL,DIV等指令。

在计算器中,输⼊的是10进制数字,⽽在汇编语⾔中读⼊字符只能⼀位⼀位的读取,故需要使⽤MUL设置⼀个循环算法,将输⼊的数字以16进制形式放⼊寄存器中,⽽输出则是使⽤MOD设置⼀个循环算法,将16进制转化为10进制后处理为ASCII码进⾏输出。

2.程序算法结构简易计算器程序的任务主要有处理输⼊数据,选择运算⽅式进⾏计算,显⽰算式结果。

8086简易计算器的设计-计算机硬件-微机原理-课程设计

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个按键。

8086微处理器模型_PROTEUS

8086微处理器模型_PROTEUS

8086微处理器模型功能Proteus VSM 8086是Intel 8086处理器的指令和总线周期仿真模型。

它能通过总线驱动器和多路输出选择器电路连接RAM和ROM及不同的外围控制器。

目前的模型能仿真最小模式中的所有的总线信号和器件的操作时序,但是对最大模式的支持还没有实现。

此外,因为内部存储区域能被定义,所以外部总线行为的仿真不需要编程获取和数据存储读/写的操作。

模型属性此外,8086模型支持许多的调试诊断种类,这些都可以通过使能配置诊断对话框里的选项来实现。

你可以通过Debug菜单或是元器件的右键菜单来进行这些操作.支持的汇编程序和编译器对于8086来说汇编程序和编译器的选择是非常广泛的,在下面的表中所列出来的工具都是已经通过测试的.我们推荐使用与表中所列出的工具一样的版本,因为在调试信息格式中并且允许对Microsoft(Codeview)和Borland格式中包含了调试信息的程序可以进行源和/或反汇编级别的调试.所有的调试格式允许源级调试和全局变量的观察,但是只有Borland格式支持对局部变量的观察。

COM文件和BIN文件的调试信息必需分开写在DBG文件中。

这个模型的一个值得称赞的地方就是模型虽然加载的是EXE和COM格式的文件,但是在没有IBM PC BIOS或者MS-DOS存在的情况下也能运行程序。

但是它们不能在标准的RTL(Run-Time Libraries)下被编译,因为标准的编译器的RTLs利用的是BIOS和MS-DOS的函数调用。

不同的汇编程序的编译器对调试信息的生成有特定的选项。

在此,我们将提供你在开始使用8086模型时所选择的编译器的信息。

所有的例子将生成没有RTL但带有调试信息的EXE或COM文件,所以它们能够加载到8086内部存储器中进行调试.使用MASM32创建EXE文件SAMPLE.ASM.MODEL SMALL.8086.stack.code.startupmov dx,0020hmov al,35hout dx,alend_loop:jmp end_loop.dataENDBUILD.BAT@ECHO OFFml /c /Zd /Zi sample.asmlink16 /CODEVIEW sample.obj,sample.exe,,,nul.def使用MASM32创建COM文件SAMPLE.ASM.MODEL TINY.8086.code.startupmov dx,0020hmov al,35hout dx,alend_loop:jmp end_loop.dataENDBUILD.BAT@ECHO OFFml /c /Zd /Zi sample.asmlink16 /TINY /CODEVIEW sample.obj, ,,,nul.def使用Digital Mars或者Microsoft C++ 编译器创建EXE文件一个自定义的运行时间库需要使用一个带有空的8086的编译器。

emu8086仿真软件的应用

emu8086仿真软件的应用

emu8086仿真软件的应用第一篇:emu8086仿真软件的应用EMU8086 仿真软件在《微机原理》课程教学中的应用姓名:专业:学号:摘要:微机原理与接口技术课程的主要内容是微机系统的工作原理。

《微机原理与接口技术》作为计算机专业及其相关专业的一门基础课,其重要性是不言而喻的,若在该门课程的教学中能灵活运用Emu8086仿真软件进行演示及实验教学,则能让学生直观地理解的工作原理和工作过程,提高学生的学习兴趣,较好地解决了微机原理课程教学中存在的难题。

在实际的教学中,实验设备昂贵,造成实验环节比重过少,不能充分发挥学习者的创造性和能动性。

而实践证明,做中学是一种非常高效的现代教育理论,做中学理论即“从活动中学”和“从经验中学”。

本文介绍一些基于仿真软件Emu8086 的虚拟微机系统实验,使学习者容易达到做中学的目的。

简单介绍Emu8086功能,Emu8086的使用使得汇编语言程序的编译、执行变得更加直观和清晰,有助于提高初学者的学习兴趣。

针对微机原理学习中存在的问题,提出了用EMU8086仿真软件来解决的办法,并介绍了EMU8086的用法和一些指令常识,并通过两个实例说明了该软件在汇编程序设计和接口技术方面的应用。

关键词:微机原理;EMU8086;应用正文:一、软件介绍Emu8086是Windows平台的一款80x86CPU模拟。

Emu8086为8086 microprocessor emulator(8086微处理器模拟器),它是Windows平台的一款80x86CPU模拟器,可以用于8086CPU的模拟运行。

Emu8086便是输入80X86汇编语言的并模拟其真实CPU工作的软件,不过这里的模拟并不是100%的和真实一模一样,比如遇到中止的机器码,模拟器不会中止退出,只会提醒输入代码程序halt。

同样,由于是模拟的,那么模拟器中的内存大小、CPU频率等实际问题也是理想化的(可以自己设定,毕竟环境是模拟的嘛),而不是实际的。

8086仿真实验

8086仿真实验

1 微机接口实验篇1.1 仿真实验平台简介硬件仿真实验平台采用了英国Labcenter 公司开发的Proteus 电路分析与实物仿真及印制电路板设计软件。

该软件包括两个软件模块:ISIS 和ARES ,ISIS 主要用于原理图设计及电路原理图的交互仿真,ARES 主要用于印制电路板的设计。

本章实验所使用的Proteus 软件的版本为7.10(注意:7.5及其以后版本的Proteus 支持8086 CPU 仿真),只使用ISIS 。

ISIS 提供的Proteus VSM (Virtual System Modeling )实现了混合式的SPICE 电路仿真,它可以将虚拟仪器、高级图表应用、CPU 仿真和第三方软件开发与调试环境有机结合起来,在搭建硬件模型之前即可在计算机上完成原理图设计、电路分析及程序代码实时仿真、测试及验证。

1.1.1 仿真操作界面图 1-1Proteus ISIS 的工作界面安装Proteus 软件后,会在桌面建立两个图标,分别是ISIS 和ARES 。

双击桌面上的ISIS 图标或者单击“开始”→“程序”→“Proteus 7 Professional ”→“ISIS 7 Professional ”,都可以启动Proteus ISIS 。

启动后的工作界面如图 1-1所示,主要包括:菜单栏、标准工具栏、模式选择工具栏、旋转镜像工具栏、预览窗口、元器件选择按钮、元器件选择窗口、仿真控制按钮、图形编辑窗口等。

其中:原理图编辑窗口:用于编辑电路原理图(放置元器件和进行元器件之间的连线); 菜单栏标准工具栏 编辑模式工具栏旋转镜像工具栏 元器件选择窗口预览窗口仿真控制按钮 原理图编辑窗口当前坐标元器件选择按钮●预览窗口:用于显示显示原理图缩略图或预览选中的元器件;●编辑模式工具栏:用于选择原理图编辑窗口的编辑模式;●旋转镜像工具栏:用于对原理图编辑窗口中选中的对象进行旋转和镜像等操作;●元器件选择按钮:用于在元器件库中选择所需元器件,并将选择的元器件放入元器件选择窗口中;●元器件选择窗口:用于显示并选择从元器件库中挑选出来的元器件;●仿真控制按钮:用于控制实时交互式仿真的启动、前进、暂停和停止。

8086仿真环境配置及地址译码电路实验

8086仿真环境配置及地址译码电路实验

实验一 8086仿真环境配置及地址译码电路实验一、实验目的:1.熟悉和掌握Proteus环境下原理图设计。

2.熟悉和掌握Proteus环境下8086仿真环境的设置。

3.掌握8086下地址译码电路设计。

二、实验内容1.Proteus环境下8086仿真环境设置:Proteus7.5以上的版本中增加了对8086CPU的仿真功能。

由于对8086仿真需要使用8086汇编编译器,因此在使用Proteus仿真之前,需要对8086汇编编译器进行设置。

Proteus中所使用的8086汇编编译器是MASM32,所需的文件主要有3个:ML.exe:MASM32下编译器,位于MASM32安装目录下的BIN目录内。

LINK16.exe:MASM32下连接器。

BUILDER8086.bat:编译批处理文件,由用户自行编辑生成。

在C盘根目录下建立一个新目录(不能用中文路径),例如目录名为tools,将ML.exe 和LINK16.exe由MASM32安装目录中复制入该目录中。

新建一个文本文件,在该文本文件中输入以下内容:@ECHO OFF..\tools\ml /c /Zd /Zi %1set str=%1set str=%str:~0,-4%..\tools\link16 /CODEVIEW %str%.obj,%str%.exe,nul.map,,如目录名不是tools,则替换文本中目录即可。

将该文件另存为BUILDER8086.bat文件,并复制入tools目录中。

打开ISIS,在菜单中选择Souce,并在下拉菜单中选择Define Code Generation Tools,如下图所示:弹出界面如下图所示:点击New,出现文件选择界面,在界面中进入选择刚刚建立的目录,并选择Builder8086.bat文件,如下图所示:点击打开后,返回设置界面。

在设置界面的Make Rules中作如下设置:此处设置表示用该编译工具可以对ASM文件进行编译,并生成EXE文件。

基于Proteus和Intel8086的定时计数芯片8253A的仿真

基于Proteus和Intel8086的定时计数芯片8253A的仿真

基于Proteus和Intel8086的定时/计数芯片8253A的仿真作者:王忠友来源:《电脑知识与技术》2012年第31期摘要:文中介绍了利用Proteus软件仿真平台展现Intel8086CPU控制外围器件定时/计数芯片8253A的控制过程,并对该芯片的三种工作方式进行验证。

结果表明该仿真与理论描述一致,很适合于微机接口技术教学之用。

关键词:定时/计数芯片;仿真;Proteus软件中图分类号:TP391.9 文献标识码:A 文章编号:1009-3044(2012)31-7606-03现代许多工业电子产品通常需要进行精确控制的定时/计数装置[1-5],如通信基频、信号采集、产品自动计数和步进电机精确控制等;而定时/计数最典型和基础的芯片是8253/8254A,为此在学校讲授的《微机原理和接口技术》课程中,8253/8254A便成了必讲的基础接口芯片之一,掌握了它也便对计算机原理里定时/计数的功能有了基本的掌握。

为讲好这一部分内容,不少教学工作者采取了许多方法,如有的工作者[6-7]采用Labview编制8253/8254A的工作原理,通过在软件上设置GATE和CLOCK并装入相应计数初值后输出对应波形来展示8253的工作过程;而还有些工作者[8-9]则通过在实验箱上设计实验加强对该芯片的理解。

这些措施收到一定的教学效果,使学生对定时计数芯片的工作原理有一定了解,而英国Lab公司的仿真软件Proteus7.5版及其以后版本的出现,可以对CPU器件进行编程仿真,对在课堂上讲解《微机原理与接口技术》的有关芯片Intel8086及部分外围器件芯片的工作过程带来了革命性的改变,通过对有关器件的仿真,使该课程课堂教学更加形象化。

本文介绍的是利用该软件仿真CPU8088控制8253A的工作过程,可以作为课堂教学演示之用。

18253A硬件系统设计由于利用CPU8086控制外围接口器件是通过地址总线、数据总线和控制总线等三种总线进行,CPU8086有20位地址线,其中的低16位地址线与数据线是复用的,即地址/数据复用总线。

8086计算器仿真

8086计算器仿真

实验报告一、设计任务:利用微机原理所学的8086微处理器相关知识为核心,利用Proteus仿真软件,设计一个关于计算器的仿真电路并编写汇编代码。

根据8086的结构和其寻址方式、输入输出、I/O 口读写等技术,使用汇编语言的基本语法、伪指令,结合Proteus软件SAMPLED 8086 Demo Board示例的理解分析,白行设计。

二、需求分析:(1) 用8086作为核心处理器;(2) 用8255芯片连接主机与外设;(3) 用74273锁存器对数据进行锁存;(4) 用数码管显示器来显示输入的数字以及输出的结果;(5) 由于需要输入数字及运算符所以要用到键盘;(6) 用蜂鸣器在按下按键的同时发出声响;(7) 连接整个电路要用到导线以及总线将相应的引脚相连接。

三、总体方案(选择与论证)1. 方案的选择:基于技术成熟的Proteus软件,以Proteus软件SAMPLE^ 8086 Demo Board示例为蓝本并充分分析理解,在此基础上提出白己的设计方案。

将例子中电路结构优化精简,舍弃不必要的芯片,并用汇编来实现全部功能。

即计算器能够进行4位数的加、减、乘、除运算。

在此基础上,为使设计的计算器更具有实用性,我们通过循环调用的方式加入了对籍运算的功能。

与此同时,为优化人机界面,使计算器更为美观和实用,我们加入软件白带的封装好的矩阵键盘和蜂鸣器。

这就使得整个设计更加紧凑。

蜂鸣器实现了每按下一次按键就发出一次声响的功能以使按键检测更加直观,实际的计算器无差别。

此计算器拥有计数的功能,分白动计数和手动计数两种。

白动计数即为一个简单的计时器,用户可按需要定时,当到预定时间时,计算器会发声音提示用户。

手动计数有加1和减1两种,当用户需要计数某些场合中尤为适用。

2. 方案的论证:8086通过74273锁存器与8255A相连,使8086能够读外部数据和给外部芯片写数据。

8255A的A 口设置为输出,B 口和C 口设置为输入,将8255A 分别和4*5矩阵、数码管、蜂鸣器相连接。

Intel8086软件仿真器的设计与实现

Intel8086软件仿真器的设计与实现

Intel8086软件仿真器的设计与实现.txt -你脚踏俩只船,你划得真漂亮。

- 每个说不想恋爱的人心里都装着一个不可能的人。

我心疼每一个不快乐却依然在笑的孩子。

(有没有那么一个人,看透我在隐身,知道我在等人。

本文由bear8899贡献pdf文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

?50 ?系统仿真学报1996 年 9 月Intel 8086 软件仿真器的设计与实现北京计算机应用和仿真技术研究所 , 100854 贺红卫摘要本文以软件仿真系统在航天、航空及其它领域的实际需求为背景 , 介绍了嵌入式软件仿真系统的工作原理 , 对其中一种层次化的软件仿真器模型进行了描述 , 并讨论了该模型在实现过程中遇到的一些关键性技术问题。

关键词嵌入式系统软件仿真器建模引言目前 , 以嵌入式微处理器为核心的嵌入式计算机系统得到了越来越广泛的应用。

特别是集中了高、精、尖技术的航天控制领域更是如此。

因而 , 迫切需要一整套完备的手段来支持嵌入式软件的设计开发工作。

lator) 为核心。

这类开发手段存在以下缺陷 :制无法并发进行。

往往是软件研制滞后于硬件系统开发的过程。

开发效率 , 也无法满足航天系统软件所要求的高质量与高可靠性。

的是要提高技术人员对系统软件的开发和调试效率 , 对嵌入式软件的分析设计、编码调试、测试分析、可靠性评估和维护等各阶段提供强有力的支持 , 从根本上保证软件的质量 , 提高嵌入式软件的可靠性与安全性。

嵌入式软件全过程支持环境是以软件仿真器为核心。

软件仿真器是用软件的手段对运行嵌入式应用而 , 可以在没有真实硬件环境的情况下 , 实现程序的仿真运行。

软件仿真器技术的引入 , 有着它存在的价值 : 程序所需的特定硬件环境 ( 包括 CPU 芯片 , 内存及其它外围硬件设备 ) 及其活动进行描述 ( 仿真 ) 。

进发。

它完全脱离具体的硬件限制 , 提高了系统开发效率 , 相对减少了一些不必要的额外开销。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告一、设计任务:利用微机原理所学的8086微处理器相关知识为核心,利用Proteus仿真软件,设计一个关于计算器的仿真电路并编写汇编代码。

根据8086的结构和其寻址方式、输入输出、I/O口读写等技术,使用汇编语言的基本语法、伪指令,结合Proteus软件SAMPLES中8086 Demo Board示例的理解分析,自行设计。

二、需求分析:(1)用8086作为核心处理器;(2)用8255芯片连接主机与外设;(3)用74273锁存器对数据进行锁存;(4)用数码管显示器来显示输入的数字以及输出的结果;(5)由于需要输入数字及运算符所以要用到键盘;(6)用蜂鸣器在按下按键的同时发出声响;(7)连接整个电路要用到导线以及总线将相应的引脚相连接。

三、总体方案(选择与论证)1.方案的选择:基于技术成熟的Proteus软件,以Proteus软件SAMPLES中8086 Demo Board示例为蓝本并充分分析理解,在此基础上提出自己的设计方案。

将例子中电路结构优化精简,舍弃不必要的芯片,并用汇编来实现全部功能。

即计算器能够进行4位数的加、减、乘、除运算。

在此基础上,为使设计的计算器更具有实用性,我们通过循环调用的方式加入了对幂运算的功能。

与此同时,为优化人机界面,使计算器更为美观和实用,我们加入软件自带的封装好的矩阵键盘和蜂鸣器。

这就使得整个设计更加紧凑。

蜂鸣器实现了每按下一次按键就发出一次声响的功能以使按键检测更加直观,实际的计算器无差别。

此计算器拥有计数的功能,分自动计数和手动计数两种。

自动计数即为一个简单的计时器,用户可按需要定时,当到预定时间时,计算器会发声音提示用户。

手动计数有加1和减1两种,当用户需要计数某些场合中尤为适用。

2.方案的论证:8086通过74273锁存器与8255A相连,使8086能够读外部数据和给外部芯片写数据。

8255A的A口设置为输出,B口和C口设置为输入,将8255A分别和4*5矩阵、数码管、蜂鸣器相连接。

8086不断循环扫描键盘使键盘输入的数据能够读入8086,同时,8086通过8255A,将数据输入给数码管把相应的值显示出来,将高电平送到蜂鸣器的正极输入端使其发出预定的声音。

本方案在设计上无错误,应用界面友好的Proteus软件来设计在理论可实现。

在大一时学习了C语言,对于程序设计有一定的基础。

本学期还学习了汇编程序设计,结合C语言,对汇编程序的设计有一定的经验。

此外,小组中有3人曾参加工院的本科生科技创新项目,对单片机的编程熟练,并有一定的工程实践经验。

本小组成员团结性强,学习能力好。

能够相互协调克服困难。

本实验应用的软件技术成熟,在网上有很多成熟的设计可供借鉴。

图1图2四、硬件设计整个设计如图所示,8086通过地址总线与74273相连实现数据锁存的功能,再通过8255A与外设接口相连接,通过其A、B、C口实现对其它设备进行控制。

这些设备包括:输入键盘,蜂鸣器,4位数码管,幂运算按钮,计数按钮。

五、软件设计本实验的程序部分,其流程图如下:六、具体代码实现由于代码较多,因此放在最后的附录。

七、调试与测试第一步:对实现基本加、减、乘、除运算的测试。

分别进行四种基本运算:1.计算25+37的结果依次按下2、5、+、3、7、=,在显示器上显示出结果:63。

加法运算正确。

2.计算27-9的结果依次按下2、7、-、9、=,在显示器上显示出结果:18。

减法运算正确。

3.计算15*2的结果依次按下1、5、*、2、=,在显示器上显示出结果:30。

乘法运算正确。

4.计算56/8的结果依次按下5、6、/、8、=,在显示器上显示出结果:7。

除法运算正确。

第二步:对实现每按一次按键蜂鸣器发一次预定声音功能的测试。

执行后,按下按键蜂鸣器出声则此功能可以正常实现。

第三步:对实现幂运算的功能进行测试计算38的结果依次按下8、^、3,在显示器上显示出结果:524。

幂运算正确。

第四步:对计数功能进行测试使整个电路开始工作,按下自动计数开始的按钮,计数开始,到8结束,蜂鸣器发声提示时间到。

此功能执行成功。

第五步:手动计数加1和减1的功能测试按下手动加1按钮,数码管上显示的值加1,按下手动减1按钮,数码管上显示的值减1。

功能执行正常。

八、关键技术1.本实验利用子程序思想将整个程序模块化,使得程序清晰明了,并且调用方便,移植性好,升级简单;2.运用矩阵键盘扫描和键值比较确保每一个键都能够被8086及时检测到并正确识别;3.用大循环将整个程序反复执行,保证程序按设计执行,不会出现跑飞的情况;4.正确设置8255A工作方式,是8086读取键盘值和送数至数码管高效正确执行。

九、实际完成功能通过硬件电路的搭接和汇编程序的设计,我们设计出的计算器可以正确的完成以下功能:1.对加、减、乘、除的基本运算。

通过键盘输入并显示要计算的数字和执行的运算,通过数码显示器显示计算结果;2.实现每次按下按钮时蜂鸣器都能发出声响。

表明已有按键按下,可以根据声响的次数来判断输入数字的个数和是否误输的情况,有效避免和降低了用户错误的发生;3.实现求幂运算的功能。

通过键盘输入底数和幂次,由数码显示器显示计算结果,在简单计算器的基础上,实现了更高级的运算,实用性增强;4.实现从计数的功能,并有自动计数、手动加1计数和手动减1计数功能可供选择。

按下自动计数键,电路便开始实现计数的功能并由数码显示器显示,计数到预定值时停止并提示用户。

十、总结(任务分工等)通过小组人员的共同努力,我们顺利实现了计算器的预计全部功能,并在此基础上增加了一些实用的功能。

我们小组的任务分工如下:在本次的实验中,使我们熟练地掌握了Proteus软件的运用,对课本的知识理解更加深刻。

学会了运用所学的知识来解决实际的问题,积累了一些动手实践的经验。

在上课时学习的都是基本的程序设计,没有什么子程序,程序短而且简单,分析起来不困难。

而在本实验中,要求设计的是一个完整的系统,这就要求我们从系统出发,把视野放在整体上,力求各个子模块之间的相互协调和配合,共同组成完整可行的系统。

本次实验一改以往做实验的风格,通过一个大的综合实验和小组结对的方式,给学员更多的自由发挥空间,使学员的许多方面得到了锻炼。

在一个系统中,不是通过各个子模块的简单堆积就能够实现整体的功能,而是各个模块相互协调,发挥各自的功能,才能完美实现所需要的功能。

因此,本实验其实难度更大,也更有实际意义。

其实际意义早已超越了实验本身。

通过一个综合实验,我们更加充分的理解了课本的程序语句,不仅知道各条语句之间的相同点,也理解了在不同条件下它们的不同作用。

本实验在做的过程中,我们从一个更高的层次对课本的知识进行了一遍详细的梳理。

这次实验,不管是对于课本的学习,还是今后参加工作或者参加电子设计,都有很大的意义。

十一、附录实验程序源码DATA SEGMENTX DB ,,, ;存放数据的每一位X1 DW ;存放第一个数据值X2 DW ;存放第二个数据值Y DW ;存放运算结果S DB ;存放运算符号值E DB ;按下等号键标记CC DB ;存放运算数据位数H DB 0 ;存放按键行号L DB 0 ;存放按键列号SJISZHI DB ;存放计数值的变量DISCODE DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H ,71H ;段码表DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SJISZHI,0MOV AL,90H ;设置为A口输入,B 口输出,C口输出OUT 46H,ALMOV DI,OFFSET X+3 ;DI指向X的高位KKK: CALL KEY ;扫描按键JMP KKK;以下为按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号KEY PROCCHECK: CALL DISP ;等待按键按下的同时进行显示MOV AL,0F0H ;所有行输出低电平OUT 44H,ALIN AL,40HCMP AL,0FFH ;读列值JZ CHECK ;若都为高电平则无键按下,等待MOV CX,50LOOP $ ;延时消抖IN AL,DX ;重读列值CMP AL,0FFHJZ CHECK ;无键按下一直等待MOV H,0 ;有键按下,先把行列号变量清0MOV L,0MOV BL,01HMOV BH,0FEH ;扫描法读键值:从第一行开始测试,即PC0输出低电平NEXT:MOV AL,BHOUT 44H,ALNEXTH: IN AL,40H ;读列值,判断是第几列有键按下TEST AL,BL ;从第一列开始判断 JZ WAIT0ROL BL,1CMP BL,20H ;当前行状态下没有任何列有键按下,则转为对下一行的测试JZ NEXTLINC H ;每判断一列,列号加1JMP NEXTH ;再对下一列进行判断 NEXTL: MOV H,0MOV BL,01HROL BH,1 ;对下一行测试,让下一个PC口输出低电平CMP BH,0EFHJZ EXITINC LJMP NEXTWAIT0: IN AL,40H ;若有键按下,则等该按键松开后再计算键值CMP AL,0FFHJNZ WAIT0MOV CX,50LOOP $ ;延时消抖IN AL,40HCMP AL,0FFHJNZ WAIT0CALL KEYVALUE ;调计算键值子程序 EXIT: RETKEY ENDP;以下为计算键值子程序,通过行列号计算键值(键值=列号*5+行号);键值存放在DL寄存器中KEYVALUE PROCPUSH AXMOV AL,0FFHOUT 42H,ALCALL DELAYCALL DELAYCALL DELAYMOV AL,00HOUT 42H,ALPOP AXMOV DL,LMOV DH,HMOV AL,5MUL DL ;列号乘5 MOV DL,ALADD DL,DHCMP DL,0JZ QICMP DL,1JZ BACMP DL,2JZ JIUCMP DL,5JZ SHCMP DL,6JZ WUCMP DL,7JZ LIUCMP DL,9JZ JISHU_CALL ;自动计数CMP DL,10JZ YICMP DL,11JZ ERCMP DL,12JZ SANCMP DL,14JZ SJI_CALL ;手动加1CMP DL,15JZ CLR_CALL ;按下的是清除键 CMP DL,16JZ LINCMP DL,17JZ OUTP_CALL ;按下的是等于键 CMP DL,19JZ SJIJ_CALL ;手动减1JMP CONT_CALLSH: MOV DL,4CALL NUMBERJMP EXIT1WU: MOV DL,5CALL NUMBERJMP EXIT1 LIU: MOV DL,6CALL NUMBER JMP EXIT1 QI: MOV DL,7CALL NUMBERJMP EXIT1 BA: MOV DL,8CALL NUMBERJMP EXIT1 JIU: MOV DL,9CALL NUMBERJMP EXIT1 YI: MOV DL,1CALL NUMBERJMP EXIT1ER: MOV DL,2CALL NUMBERJMP EXIT1SAN: MOV DL,3CALL NUMBERJMP EXIT1LIN: MOV DL,0CALL NUMBERJMP EXIT1CLR_CALL: CALL CLEAR ;调清除键处理子程序JMP EXIT1JISHU_CALL: C ALL ZJIS ;调用自动计数子程序JMP EXIT1SJIJ_CALL: DEC SJISZHI ; 调用减1计数字程序CALL SJISJI_CALL: INC SJISZHICALL SJI ;调用手动计数子程序JMP EXIT1NUM_CALL: CALL NUMBER ;调数字键处理子程序JMP EXIT1CONT_CALL: MOV S,DL ;存放运算键的键值MOV E,0CALL COUNT ;调运算键处理子程序,计算第一个加数JMP EXIT1OUTP_CALL: CALL OUTP ;调等号键处理子程序JMP EXIT1EXIT1: RETKEYVALUE ENDP;以下为清除键处理子程序,按下清除键后,X变量全部清0 CLEAR PROCMOV X[3],0MOV X[2],0MOV X[1],0MOV X[0],0CALL BITPRETCLEAR ENDP;以下为等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入X2变量;并根据运算符号,调用相应的运算子程序OUTP PROCPUSH AXPUSH DXPUSH BXINC ECALL COUNT ;调运算键处理子程序,计算第二个运算数据CMP S,18JZ ADD_CALL ;运算符为加号,则调用加法子程序CMP S,13JZ SUB_CALL ;运算符为减号,则调用减法子程序CMP S,8JZ MUL_CALL ;运算符为乘号,则调用乘法子程序CMP S,3JZ DIV_CALL ;运算符为除号,则调用除法子程序CMP S,4JZ CF_CALLADD_CALL: CALL ADDPJMP STORE1SUB_CALL: CALL SUBPJMP STORE1MUL_CALL: CALL MULPJMP STORE1CF_CALL: CALL CFPJMP STORE1DIV_CALL: CALL DIVPJMP STORE1STORE1: MOV AX,Y ;以下程序将各运算子程序返回的运算结果,按位分解,送入X变量MOV DX,0MOV BX,1000DIV BXMOV X[0], ALMOV AX,DXMOV BL,100DIV BLMOV X[1],ALMOV AL,AHMOV AH,0MOV BL,10DIV BLMOV X[2],ALMOV X[3],AHPOP BXPOP DXPOP AXRETOUTP ENDP;以下为运算键处理子程序,该程序将第一个运算数据的数值计算出来并存入X1变量;或者将第二个运算数据的数值计算出来并存入X2变量;将运算符的值存入S变量COUNT PROCPUSH AXPUSH BXPUSH DXMOV DX,0CALL BITP ;测试X中的数据是多少位CMP CC,4 ;输入的数据是4位数 JZ C4CMP CC,3 ;输入的数据是3位数 JZ C3CMP CC,2 ;输入的数据是2位数 JZ C2JMP C1 ;输入的数据是1位数C4: MOV AX,0MOV AL,X[0]MOV BX,1000MUL BXMOV DX,AXC3: MOV AL,X[1]MOV BL,100MUL BLADD DX,AXC2: MOV AL,X[2]MOV BL,10MUL BLADD DX,AXC1: MOV AL,X[3]MOV AH,0ADD DX,AXCMP E,1JNZ X1_SMOV X2,DX ;按下的是等号,则将第二个运算数据的值存入X2变量JMP EXIT3X1_S: MOV X1,DX ;按下的是运算符号,则将第一个运算数据的值存X1变量MOV X[3],0 ;清空X变量MOV X[2],0MOV X[1],0MOV X[0],0EXIT3: POP DXPOP BXPOP AXRETCOUNT ENDP;以下为数字键处理子程序;该程序,将输入的数据按位存放在X变量中,并由CC记录数据的位数NUMBER PROCCMP E,1JNZ CONTINUEMOV E,0CALL CLEARCONTINUE: CMP CC,0 ;目前数据为0位,即没有数据,则转到SSSJZ SSS;若已有数据,以下程序将X左移8位。

相关文档
最新文档