最新8086简易计算器的设计微机原理计硬报告整理
8086实现计算器实验报告
实验报告一、题目:数字计算器的汇编语言实现二、设计任务:利用8086微处理器,可编程并行通信接口芯片 8255A等相关器件在proteus中设计仿真一个简单数字计算器,利用8086汇编语言编写完成加、减、乘、除、幂运算、阶乘运算、求余运算等功能,能实现键盘十进制运算表达式的输入和显示,按“=”后输出十进制表示的运算结果。
三、需求分析:(一)根据数据的输入要求对键盘(本实验中用4X5按钮阵来代替键盘)的数据读取及运算符号读取进行定义,根据8255A的相关性质对其进行编程实现,使每一个按钮对应一个十以内的整数或者某一个运算符号。
(二)根据8255A的输出性质,选择输出端口,对其进行编程,8255A为8086微处理器与外部设备之间提供并行输入/输出的通道。
不用附加外部电路,并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。
(三)数据的显示有LED数码管显示,LED数码管有7个字符段和一个小数点段组成,每段对应一个二极管,当二极管点亮时,相应的的字符段点亮,可以进行数据的显示。
四、总体方案首先利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数的加、减、乘、除、幂运算、阶乘运算、求最大公约数的运算。
运算完成后根据程序将运算的结果储存到锁存器中并显示到LED显示器上。
五、硬件设计本次实验需要的元器件有:8086微处理器、可编程并行通信接口芯片8255A、输入输出锁存器74LS373、LED数码显示管、若干按钮组成的4X5矩阵按键、若干电阻、总线等。
1、8086微处理器当引脚接高电平时,CPU工作于最小模式。
此时,引脚信号24~31的含义及其功能如下:(1)IO/M:存储器、I/O端口选择控制信号。
信号指明当前CPU是选择访问存储器还是访问I/O端口。
简易计算器实验报告
简易计算器实验报告简易计算器实验报告引言:计算器是我们日常生活中常用的工具之一。
它可以帮助我们进行简单的数学运算,提高计算的效率。
在本次实验中,我们将设计并制作一台简易计算器,通过实践来掌握计算器的原理和工作原理。
实验目的:1. 了解计算器的基本原理和工作原理;2. 掌握计算器的设计和制作方法;3. 提高动手能力和创造力。
实验材料:1. 电路板;2. 按键;3. LED显示屏;4. 电容;5. 电阻;6. 电源。
实验步骤:1. 连接电路板和电源,确保电路板能够正常工作;2. 将按键连接到电路板上,用于输入数字和运算符;3. 连接LED显示屏,用于显示计算结果;4. 添加电容和电阻,用于控制电路的稳定性和电流;5. 调试电路,确保计算器能够正确运行。
实验结果:经过一番调试,我们成功制作出了一台简易计算器。
它可以进行基本的加减乘除运算,并且在LED显示屏上显示结果。
通过按键输入数字和运算符,我们可以进行各种运算,从而得到我们想要的结果。
这台计算器虽然简单,但是它的实用性和便携性都非常高。
实验分析:在本次实验中,我们主要学习了计算器的基本原理和工作原理。
计算器是通过按键输入数字和运算符,然后经过电路的计算和控制,最终在显示屏上显示结果。
在电路中,电容和电阻的作用是为了保证电路的稳定性和电流的控制。
通过这个实验,我们更加深入地了解了计算器的内部结构和工作原理。
实验总结:通过本次实验,我们成功制作了一台简易计算器,并且对计算器的原理和工作原理有了更深入的了解。
实验过程中,我们不仅提高了动手能力和创造力,还培养了解决问题的能力。
计算器作为一种常见的工具,它的设计和制作过程并不复杂,但是它的实用性和便携性却非常高,为我们的生活带来了很大的便利。
未来展望:通过这次实验,我们对计算器的原理和工作原理有了初步的了解。
在未来,我们可以进一步深入研究计算器的更高级功能和更复杂的电路设计。
同时,我们也可以将这种简易计算器的设计思想应用到其他领域,如电子设备、机器人等,从而提高我们的创造力和创新能力。
微机原理实验报告 8086最小系统构建和IO接口电路
实验12:8086最小系统构建和I/O地址译码实验1、实验目的:(1)掌握I/O地址译码的工作原理和电路设计(2)掌握Proteus ISIS中电路原理图的模块化设计方法(3)绘制通用的8086最小系统电路图和I/O地址译码电路图供后续实验使用2、实验设备:安装有Proteus的PC一台3、实验过程:编写测试程序,对8086最小系统和I/O地址译码电路模块进行仿真测试。
(1)所绘制电路图如下面截屏所示:首先是8086最小系统电路图,如下:第二个是I/O地址译码子电路图,如下:实验电路图如下面所示:(2)实验仿真运行画面截图如下所示:(对所给程序稍微作了变动)(3)程序源代码如下所示:.model small.8086.stack.data.code.startupmov dx,1000hlp0:mov bx,0e001hlp1:mov al,blout dx,almov ah,1call delaycmp bl,0jz lp2rol bx,1jmp lp1lp2:mov ah,8call delayjmp lp0delay:mov cx,5000d: loop ddec ahjnz delayretend4、实验总结:(1)绘制实验电路图时主要问题包括标号的设置(如果未设置则会出现八个灯同时亮的情况),总线等的连接(注意对应接口相同,引脚线与总线的连接末端采用斜线)等。
(2)程序中,lp0中将点亮的模式传送给bx寄存器,可改变该值从而改变点亮的模式(如改为0e004h则变为有4个灯同时亮);Lp1中,将每个周期中灯与灯的时间间隔设为一个基本单位并存入了ah中,可改变该值以延长时间(如实验习题中);Lp2中,将不同周期直接的时间间隔设为8个时间单位并存放入ah中,与上一个值一起可以调控灯亮的持续时间和周期等。
(3)注意总线标号的输入为中为XD[0..15]而非XD[0,,15];另外注意合理安排位置以使电路图更加美观。
微型计算机原理及接口技术实验报告
成都理工大学微型计算机原理及接口技术实验报告学院: 核技术与自动化工程学院专业: 电气工程及其自动化班级:学号:姓名:指导老师:完成时间:实验一EMU 8086软件的使用1、实验目的通过对emu8086的使用,来理解《微型计算机原理及接口技术》课本上的理论知识,加深对知识的运用,以及emu8086交互式学习汇编语言(Assembly Language)、计算机结构(Computer Architecture)和逆向工程(Reverse Engineering)的完整仿真体系。
以及了解创建,编译,链接,调试运行,拟屏幕、源代码观察、复位、辅助工具、变量、DEBUG、堆栈及FLAGS(标志寄存器)观察等功能。
2、实验环境及设备实验中用到的硬件:记本电脑。
软件:emu8086编程程序emu8086.exe。
3、实验内容1.emu8086的编辑面板:其中编程时要做好三个要点1.数据段:segmentends2.堆栈段:segmentends3.代码段e segmentends这三个框架。
编辑好程序如下; multi-segment executable file template.data segment; add your data here!a db 0b db 1c db 0pkey db "press any key...$"endsstack segmentdw 128 dup(0)endscode segmentstart:; set segment registers:mov ax, datamov ds, axmov es, ax; add your code heremov al ,aadd al,bmov c,allea dx, pkeymov ah, 9int 21h ; output string at ds:dx; wait for any key....mov ah, 1int 21hmov ax, 4c00h ; exit to operating system.int 21hendsend start ; set entry point and stop the assemble d1 segment进行编译后:无错误后点击运行:程序中实现了赋值,传址,加法,中断等功能。
8086汇编语言程序设计 微机实验报告
微机实验报告第一部分:8086汇编语言程序设计一、实验目的通过上机练习,初步掌握8086的指令系统,熟悉8086汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG调试工具。
二、实验题目(一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。
(要求字符串从键盘上输入)1、流程图2、实验程序及注释DATA SEGMENTBUFSIZE DB 20 ;数据段ACTCHAR DB ? ;定义字符串CHARTEXT DB 20 DUP(?) ;给输入字符分配内存DB '$'CNT DB 0 ;给计数器分配内存STRING1 DB 'PLEASE INPUT THE STRING:','$'STRING2 DB 0AH,0DH,'INPUT THE WORD YOU WANT TO CHECK:','$' STRING3 DB 0AH,0DH,'THE NUMBER OF THE WORD IS:','$'DATA ENDS ;数据段结束COSEG SEGMENT ;代码段ASSUME CS:COSEG,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRING1 ;显示提示语:请输入字符串MOV AH,09H ;输出字符串STRING1INT 21HMOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZEMOV AH,0AH ;并送显INT 21HMOV DX,OFFSET STRING2 ;显示提示语:想查询的字符是MOV AH,09H ;输出字符串STRING2INT 21HMOV AH,01H ;从键盘上输入字符到AL中并送显INT 21HMOV BX,OFFSET CHARTEXT ;将字符串首地址存入BXMOV CL,ACTCHAR ;置循环次数CX=字符串长度XOR CH,CHLP1: CMP AL, [BX] ;字符串从头开始与键入字符AL比较JZ LP2 ;相等则转入LP2INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,继续循环LP1JMP FINI ;若全部比较完毕,跳转FINILP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,跳至LP1 FINI: MOV DX,OFFSET STRING3 ;显示提示语:所查询的字符个数:MOV AH,09HINT 21HMOV AL,CNT ;将计数器的值送ALAAM ;将此值转换成非压缩BCD码ADD AH,30H ;将BCD码转换为ASCⅡ码MOV DL,AH ;高位送显MOV AH,02HINT 21HMOV AL,CNT ;再将计数器的值送ALAAMADD AL,30H ;将BCD码转换为ASCⅡ码MOV DL,AL ;低位送显MOV AH,02HINT 21HMOV AH,4CH ;结束INT 21HCOSEG ENDS ;代码段结束END START ;程序结束3、运行结果PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): A↙THE NUMBER OF THE WORD IS(数量为):3↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符):9↙THE NUMBER OF THE WORD IS(数量为):0↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): S↙THE NUMBER OF THE WORD IS(数量为):1↙4、程序改进○1循环次数的改进原来的程序:MOV CX,19改进原因:此程序表明无论输入的字符串多长,即使没有达到限定的最大字符串的长度,也要循环19次。
8086简易计算器的设计微机原理计硬报告DOC
简易计算器的设计 自动化(电站方向)计算机硬件技术实践报告题目 姓名 专业 班级学号上海电力学院自动化工程学院 实践报告内容(目录)一. 设计题目二.开发目的三.小组成员分工及成果四.设计方案以及论证五. 硬件原理图(包括芯片的选型介绍)六. 程序流程图(包括各个子系统和子过程的程序流程)七. 程序清单,要有适当的注释八. 程序运行结果分析与预测九. 结果评述或总结(对实验结果进行分析,对实验过程进行总结,系统改进升级建议或者提出新的方案等。
)8255 控制键. 设 计题目 :用 8086 设计一个能实现 0~9 整数加法运算的计算器 , 并用 2 位 LED 数码显示 . 键盘包 括0-9 , + , - ,*, / , =, ON/C;共16个按键.能实现简单的清零操作,减法运算,乘法运算.. 开发目的 :通过课程设计,熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机 开发应用方面的初步训练。
培养集体讨论设计题目的总体设计方案、 编程、软件硬件调试、 编写设计报告等问题,做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计熟练运用程序对 盘和LED 显示的控制,完成计算器加减法的应用,并熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
本组的三个成员一起讨论研究简易计算器设计的主要方案。
粗略设计程序流程图以确定简易计算器设计的大概框架。
明确目的后各自查询资料了解设计原理、逐步清晰设计思路。
以下为大体分工:主要负责: 1 、设计主要程序,编写;2、查找资料验证修改;主要负责: 1、选择需要用的各个芯片;2、设计硬件原理图;主要负责: 1、各个芯片功能的资料查找;2 、设计程序流程图四. 设计方案以及论证利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调 用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程 序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数 的加、减、乘、除的运算。
8086.8088微机原理课程设计报告书
8086/8088微机原理课程设计1、课程设计说明“微机原理与接口技术课程设计”主要是测试学生的8086/8088系统输入输出技术应用能力、数字电路应用能力和程序设计能力。
设计题目中综合了《数字逻辑》、《微机原理与接口技术》和《程序设计基础》等课程中的相关知识点。
特别是电气工程系各专业学习了《模拟电子》、《传感器技术》、《单片机技术》等课程,给题目的扩展和实际应用提供了基础。
本课程的课程设计实际上是一个综合性应用的设计和制作。
这里只给出了部分课程设计的题目,主要和接口电路有关,每个题目的实现方式和扩展空间都很大,指导教师可根据学生的具体情况决定设计题目的内容和设计量。
纯汇编语言软件的设计未在这里列出。
欢迎学生自拟题目,经指导教师审核其难易程度和确定所用器材,优先选用。
2、课程设计计分办法课程设计的计分由课设题目(60)、课设报告(20)、考勤(20)三部分组成。
一、题目的选择设计题目分为星级制(★),根据选择题目的难易程度确定成绩,以百分制计算,按比例计入总成绩。
要根据个人情况合理选择题目,不可多组选择同一题目。
1、无星为最简题目,做完多个题目仅记分为及格(69分及以下)。
2、1星(★)为简单题目,做完1个题目记分为良(70~89分)。
3、2星(★★)为较难题目,做完1个题目记分优(90~100分)。
4、星级题目多做可提高分值。
5、课设一般为分组实施,主要设计者记原星级分值,辅助者减1星。
6.、未完成设计者视设计程度减星计分。
7、无星题目可单人完成,但不选题目者记0分。
二、报告要求课设报告应按规定格式书写,并按时上交。
报告原则上要求手工书写,如要打印必须是独立版本,遇雷同课设报告均不计入总成绩。
三、考勤考勤。
点名一次未到扣5分,5次以上记0分。
3、课程设计题目设计一、发光管间隔交替闪烁。
使QTH实验仪上的8个发光管间隔交替闪烁,要求:①8255的PA0~PA7接L1~L8;②8255的片选信号CE接地址线A15;③闪烁时间可通过PC键盘、QTH小键盘或波动开关调整;说明:①发光管可接8255的其它口,CE也可接其它地址线。
8086微机汇编实验报告
电梯模拟实验一、实验目的通过综合实验使学员复习并熟练掌握各个模块电路功能、基本原理、线路连接和驱动方法。
自己编写嵌入式代码进行驱动,掌握相关的程序设计、电路测试的基本能力。
通过动手实践进一步加深对理论知识的理解,提高动手能力。
二、实验原理1.使用模块:本实验使用了8254、8255、七段数码管、4*4键盘、步进电机、喇叭6大模块来进行模拟电梯的综合实验。
2.连接电路:(1).使用8255的C口的PC0~PC7连接4*4键盘的行3~列0,接收4*4键盘输入;(2).将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0接+5V,S1~S3接GND,编程实现在其显示电梯所处的楼层;(3).使用8255的B口的PB0~PB3分别与步进电机的驱动输入端BA~BD相连,编程实现根据键盘输入实现顺时针(反时针)转动;(4).8254的CLK0接1MHz时钟,GATE0接8255的PB5,OUT0和8255的PB4分别接与门的两个输入端A和B,与门输出端Y连接喇叭,编程实现电梯到达所要求的楼层后发出设定的声音进行提示,具体实验电路如下图.3.接线:4.程序流程三、关键点及难点1.关键点(1).8255的控制方式8255是通用并行接口芯片,但在具体应用时,要根据实际情况选择工作方式,连接硬件电路(外设),待进行初始化编程之后才能成为某一专用的接口电路。
8255的初始化编程比较简单,只需要一个方式控制字就把3个端口设置完成。
方式控制字决定端口A、B和C的工作方式,如下图所示。
(2).I/O端口值的读写实验中,会对大量的I/O端口进行读写操作,我们通过I/O端口对相关的硬件进行数据的读写,在进行数据读写的过程中,要清楚相关的函数操作以及写入的bit位的值对硬件起到怎样的控制。
下面是C语言方式对I/O端口读写进行操作的相关函数:(3).七段数码管工作原理实验所用的七段数码管为共阴型,段码采用同相驱动,输入加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
8086实验报告
8086实验报告8086实验报告引言:8086微处理器是Intel公司于1978年推出的一款16位微处理器,它在计算机发展历史上具有重要的地位。
本实验旨在通过对8086微处理器的实际应用,深入了解其工作原理和功能。
一、实验目的本实验的目的是通过对8086微处理器的实际操作,掌握其基本指令的使用方法,并了解其内部结构和工作原理。
二、实验材料和方法1. 实验材料:- 8086微处理器开发板- 电源线- 串口线- 电脑2. 实验方法:- 将8086开发板与电脑通过串口线连接- 将电源线插入开发板并连接电源- 打开电脑,启动开发板上的操作系统- 使用汇编语言编写程序,并通过串口线将程序下载到开发板中- 在开发板上运行程序,观察结果并进行分析三、实验过程1. 硬件连接:将8086开发板与电脑通过串口线连接,并确保连接稳定。
2. 软件操作:打开电脑,启动开发板上的操作系统。
使用汇编语言编写程序,并通过串口线将程序下载到开发板中。
3. 程序运行:在开发板上运行程序,并观察结果。
通过分析程序的运行过程,了解8086微处理器的工作原理和功能。
四、实验结果与分析在本次实验中,我们编写了一个简单的程序,用于在开发板上显示一段文字。
通过观察开发板上的显示屏,我们可以看到程序成功地在8086微处理器上运行,并显示出我们编写的文字。
通过对程序的分析,我们可以了解到8086微处理器具有强大的计算和控制能力。
它能够执行各种指令,完成各种复杂的计算任务。
同时,8086微处理器还具有较大的存储空间和高速的数据传输能力,使得它能够处理大量的数据和信息。
此外,8086微处理器还具有良好的扩展性和兼容性。
它可以与其他外部设备进行连接,实现更多的功能和应用。
同时,8086微处理器与其后续型号的兼容性也非常好,这使得它在计算机领域得到了广泛的应用。
五、实验总结通过本次实验,我们深入了解了8086微处理器的工作原理和功能。
我们通过编写程序并在开发板上运行,亲身体验了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、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微机原理实验报告
DATSEGMENT
YEAR1 DB ?
YEAR2 DB ?
MONTH DB ?
DAY DB ?
STAYDB 100 DUP (?)
DATE DB 'DATE:','$'
SA0DB 'BEGIN:','$'
SA1 DB 'Pressh m sto adjust time','$'
INC BX
MOVAL,MONTH
CALL TURN2
INC BX
MOVAL,'-'
MOV [BX],AL
INC BX
MOV AL,DAY
CALL TURN2
INC BX
MOV AL,20H
MOV [BX],AL
INC BX
MOVAL,0AH
MOV [BX],AL
MOVAL,'$'
MOV [BX],AL
在以上延时程序的基础上,通过时间约1s的长延时累加,并以时、分、秒的形式显示出来。同理,通过时间与日期的进制关系,还可以编写一个日期的程序。
在时、分、秒和年、月、日进制计算程序的基础上可以增加语句以实现时间和日期的校对功能,通过键盘输入不同字符可以选择对时、分、秒、年高位、年低位、月、日分别进行加一操作,以实现校对功能。
JNE DISPY
MOV DAY,0
MONT_: MOVAL,MONTH
ADDAL,1
DAA
MOV MONTH,AL
CMP AL,13H
JNE DISPY
MOV MONTH,0
SEC: MOVAL,DL
微机原理期末设计实验总结
微机原理期末设计实验总结一、实验背景:微机原理是计算机科学与技术专业的一门重要课程,旨在使学生掌握微型计算机组成原理、工作原理和应用,培养学生分析与解决实际问题的能力。
本次实验是微机原理课程的期末设计实验,旨在通过实际操作和设计,巩固和应用所学的知识,并使学生通过设计实验解决实际问题的能力的提高。
二、实验内容:本次实验的主要内容是设计一个简单的计算器程序,该程序能够实现两个十进制数的加法和减法运算,并输出结果。
实验要求使用汇编语言编写程序,并通过汇编器生成机器码,最终在实验板上执行程序。
三、实验过程:1. 硬件准备:首先,我们需要准备一台微型计算机,以及相应的开发工具和实验板。
实验板上包含了微处理器、存储器、输入输出接口等关键部件。
2. 开发环境设置:我们使用的是80x86系列的微处理器,因此需要安装对应的开发软件。
首先,我们安装了MASM(Microsoft Macro Assembler)汇编器,用于将源代码转化为机器码。
其次,我们安装了DOSBox来模拟DOS环境,以便在个人计算机上运行汇编程序。
最后,我们还下载并安装了TASM(Turbo Assembler),该软件可以生成与MASM兼容的机器码。
3. 编写源代码:我们首先使用文本编辑器创建一个汇编源文件,并编写相应的汇编代码。
源代码中,我们定义了两个变量用于存储输入的两个十进制数,以及一个变量用于存储运算结果。
接下来,我们使用汇编语言实现了加法和减法运算的逻辑,并将结果存入运算结果变量中。
最后,我们使用中断调用将运算结果输出到屏幕上。
4. 汇编程序生成:我们通过命令行界面进入DOSBox环境,将源代码保存为.asm文件,并使用TASM编译生成机器码。
编译完成后,生成的机器码被保存为.obj格式文件。
5. 机器码加载:我们将生成的.obj文件加载到实验板的存储器中,以便实验板能够读取并执行该程序。
6. 程序运行:最后,我们通过实验板上的按钮触发程序的运行,观察并记录程序输出的结果。
简易计算器实验报告
简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。
二、实验原理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、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。
8086最小系统实验报告
课程设计实验报告课题:8086最小模式系统的原理图及PCB图设计学院:信息科学与工程学院实验时间:09.12.28-10.01.10目录一、Protel DXP 课程认识 (3)二、设计课题以及设计要求 (3)三、绘制原理图 (4)四、绘制PCB图与封装 (6)五、生成印制板电路图 (8)六、布线跟生成模拟图 (9)七、系统原理图 (12)八、系统封装图 (16)九、元器件清单 (18)十、课程设计总结 (19)参考文献 (21)一、Protel DXP 课程认识Protel DXP 是一款为计算机电路辅助设计的多功能的应用软件,是一个继承的电路开发环境,能为设计者提供统一的电路设计的界面、系统菜单和设计工具。
从功能上,Protel DXP可以分为五大部分:电路原理图绘制部分、印制电力板设计部分、自动布线部分、可编程逻辑设计部分和电路仿真部分。
使用上述所提供的各种功能,设计者便能从电路的原理图设计开始,最终得到所需要的印制电路版图(PCB)。
在正确安装好了Protel DXP软件之后,必须要熟练掌握各种系统参数和基本设置,以及工具栏中的各种基本操作、各种符号所代表的意义。
本次课程设计只要使用到该软件的原理图以及PCB图的绘制和自动布线部分。
二、设计课题以及设计要求本次课程设计主要考查对8086最小模式系统的原理图和PCB图的设计。
1、实验目的1)掌握8086最小模式系统的设计方法。
2)熟练Protel DXP 的使用方法。
2、实验设备PC微机一台、Protel DXP软件3、实验内容本实验完成的是一个基于Protel DXP软件的8086最小模式系统原理图以及PCB图设计。
设计8086最小模式系统,包括8086CPU、地址锁存器、数据总线收发器、时钟发生器等。
利用8255芯片进行接口扩展,外接矩阵键盘电路和数码管显示电路等,也可以自行扩展其他外设。
学习掌握Protel DXP软件的使用方法,绘制上述系统的原理图以及印制电路板图(PCB)。
8086微机原理总结
题目:微机原理全书总结姓名:吕祎学号:12021027第一部分第一章首先介绍了计算机的发展,不同时期的计算机发展史。
在计算机发展史中,最重要的就是冯诺依曼提出的存储程序概念。
目前根据冯诺依曼给出的模型设计的计算机一直沿用至今。
冯诺依曼计算机的核心是:指令数据用二进制表示,程序预存在存储器中,在执行时根据指令逐条取出分析执行,计算机硬件由运算器控制器存储器输入输出设备组成。
对计算机发展有突出贡献的两个人是图灵和冯诺依曼。
(一)一些基本概念位(bit)是我们计算机所能表示的最小数据单位。
8个bit组成一个字节(Byte)指令:二进制代码组成,规定微处理器进行某种命令。
即又0和1组成的编码。
程序:指令的有序集合。
存储器:用于存储数据和程序。
地址:存储单元I/O接口的编号。
IO引脚线:16根。
可以控制的外设64K个。
(二)目前常用的二进制十进制十六进制的转换方式此处需要熟悉各个进制转换规则。
例如05H转换为二进制为0000 1001B另外本节还介绍了几种编码表示,例如BCD码,ASCLL码,汉字编码等等。
BCD码:四位二进制表示十进制数(1)非压缩型BCD,一个字节表示一位十进制数,高四位清零(2)压缩型BCD:用一个字节表示两位十进制数。
(三)原码:最高位为符号位(0表示正,1表示负)反码:正数反码与原码相同,负数的反码等于原码中符号位不变其他取反。
补码:正数补码与原码相同,负数的补码等于原码中符号位不变各位取反再加一。
(四)指令:告诉计算机从事某个特殊运算的代码。
计算机执行指令的过程是:取指令→分析指令→执行指令。
第二部分(一)第二章8086/8088微处理器工作过程:取指令、译码、执行指令、取指令、译码······工作方式:并行流水处理方式。
功能分类:执行单元EU、总线接口单元BIU内部包括:运算器,寄存器组,控制逻辑,指令队列,20位加法器。
EMU8086软件在微机原理及接口技术数字中的应用的研究报告
EMU8086软件在微机原理及接口技术数字中的应用的研究报告随着计算机技术的不断发展,微机的应用越来越广泛,尤其是在数字中的应用,可谓是无处不在。
而EMU8086软件作为一种可以在计算机上模拟8086微处理器的软件,在微机原理及接口技术数字中的应用也越来越多。
在数字电路的设计中,EMU8086软件可以通过模拟8086微处理器来实现对数字器件的控制。
可以从这个层面上看出,EMU8086软件在数字电路的研究中起到了非常重要的作用。
使用EMU8086软件进行数字电路的仿真可以大大提高数字电路设计的效率和质量,有效地减少了设计成本。
此外,EMU8086软件还可以进行微机的汇编语言编程教学。
学生可以通过EMU8086软件进行汇编语言的学习和实验,比如可以通过EMU8086软件来设计一个简单的程序,在实践中学习8086微处理器的工作原理和运行方式。
同时,EMU8086软件还提供了一些实用的工具,比如调试器、汇编器等,方便用户进行程序测试和调试。
另外,EMU8086软件还可以应用于数字信号处理中。
在现代通信技术中,数字信号处理起着至关重要的作用,而EMU8086软件就可以通过模拟8086微处理器来实现对数字信号的处理。
比如可以通过EMU8086软件设计一个数字滤波器,对数字信号进行滤波处理,实现信号的降噪和去除干扰等功能。
总之,EMU8086软件在微机原理及接口技术数字中的应用是非常广泛的。
无论是在数字电路的设计中,还是在汇编语言编程教学中,EMU8086软件都起着重要的作用。
同时,EMU8086软件还可以应用于数字信号处理等领域,为数字技术的发展做出了重要贡献。
数据分析是对一定数量数据的收集,重组和解释的一个过程。
在这个过程中,我们需要对数据进行清洗,排序,统计,分布图表展示等操作,从而发现数据中的规律性和趋势性,为后续的决策提供参考依据。
以下是一个关于企业销售情况的数据分析范例:数据收集:该企业2019年1-12月销售数据。
8086计算器仿真设计
实验报告一、设计任务:利用微机原理所学的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软硬件实验报告(微机原理与接口技术上机实验)
实验一实验环境熟悉与简单程序设计实验目的(1)掌握DEBUG调试程序的使用方法。
(2)掌握简单程序的设计方法。
实验内容编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。
如:BH=10110010B则运行程序后DH=00001011BDL=00000010B实验准备(1)熟练掌握所学过的指令。
(2)根据实验内容,要求预先编好程序。
实验步骤(1)利用DEBUG程序输入、调试程序。
(2)按下表要求不断地修改BH的内容,然后记录下DX的内容。
实验报告(1)给出程序清单。
(2)详细说明程序调试过程。
程序:CODE SEGMENTSTART : MOV BH,00111111B MOV AL,BHMOV CL,4SHR AL,CLMOV DH,ALMOV AL,BHAND AL,00001111BMOV DL,ALMOV CL,0CODE ENDSEND START实验二简单程序设计实验目的(3)掌握DEBUG调试程序的使用方法。
(4)掌握简单程序的设计方法。
实验内容试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello worldMy name is Li Jianguo参考程序如下:(有错)data segmentout1 db 'Hello world'ax db 'My name is Li Jianguo'data enscode segmentassume cs:code;ds:datalea dx,out1mov ah,2int 21hmov dl,0ahmov ah,2int 21hmov dl,0dhmoo ah,2int 21hlea dx,axmov ah,int 21hcode ends实验步骤(3)利用IDE86程序输入、调试程序。
实验报告(3)给出正确的程序清单。
微机原理8086汇编程序设计
03
MOV指令用于将源操作数复制 到目标操作数,ADD、SUB等 指令用于执行算术运算,CMP 指令用于比较两个操作数的大 小。
算术运算类指令
01
算术运算指令用于执行加法、减法、乘法和除法等算术运算。
02
指令包括ADD、SUB、MUL、DIV等。
03
ADD指令将两个操作数相加并将结果存储在目标操作数中, SUB指令从第一个操作数中减去第二个操作数,MUL指令将 两个操作数相乘并将结果存储在目标操作数中,DIV指令将第 一个操作数除以第二个操作数并将商存储在目标操作数中。
子程序设计的特点是能够提高程序的模块化程度,便于代码重用和维护。同时,子程序可以独立于主 程序进行测试和调试,提高了程序的可靠性。但是,子程序调用会增加程序的执行时间,需要注意优 化子程序的性能。
05 汇编语言与高级语言的接 口
C语言与汇编语言的混合编程
调用约定
在C语言中调用汇编代码时,需要遵循特定 的调用约定,如参数传递方式、寄存器使用 等。
嵌入汇编
在C语言中嵌入汇编代码,可以直接在C程序中编写 汇编指令,但需要注意语法和语义的正确性。
汇编模块
将汇编代码编写成独立的汇编模块,通过外 部函数调用的方式在C程序中使用。
汇编语言在嵌入式系统中的应用
实时性控制
01
汇编语言具有直接控制硬件的能力,适用于嵌入式系统中的实
时性控制,如中断处理、定时器控制等。
02
指令包括JMP、CALL、RET等。
03
JMP指令用于无条件跳转到指定的地址执行程序,CALL指令用于调用子程序并 将返回地址压入堆栈中,RET指令用于从子程序返回并恢复原来的执行流程。
串操作类指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机硬件技术实践报告题目简易计算器的设计姓名专业自动化(电站方向) 班级学号上海电力学院自动化工程学院实践报告内容(目录)一. 设计题目二. 开发目的三. 小组成员分工及成果四. 设计方案以及论证五. 硬件原理图(包括芯片的选型介绍)六. 程序流程图(包括各个子系统和子过程的程序流程)七. 程序清单,要有适当的注释八. 程序运行结果分析与预测九. 结果评述或总结(对实验结果进行分析,对实验过程进行总结,系统改进升级建议或者提出新的方案等。
)一. 设计题目:用8086设计一个能实现0~9整数加法运算的计算器,并用2位LED数码显示. 键盘包括0-9,+ ,-,*,/,=,ON/C;共16个按键.能实现简单的清零操作,减法运算,乘法运算.二.开发目的:通过课程设计,熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
培养集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计熟练运用程序对8255控制键盘和LED显示的控制,完成计算器加减法的应用,并熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
三.小组成员分工及成果:本组的三个成员一起讨论研究简易计算器设计的主要方案。
粗略设计程序流程图以确定简易计算器设计的大概框架。
明确目的后各自查询资料了解设计原理、逐步清晰设计思路。
以下为大体分工:主要负责:1、设计主要程序,编写;2、查找资料验证修改;主要负责:1、选择需要用的各个芯片;2、设计硬件原理图;主要负责:1、各个芯片功能的资料查找;2、设计程序流程图四.设计方案以及论证:利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数的加、减、乘、除的运算。
运算完成后根据程序将运算的结果储存到锁存器中并显示到LED 显示器上。
主要器件选择是采用8086CPU做主控制器,8255作为并行接口电路实现按键扫描以及数码管的显示。
通过8255A的C口和A口实现键盘的接入,通过键盘的不断扫描,如果有键按下,通过查表法分别将输入的数据读到AL中并保存在第一个和第二个数里,将8255A的B端口接上共阴极LED灯,将输入的数据通过查表法,将四段码送共阴极LED 灯显示,当按下‘=’时,通过判断字符,8086来实现不同的操作,并将结果在LED灯上显示,当按下“C”时,将数据先清零,同时LED灯上显示为“00”。
五.硬件原理图(包括芯片的选型介绍):芯片选型及介绍:(1)8086CPU:8086通过数据总线、地址总线、控制总线完成对8253和8255的读写工作,与接口部件实现数据传送,让接口部件实现预计的功能.8086CPU的40条引脚信号可按功能分可分为四类,它们是:地址总线,数据总线,控制总线,其它(时钟与电源)。
最小模式下一些引脚功能(MN/MX接+5V):AD15~AD0,地址/数据总线A19/S6~A16/S3,地址/状态总线RD,读信号WR,写信号M/IO,存储器/输入输出控制信号ALE,地址锁存允许信号READY(Ready),准备就绪信号INTR,可屏蔽中断请求信号INTA,中断响应信号NMI,非屏蔽中断请求信号RESET,系统复位信号DEN,数据允许信号DT/R,数据发送/接收控制信号HOLD,总线保持请求信号输入HLDA,总线保持响应信号TEST,测试信号CLK,时钟输入信号VCC(+5V),GND(2)8255A可编程并行接口芯片:Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。
8255A可为8086微处理器与外部设备之间提供并行输入/输出的通道。
通过编程可以设置芯片的工作方式,并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。
8255A由数据总线缓冲器、读/写控制逻辑电路、A组和B组控制电路以及数据端口A、B和C组成。
数据总线缓冲器是8255A与系统数据总线的接口,CPU输入输出的数据、CPU输出的控制字和外设的状态信息都是通过这个缓冲器传送的。
读/写控制逻辑电路把CPU的控制命令或输出数据送至相应的端口,把外设的状态信息或输入数据通过相应的端口送至CPU。
数据端口PA和PB都包含一个8位输出锁存器/缓冲器和一个8位输入锁存器,(3)74HC373:其中D0-D7为数据输入端,Q0-Q7为输出端。
当三态允许控制端OE为低电平时,Q0-Q7为正常逻辑状态,可用来驱动负载或总线,当OE为高电平时,Q0-Q7成高阻态,不驱动总线。
当锁存允许端LE为高电平时,Q随数据D而变,当LE为低电平D被锁存在已建立的数据电平。
(4)74HC138:74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。
74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。
除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高,74HC138为反相输出,它按照三位二进制输入码和赋能输入条件,从8 个输出端中译出一个低电平输出。
两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器。
六.程序流程图:七.程序清单DATA SEGMENTNUM1 DB 03H DUP(0) NUM DB 03H DUP(0)DATA ENDSSTACK SEGMENTDW 100 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK PORTA EQU 30HPORTB EQU 32HPORTC EQU 34HPORT8255 EQU 36HMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV DX,PORT8255MOV AL,81HOUT DX,ALLOPL: XOR AH,AHCALL KEYCMP AH,00HJZ LOPLCMP AL,0FHJZ CCCLCMP AL,0AHJZ LOPLJNC LOPLOUT 32H,ALLOPL2:LEA SI,NUMMOV [SI],ALPUSH AXLOPL1: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL1CMP AL,0FHJZ CCCLCMP AL,0AHJZ XX1CMP AL,0BHJZ XX2CMP AL,0CHJZ XX3DCMP AL,0DHJZ XX4DJMP LOPL1CCCL: MOV AL,00HOUT 32H,ALJMP LOPLXX3D: CALL XX3XX4D: CALL XX4MAIN ENDPXX1 PROCNOP ;加LOPL3: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL3CMP AL,0FHJZ CCCLCMP AL,0AHJZ LOPL3JNC LOPL3OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],ALLOPL4: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL4CMP AL,0FHJZ CCCLCMP AL,0EHJZ XXX1JMP LOPL4XXX1: LEA SI,NUMMOV AL,[SI]AND AL,0FHMOV DL,[SI+1]AND DL,0FHADD AL,DLDAAOUT 32H,ALJMP LOPLXX1 ENDPXX2 PROCNOP ;减LOPL5: XOR AH,AHCALL KEYCMP AH,00HCMP AL,0FHJZ CCCLCMP AL,0AHJZ LOPL5JNC LOPL5OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],ALLOPL6:XOR AH,AHCALL KEYCMP AH,00HJZ LOPL6CMP AL,0FHJZ CCCL7CMP AL,0EHJZ XXX2JMP LOPL6XXX2: LEA SI,NUMMOV AL,[SI]AND AL,0FHMOV DL,[SI+1]AND DL,0FHSUB AL,DLADD AL,00HDAAOUT 32H,ALJMP LOPLCCCL7: MOV AL,00HOUT 32H,ALJMP LOPLXX2 ENDPXX3 PROCLOPL7: XOR AH,AHCALL KEY ;乘 CMP AH,00HJZ LOPL7CMP AL,0FHJZ CCCL2CMP AL,0AHJNC LOPL7OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],ALLOPL8: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL8CMP AL,0FHJZ CCCL3CMP AL,0EHJZ XXX3JMP LOPL8XXX3: LEA SI,NUMMOV AL,[SI]AND AL,0FHMOV DL,[SI+1]AND DL,0FHMUL DLAAMMOV CL,4SAL AH,CLOR AL,AHOUT 32H,ALJMP LOPLCCCL2: MOV AL,00HOUT 32H,ALJMP LOPLCCCL3: MOV AL,00HOUT 32H,ALJMP LOPLXX3 ENDPXX4 PROC ;除LOPL9: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL9CMP AL,0FHJZ CCCL5CMP AL,0AHJZ LOPL9JNC LOPL9OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],AL LOPL10: XOR AH,AH CALL KEYCMP AH,00HJZ LOPL10CMP AL,0FHJZ CCCL4CMP AL,0EHJZ XXX4JMP LOPL10 XXX4: LEA SI,NUM MOV AL,[SI]AND AL,0FHMOV BL,[SI+1]AND BL,0FHAND AX,000FH DIV BLOUT 32H,ALJMP LOPL CCCL4: MOV AL,00H OUT 32H,ALJMP LOPL CCCL5: MOV AL,00H OUT 32H,ALJMP LOPLXX4 ENDPKEY PROCNOPLEA SI,NUM1MOV AL,0EHOUT 30H,ALIN AL,34HCMP AL,07HJZ LL7CMP AL,0BHJZ LL8CMP AL,0DHCMP AL,0EHJZ LDIVSS1: MOV AL,0DH OUT 30H,ALIN AL,34HCMP AL,07HJZ LL4CMP AL,0BHJZ LL5CMP AL,0DH JZ LL6CMP AL,0EHJZ LMULSS2: MOV AL,0BH OUT 30H,ALIN AL,34HCMP AL,07HJZ LL1CMP AL,0BHJZ LL2CMP AL,0DH JZ LL3CMP AL,0EHJZ LSUBSS3: MOV AL,07H OUT 30H,ALIN AL,34HCMP AL,07HJZ SCLCCMP AL,0BHJZ LL0CMP AL,0DH JZ LEQUCMP AL,0EHJZ LADDJMP KCLC LDIV: MOV AL,0DH JMP LCLCLL0: MOV AL,00H JMP LCLCLL1: MOV AL,01H JMP LCLCLL2: MOV AL,02HLL3: MOV AL,03H JMP LCLCLL4: MOV AL,04H JMP LCLCLL5: MOV AL,05H JMP LCLCLL6: MOV AL,06H JMP LCLCLL7: MOV AL,07H JMP LCLCLL8: MOV AL,08H JMP LCLCLL9: MOV AL,09H JMP LCLC LADD: MOV AL,0AH JMP LCLC LSUB: MOV AL,0BH JMP LCLC LMUL: MOV AL,0CH JMP LCLCLEQU: MOV AL,0EH JMP LCLC SCLC: MOV AL,0FH LCLC: MOV [SI],AL MOV AH,01H KCLC:RETKEY ENDPCODE ENDSEND START八.程序运行结果分析与预测:连接完线路图后把编好的程序关联到8086CPU中进行运行调试,肯定可以实现加减乘除运算,例如3+8=11,通过按键分别输入“3”, “+”,“8”, “=”后,LED灯上将显示出“11”.能实现清零操作,当按下“ON/C”时,LED上显示“00”。