8086简易计算器的设计 微机原理 计硬报告

合集下载

原创 8086微机原理实验报告

原创 8086微机原理实验报告
JZ BAOSHI
CMP DH,00H
JZ BAOSHI
JMP NEXT1
RING: ;半/整点报时
PUSH DX
PUSH AX
MOV DL,07H
MOV AH,02H
INT 21H
POP AX
POP DXAG: MOV D源自,1200IN AL,61H
ANDAL,0FEH
OR AL,02H
OUT 61H,AL
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
ADDAL,1
DAA
MOV DL,AL
CMP AL,60H
JNE DISPY
MOV DL,0
MIN: MOV AL,DH
PUSH DX
MOV AH,02;设置日期提示符显示位置并显示
MOV BH,0
MOV DH,15
MOV DL,30
INT 10H
MOV DX,OFFSET DATE
二、设计原理
设计的基本原理是通过软件实现延时,以实现秒的计时,进而通过进制关系实现分、时的显示。
软件延时原理如下:每条指令执行时间的长短,是以计算机的时钟周期为基本单位的。当CPU采用的时钟频率一定时,时钟周期也为定值,因此可以根据时钟周期的多少来计算执行指令需要的时间。因此可以在程序中增加适当的无关语句让计算机执行,已获得需要的延时。这就是延时程序的设计原理。
一、设计目的:
运用汇编语言设计一个电子时钟,有以下功能:

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端口。

微型计算机原理及接口技术实验报告

微型计算机原理及接口技术实验报告

成都理工大学微型计算机原理及接口技术实验报告学院: 核技术与自动化工程学院专业: 电气工程及其自动化班级:学号:姓名:指导老师:完成时间:实验一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汇编语⾔实现简易计算器本周看了⼀个很有意思的知识。

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微机原理实验报告实验名称:8086微机原理实验实验目的:1.深入了解8086微处理器的内部结构和指令系统。

2.掌握汇编语言的编程方法和技巧。

3.熟悉微机系统的输入输出操作原理。

4.掌握8086微机系统的调试方法和程序调试技巧。

实验器材:1.8086微处理器芯片2.Intel 8086学习板3.编程器4.示波器5.实验箱实验步骤:1.熟悉8086微处理器的内部结构和指令系统在开始实验前,首先需要熟悉8086微处理器的内部结构和指令系统。

通过阅读教材和讲义,了解到8086微处理器采用16位结构,具有4个寄存器组,支持16种不同寻址方式的指令。

熟练掌握常用的指令系统和汇编语言的编程方法。

2.设计并编制简单的汇编程序在熟悉8086微处理器的内部结构和指令系统后,我们开始设计并编制简单的汇编程序。

本实验中,我们编写了一个简单的汇编程序,用于实现两个数的加法操作,并将结果存储在内存中。

程序中使用了mov指令将操作数送入寄存器,add指令将它们相加,再用mov指令将结果存储到内存中。

程序流程图如下所示:a. 将第一个数送入累加器A中。

b. 将第二个数送入寄存器B中。

c. 执行add指令,将A和B相加,结果保存在A中。

d. 将结果存储到内存中。

e. 程序结束。

3.调试程序并进行测试在完成汇编程序的编写后,我们需要使用调试器对程序进行调试,并进行测试。

首先,将程序加载到学习板上进行调试。

在调试过程中,我们使用示波器观察各个信号的波形,以确定程序的正确性。

通过逐步单步执行程序并观察寄存器和标志位的变化,我们验证了程序的正确性。

接下来,我们使用输入设备输入两个数,并观察输出结果是否正确。

测试结果表明程序正确实现了两个数的加法操作。

4.总结体会和改进建议通过本次实验,我们深入了解了8086微处理器的内部结构和指令系统,掌握了汇编语言的编程方法和技巧,熟悉了微机系统的输入输出操作原理,以及掌握了8086微机系统的调试方法和程序调试技巧。

8086汇编语言程序设计 微机实验报告

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微机汇编实验报告

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).七段数码管工作原理实验所用的七段数码管为共阴型,段码采用同相驱动,输入加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

简易计算器的设计

简易计算器的设计

学号:课程设计题目简易计算器的设计学院自动化专业电气工程及其自动化班级姓名指导教师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最小系统构建和IO接口电路参考模板

微机原理实验报告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];另外注意合理安排位置以使电路图更加美观。

微机原理与单片机实验报告

微机原理与单片机实验报告

微机原理与单片机实验报告Prepared on 22 November 2020北京联合大学信息学院实验报告课程名称:微型计算机原理学号:姓名:2012 年 6 月 9 日目录实验1 EMU8086模拟器的使用一实验要求利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的:熟悉EMU8086实验环境三 EMU8086环境:1 模拟器编辑窗口2 模拟器调试窗口四实验内容实验内容1:新建文件。

运行 emu80861. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码:MOV AX, 1020HMOV BX, 2030HMOV AX, BXADD AX, BXMOV [BX], AXMOV [2032H], AXHLT2. 编译:单击“编译”按钮,对程序段进行编译;3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。

4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。

5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。

6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。

7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为 400毫秒,单击“全速”按钮,运行程序,8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序的关联。

10.将“存储器”中地址改为1000:0100,并将从其开始的连续10个单元的内容改为55H。

实验内容2:运行范例在模拟器编辑窗口中1.点击典型范例2.选择:hellow,word程序,编译,运行,观察结果。

微机原理 相减 实验报告

微机原理 相减 实验报告

微机原理相减实验报告实验目的本实验旨在通过对微机原理相减的实验操作,加深对微机原理相关概念的理解,并掌握相减操作的方法、原理和实验步骤。

实验仪器和设备- 8086微处理器- 开发板- 结果显示器实验原理相减操作是计算机中常用的数学运算之一。

在微机原理中,相减操作通过算术逻辑单元(ALU)实现。

当进行相减操作时,两个数值将通过ALU内部的电路进行计算,然后将计算结果通过总线传送到结果显示器上。

实验步骤1. 在开发板上插入8086微处理器。

2. 将需要相减的数值输入到开发板的相应输入端口。

3. 将开发板连接到结果显示器上,并确保连接稳固。

4. 打开电源,启动开发板和结果显示器。

5. 根据8086微处理器的编程规范,编写相减操作的汇编程序代码。

6. 使用8086汇编语言将编写的程序烧录到开发板中。

7. 运行程序,观察结果显示器上的运算结果。

实验结果经过以上步骤操作后,实验结果如下:输入数值A:10输入数值B:5计算结果:5通过结果显示器可以清楚地看到,数值A减去数值B的结果为5,实验操作与预期结果一致。

实验分析本实验通过对微机原理相减操作的实验操作,测试了8086微处理器的相减功能。

实验结果表明,该微处理器的相减功能运行正常,计算结果准确无误。

在实验过程中,我们需要注意连接的稳定性和准确性,以免影响结果显示的准确性。

此外,对于8086汇编程序的编写也需要仔细思考和分析,确保程序的正确性和逻辑性。

实验总结通过本次实验,我们加深了对微机原理中相减操作的理解,并掌握了相减操作的方法和操作步骤。

实验结果表明,8086微处理器的相减功能正常运行,计算结果准确无误。

在今后的学习中,我们应继续加强对微机原理相关概念的学习与理解,并通过更多的实验操作,进一步提升对微机原理的实践能力。

通过不断实践和应用,我们可以更好地掌握微机原理,并为今后的学习与研究奠定坚实的基础。

8086实验报告

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、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微机原理课程设计_压力测量系统的设_有硬件电路图计

8086微机原理课程设计_压力测量系统的设_有硬件电路图计

序号:课程设计(微机原理及应用A)二○一一年七月八日课程设计任务书及成绩评定课题名称压力测控系统的设计I、题目的目的和要求:设计一个对压力传感器的信号进行检测并在LED数码显示器上显示压力值的系统,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。

当压力高于150pa时,红灯闪烁。

LED的显示内容为P=XXX。

X为测试值。

II、设计进度及完成情况日期内容7月4日查阅资料,拟定设计方案。

7月5日选课程设计题目,编写程序。

7月6日设计总体方案,上机调试。

7月7日整理打印设计报告。

7月8日上交设计报告并进行答辩。

III、主要参考文献及资料《微型计算机原理及应用》清华大学出版社郑学坚周斌《微型计算机技术及应用》清华大学出版社史嘉权《微机原理与接口技术基础与应用》海洋出版社邓振杰《微机原理与接口技术实验及课程设计》西南交通大学出版社杨斌《单片机原理及接口技术》清华大学出版社梅丽凤王艳秋学科部主任(签字)Ⅵ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年七月八日一、设计要求设计一个对压力传感器的信号进行检测并在LED数码显示器上显示压力值的系统,当压力低于30pa时,黄灯闪烁,闪烁周期为1秒。

当压力高于150pa 时,红灯闪烁。

LED的显示内容为P=XXX。

X为测试值。

二.设计思想压力测试系统的设计,必然要牵涉到压力的感应与转化,所以必须要有压力传感与A/D转换器。

将自然中的模拟量转化为电压信号,再转化位数字信号进行处理。

一个小型的微机系统,必须要有8086cpu来进行整体的控制,将其通过8255与A/D传感器进行连接。

这就是这个系统的主要框架。

而具体的应用框架则是在主要的框架上添加。

要当压力低于30pa时,黄灯闪烁。

当压力高于150pa时,红灯闪烁。

则应添加8255。

模块。

通过编程来控制黄灯与红灯的亮灭情况,考虑到要进行比较,所以我用了两个比较器进行数据的比较。

同时,由于灯要闪烁,闪烁周期要一秒,所以我们考虑到还要加一个8253芯片去控制。

简易计算器实验报告

简易计算器实验报告

简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。

二、实验原理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、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。

微机原理上机报告

微机原理上机报告

实验一:EMU8086软件安装与使用一、实验目的通过本实验学习EMU8086软件的安装与使用。

二、实验设备PC微机一台,Emu8086仿真软件三、实验任务1. 安装Emu8086仿真软件。

2. 利用Emu8086仿真软件编程。

四、实验原理Emu8086仿真软件就是在Windows下的一种仿真软件,它可以仿真模拟8086的程序运行,并且可以直观地观察CPU寄存器的变化情况。

Emu8086 - Microprocessor Emulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

这对刚开始学组合语言的人会是一个很有用的工具。

它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。

你可以在程序执行当中检视暂存器、旗标以及记忆体。

模拟器会在虚拟PC 中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。

这个软件完全相容於Intel 的下一代处理器,包括了Pentium II、Pentium 4,而相信Pentium 5 也会继续支援8086 的。

这种现象让8086 程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086 的另一个优势是它的指令比较小且相当容易学习。

五、实验内容1. 安装Emu8086仿真软件,熟悉菜单栏,工具栏的每个选项的作用,按照操作流程完成程序的编译、链接,并对编辑窗口中所编写的简单汇编程序进行仿真调试,最后能够输出正确结果。

2. 编写简单程序,实现字符串的显示,显示内容为“姓名(换行)、学号”。

六、实验过程及结果1.EMU8086安装。

图1-1-1 Emu8086的安装图1-1-2 Emu8086的安装图1-1-3 Emu8086的安装图1-1-4 Emu8086的安装图1-1-5 Emu8086的安装图1-1-6 Emu8086的安装2. EMU8086使用,安装完毕,得到窗口如下图1-1:图1-2 Emu进入主界面3. 操作流程(1)file->new->empty workplace,编辑程序,如下图1-2:图1-3 Emu8086的安装(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图1-3:4. emulator->show emulator,开始仿真调试,如下图1-4:图1-5 Emu程序仿真调试界面5. 左键点击run运行程序,结果如图1-5:图1-6 Emu程序仿真调试结果界面七、实验感想这是微机原理的第一次上机,我熟悉了用emu8086的使用方法,通过这个模拟仿真软件初步了解了计算机的原理。

8086微机原理实验报告大连工业大学

8086微机原理实验报告大连工业大学

8086微机原理实验报告大连工业大学不知不觉,微机原理与接口技术实验课程已经结束了。

回忆起来收获颇丰,主如果加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,对于学习机电工程的自动控制和计算机都是很重要的,因为它是和机械语言最接近的了,若是用它来编程序的话,会比用其它高级语言要快得多。

本学期咱们在老师的率领下,进行了微机原理实验六到十这五组实验。

它们别离是:实验六825PA口控制PB口。

实验目的
掌握单片机系统中扩展外围芯片的方式,了解8255芯片的结构及编程方式。

实验内容用8255PA口作开关量输入口,PB口作输出口。

实验步骤
1、用8芯线将8255PA口接至开关Kl~K8,PB口接至发光二极管L1~L8;
2、运行程序,拨动开关K1~K8,观察L1~L8发光二极管是不是对应点亮。

实验目的进一步了解8255芯片的结构及编程方式,学习模拟交通控制的实现方式实验内容用8255做输出口,控制六个发光二极管燃灭,模拟交通灯管理。

8086计算器仿真设计

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软硬件实验报告(微机原理与接口技术上机实验)

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)给出正确的程序清单。

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

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 8086简易计算器的设计微机原理计硬报告计算机硬件技术实践报告题目姓名专业班级学号简易计算器的设计自动化(电站方向)上海电力学院自动化工程学院1/ 18实践报告内容(目录)一. 设计题目二. 开发目的三. 小组成员分工及成果四. 设计方案以及论证五. 硬件原理图(包括芯片的选型介绍)六. 程序流程图(包括各个子系统和子过程的程序流程)七. 程序清单,要有适当的注释八. 程序运行结果分析与预测九. 结果评述或总结(对实验结果进行分析,对实验过程进行总结,系统改进升级建议或者提出新的方案等。

)---------------------------------------------------------------最新资料推荐------------------------------------------------------ 一. 设计题目:用 8086 设计一个能实现 0~9 整数加法运算的计算器,并用 2 位 LED 数码显示. 键盘包括 0-9,+ ,-,*,/,=,ON/C;共 16 个按键.能实现简单的清零操作,减法运算,乘法运算.二.开发目的:通过课程设计,熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。

培养集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。

通过本次课程设计熟练运用程序对 8255 控制键盘和 LED 显示的控制,完成计算器加减法的应用,并熟练应用 8086 汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。

三.小组成员分工及成果:本组的三个成员一起讨论研究简易计算器设计的主要方案。

粗略设计程序流程图以确定简易计算器设计的大概框架。

明确目的后各自查询资料了解设计原理、逐步清晰设计思路。

以下为大体分工:主要负责:1、设计主要程序,编写; 2、查找资料验证修改;主要负责:1、选择需要用的各个芯片; 2、设计硬件原理图;主要负责:1、各个芯片功能的资料查找; 2、设计程序流程图四.设计方案以及论证:利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调用子程序进行判断,3/ 18是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数的加、减、乘、除的运算。

运算完成后根据程序将运算的结果储存到锁存器中并显示到 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,中断响应信号5/ 18NMI,非屏蔽中断请求信号 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 个输出端中译出一个低电平输出。

两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器。

7/ 18六.程序流程图:七.程序清单DATA SEGMENT NUM1 DB 03H DUP(0) NUM DB 03H DUP(0) DATA ENDS STACK SEGMENT DW 100 DUP(0) STACK ENDS CODE SEGMENT---------------------------------------------------------------最新资料推荐------------------------------------------------------ ASSUME CS:CODE,DS:DATA,SS:STACK PORTA EQU 30H PORTB EQU 32H PORTC EQU 34H PORT8255 EQU 36H MAIN PROC FAR START: MOV AX,DATA MOV DS,AX MOV DX,PORT8255 MOV AL,81H OUT DX,AL LOPL: XOR AH,AH CALL KEY CMP AH,00H JZ LOPL CMP AL,0FH JZ CCCL CMP AL,0AH JZ LOPL JNC LOPL OUT 32H,AL LOPL2: LEA SI,NUM MOV [SI],AL PUSH AX LOPL1: XOR AH,AH CALL KEY CMP AH,00H JZ LOPL1 CMP AL,0FH JZ CCCL CMP AL,0AH JZ XX1 CMP AL,0BH JZ XX2 CMP AL,0CH JZ XX3D CMP AL,0DH JZ XX4D JMP LOPL1 CCCL: MOV AL,00H OUT 32H,AL JMP LOPL XX3D: CALL XX39/ 18XX4D: MAIN ENDP XX1CALLXX4PROC NOP LOPL3: XOR CALL CMP JZ CMP JZ CMP JZ JNC OUT PUSH LEA MOV LOPL4: XOR CALL CMP JZ CMP JZ CMP JZ JMP XXX1: LEA MOV AND MOV AND ADD DAA OUT JMP XX1 ENDP XX2 PROC NOP XOR CALL CMP;加 AH,AH KEY AH,00H LOPL3 AL,0FH CCCL AL,0AH LOPL3 LOPL3 32H,AL AX SI,NUM [SI+1],AL AH,AH KEY AH,00H LOPL4 AL,0FH CCCL AL,0EH XXX1 LOPL4 SI,NUM AL,[SI] AL,0FH DL,[SI+1] DL,0FH AL,DL 32H,AL LOPL;减 AH,AH KEY AH,00HLOPL5:---------------------------------------------------------------最新资料推荐------------------------------------------------------JZ CMP JZ CMP JZ JNC OUT PUSH LEA MOV LOPL6:LOPL5 AL,0FH CCCL AL,0AH LOPL5 LOPL5 32H,AL AX SI,NUM [SI+1],ALXXX2:CCCL7:XOR AH,AH CALL KEY CMP AH,00H JZ LOPL6 CMP AL,0FH JZ CCCL7 CMP AL,0EH JZ XXX2 JMP LOPL6 LEA SI,NUM MOV AL,[SI] AND AL,0FH MOV DL,[SI+1] AND DL,0FH SUB AL,DL ADD AL,00H DAA OUT 32H,AL JMP LOPL MOV AL,00H OUT 32H,AL JMP LOPLXX2ENDPXX3 PROC LOPL7: XOR CALL CMP JZ CMP JZ CMPAH,AH KEY AH,00H LOPL7 AL,0FH CCCL2 AL,0AH;乘11/ 18LOPL8:XXX3:CCCL2:CCCL3:JZ LOPL7 JNC LOPL7 OUT 32H,AL PUSH AX LEA SI,NUM MOV [SI+1],AL XOR AH,AH CALL KEY CMP AH,00H JZ LOPL8 CMP AL,0FH JZ CCCL3 CMP AL,0EH JZ XXX3 JMP LOPL8 LEA SI,NUM MOV AL,[SI] AND AL,0FH MOV DL,[SI+1] AND DL,0FH MUL DL AAM MOV CL,4 SAL AH,CL OR AL,AH OUT 32H,AL JMP LOPL MOV AL,00H OUT 32H,AL JMP LOPL MOV AL,00H OUT 32H,AL JMP LOPLXX3ENDP ;除 AH,AH KEY AH,00H LOPL9 AL,0FH CCCL5 AL,0AHXX4 PROC LOPL9: XOR CALL CMP JZ CMP JZ CMP---------------------------------------------------------------最新资料推荐------------------------------------------------------ LOPL10:XXX4:CCCL4:CCCL5:JZ LOPL9 JNC LOPL9 OUT 32H,AL PUSH AX LEA SI,NUM MOV [SI+1],AL XOR AH,AH CALL KEY CMP AH,00H JZ LOPL10 CMP AL,0FH JZ CCCL4 CMP AL,0EH JZ XXX4 JMP LOPL10 LEA SI,NUM MOV AL,[SI] AND AL,0FH MOV BL,[SI+1] AND BL,0FH AND AX,000FH DIV BL OUT 32H,AL JMP LOPL MOV AL,00H OUT 32H,AL JMP LOPL MOV AL,00H OUT 32H,AL JMP LOPLXX4 KEYENDP PROC NOP LEA SI,NUM1 MOV AL,0EH OUT 30H,AL IN AL,34H CMP AL,07H JZ LL7 CMP AL,0BH JZ LL8 CMP AL,0DH13/ 18JZ LL9 CMP AL,0EH JZ LDIV SS1: MOV AL,0DH OUT 30H,AL IN AL,34H CMP AL,07H JZ LL4 CMP AL,0BH JZ LL5 CMP AL,0DH JZ LL6 CMP AL,0EH JZ LMUL SS2: MOV AL,0BH OUT 30H,AL IN AL,34H CMP AL,07H JZ LL1 CMP AL,0BH JZ LL2 CMP AL,0DH JZ LL3 CMP AL,0EH JZ LSUB SS3: MOV AL,07H OUT 30H,AL IN AL,34H CMP AL,07H JZ SCLC CMP AL,0BH JZ LL0 CMP AL,0DH JZ LEQU CMP AL,0EH JZ LADD JMP KCLC LDIV: MOV AL,0DH JMP LCLC LL0: MOV AL,00H JMP LCLC LL1: MOV AL,01H JMP LCLC LL2: MOV AL,02H---------------------------------------------------------------最新资料推荐------------------------------------------------------ LL3: LL4: LL5: LL6: LL7: LL8: LL9: LADD: LSUB: LMUL:JMP LCLC MOV AL,03H JMP LCLC MOV AL,04H JMP LCLC MOV AL,05H JMP LCLC MOV AL,06H JMP LCLC MOV AL,07H JMP LCLC MOV AL,08H JMP LCLC MOV AL,09H JMP LCLC MOV AL,0AH JMP LCLC MOV AL,0BH JMP LCLC MOV AL,0CH JMP LCLC MOV JMP MOV MOV MOV AL,0EH LCLC AL,0FH [SI],AL AH,01HLEQU: SCLC: LCLC: KCLC: KEY CODERET ENDP ENDS END START15/ 18八.程序运行结果分析与预测:连接完线路图后把编好的程序关联到8086CPU 中进行运行调试,肯定可以实现加减乘除运算,例如3+8=11,通过按键分别输入“3”, “+”,“8”, “=”后,LED 灯上将显示出“11”.能实现清零操作,当按下“ON/C”时,LED 上显示“00” 。

相关文档
最新文档