当前位置:文档之家› 微机原理实验五--8255输入、输出实验

微机原理实验五--8255输入、输出实验

微机原理实验五--8255输入、输出实验
微机原理实验五--8255输入、输出实验

南昌大学实验报告

实验五 8255输入、输出实验

一、实验要求:

利用8255可编程并行口芯片,实现输入/输出,实验中用8255PA口作输出,PB口作输入。

二、实验目的:

(1)了解8255芯片结构及编程方法。

(2)了解8255输入/输出实验方法。

三、实验器材:

(1)G2010实验平台 1 台(2)G6W仿真器 1 台(3)连线若干根(4)8255芯片 1 片(5)LAB8088CPU板 1 块

四、实验电路:

8255的/CS接译码器Y2(0A000H-0AFFFH),则命令字地址为0A003H,PA口地址为0A000H,PB口地址为0B001H,PC口地址为0B002H。PA0-PA7(PA口)接L0-L7(LED发光二极管组),PB0-PB7(PB口)接K0-K7(K0-K7开关量发生器),再接上数据线和读/写信号,地址线只接 A0,A1即可,还要接上RESET信号,以便8255A可靠复位。

特别强调:8255的第七脚应接GND(地),第二十六脚应接+5V。

五、实验说明:

可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。本实验采用的是方式0:PA,PC口输出,PB口输入。方式字为82H。

六、实验步骤:

(1)使用实验平台锁进插座,如图连线,因8255片选信号为0A000H,所以,A口为0A000H、口为0A001H、C口为0A002H、命令口为0A003H。

(2)硬件测试:把G2010+G6W连PC机,在WINDOWS调试环境下点击[窗口/数据窗口/MEMORY],以打开MEMORY数据窗口,在打开的MEMORY窗口中的0A003H地址(即8255的片选空间)上写入控制字82H,在0A000H(8255的A口)上打入55H,0AAH等数字,LED发光二极管组对应点亮。若不是,则硬件有问题。

(3)编写程序、编译程序,用单步、断点、连续方式调试程序,排除软件错误。运行程序,直至达到本实验的要求为止。

七、程序框图:

八、程序清单:

mode equ 082h ; 方式0,PA,PC输出,PB输入

PortA equ 0A000h ; Port A

PortB equ 0A001h ; Port B

PortC equ 0A002h ; Port C

CAddr equ 0A003h ; 控制字地址

code segment

assume cs:code

start proc near

Start:

mov al, mode

mov dx, CAddr

out dx, al ; 输出控制字

;实验1:PortA输出

mov al, 80H

mov cx, 08H

OutA:

mov dx, PortA

out dx, al ; 输出PortA

mov dx, PortC

out dx, al

shr al, 1 ; 移位

mov ah,100

call delay ; 延时

loop OutA

;实验2:PortB 输入PortA 输出

mov dx, PortB

in al, dx ; 读入PortB

mov dx, PortC

out dx, al

mov dx, PortA

out dx, al ; 输出到PortA

mov ah, 200

call delay

jmp Start

endp

delay proc near

push ax

mov al,0

push cx

mov cx,ax

loop $

pop cx

pop ax

ret

delay endp

code ends

end start

九、实验结果

八个LED灯从左至右依次亮起,之后显示K0-K7八个开关状态(1亮0灭),如此循环8次,灯将会全部熄灭。四个交通灯以逆时针方向依次亮起。

十、实验感想

本次实验主要做了两个

实验1,即往端口A写数据80H,并从端口C输出于第一个LED,之后80H依次向右逻辑右移一位并让LED一次亮起,因cx值为08h,所以循环次数为8次;实验2,即端口B读开关状态并从端口C输出到相应的LED灯,此时LED灯显示的是K0-K7八个开关状态,延时并跳转重复。

这次试验主要在于分析实验程序,理解8255输入输出程序编写,8255A有三个八位的并行I/O口,它有三种工作方式。本实验采用的是方式0:PA,PC口输出,PB口输入。方式字为82H。

实验四 输入输出流程序设计

C++面向对象程序设计课程实验报告 课程名称C++面向对象程序设计班级实验日期2014.5.16-2012 .5.23 姓名学号实验成绩实验名称实验四输入输出流程序设计 实验目的及要求1.理解输入输出流的基本概念,明确流是一个类 2.了解输入输出流类库基本结构和主要类,掌握主要层次,其中重 点理解fstream,iostream和iomanip 3.理解流缓冲区类的派生关系以及设备缓冲、文件缓冲和流缓冲 4.熟悉格式化的输入和输出,记住主要的常用的操作符,以及各种 应用(对齐) 掌握文件的输入和输出,区别C语言中的文件写入、打开等操作,会对一个文件进行I/O操作 实验环境硬件平台:普通的PC机 软件平台:Windows 操作系统编程环境:VisualC++ 6.0 实验内容1.文件数据的读取。编制一程序来显示并保存[2,1000]内的所有素数。显示、保存素数的格式为:每行10个素数,每一个素数占7个字符,右对齐,最后一行不足10个素数时按一行输出 2.编写一个单向链表的类模板,分别实现增加、删除、查找和打印操作 算法描述及实验步骤1、这个题主要考察了文件中数据的读取,还包括数据格式化输入输出。首先定义一个ofstream类的对象output,在main函数中打开文件后,再分别编写判断素数、每行输出10个数以及使辖域为7的代码,最后关闭文件。 2 这个题是C++与数据结构的结合,实现单向链表内各种功能。首先定义一个类ListNode,然后利用前插入法初始化链表,编写类模板的成员函数,再分别进行增加、删除和查找的操作

调试过程及实验结果 总结1.一旦文件被打开,文件中的文本数据信息的读/写操作与控制台文件信息的输入/输出操作就完全一致 2.定义ifstream、ofstream、fstream流类对象时,应用对象名替代控制台文本信息输入/输出使用的输入流类对象(如cin)和输出流类对象(如cout)

实验04Java输入输出流报告材料

实验四 Java 输入输出流 1.实验目的 (1) 掌握输入输出流的总体结构; (2) 掌握流的概念; (3) 了解各种流(包括文件流、过滤流、对象的序列化、随机访问)的使用。2.实验内容 实验题1 编写一个Java Application程序,打印命令行输入的所有参数。 [基本要求] 编写完整程序。 运行结果: 代码如下: import java.util.Scanner; public class CommandOutPut { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Please input :"); Scanner in = new Scanner(System.in);

String str = in.nextLine(); System.out.println("The output results :"); System.out.println(str); in.close(); } } 实验题2 通过键盘输入路径,搜索指定路径下的全部内容。 运行结果: 代码如下: package https://www.doczj.com/doc/ad328262.html,.output; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class Output { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String fileName = "d:\\xxx.txt"; File file = new File(fileName); byte[] b=new byte[(int)file.length()]; FileInputStream out=new FileInputStream(file);

8255并口实验详解

xxxx大学计算机学院实验报告

一、实验内容与要求 1.1 实验内容 (1)8255方式0实验 从8255端口C输入数据,再从端口A输出 (2)8255方式1输出实验 编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断服务:依次输出01H,02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。 (3)8255方式1输入实验 编程实现:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。 1.2 实验要求 (1)8255方式0实验 实验预期效果:拨动逻辑开关,启动程序,开关打开的对应灯可以亮起。改变开关的状态,灯的亮暗也随之改变。 (2)8255方式1输出实验 实验预期效果:按一次单脉冲按钮,L0亮起;以后每按一次,后面的灯依次会亮起。中断8次结束。 (3)8255方式1输入实验 实验预期效果:每按一次单脉冲按钮读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。 二、实验原理与硬件连线 2.1 实验原理 CPU通过指令将控制字写入8255A的控制端口设置它的工作方式。8255A有两个控制字:方式选择控制字和端口C置位/复位控制字,这两个控制字均写入同一个控制端口地址(端口选择

先A1A0=11) 8255A有3种工作方式:方式0——基本输入/输出方式;方式1——选通输入/输出方式;方式2——双向传输方式。方向选择控制字用于设置各端口的工作方式。 方式0称为基本输入/输出方式。该方式下,端口A、端口B、端口C的高4位和端口C的低4位均可独立地设为输入或输出数据端口。在方式0时,8255A与CPU时间没有应答联络信号,可用于无条件传送或查询方式数据传送场合。采用查询方式传送时,可以将端口A、端口B 作为数据端口,用端口C存放外部设备状态信息,用于CPU查询。 方式1称为选通输入/输出方式。该方式下,端口A、端口B可作为数据传输口,而端口C 的一些引脚规定作为端口A、端口B的联络控制信号,有固定的搭配规定。在方式1时,CPU和8255A之间有应答联络信号,所以采用中断方式或程序查询方式传送数据。 当端口A作为方式1输入时,端口C的PC3、PC4、PC5作为端口A的联络控制信号。 当端口A作为方式1输出时,端口C的PC7、PC6、PC3作为端口A的联络控制信号。 状态字通过读端口C获得。需要强调,从端口C读出的状态字与端口C的外部引脚的状态无关。 2.2 硬件连线 (1)8255方式0实验1 连接实验电路,8255端口C接逻辑电平开关K0~K7,端口A接LED显示电路 L0~L7 U18 8255 K0 K1 K5 L0 L1 L2 L3 L4 L5 L6 L7图2-2-1 实验一接线

C++输入输出流实验报告

深圳大学实验报告 实验课程名称:程序设计实验与课程设计 实验项目名称:实验10 C++流输入与流输出 学院:计软专业:计科 报告人:学号:班级: 3 同组人:无 指导教师:朱安民 实验时间:2014年6月16日提交时间:2014年6月16 声明: 本次实验内容由报告人和同组人独立完成,所有涉及到他人的工作均已说明。报告人和同组人均同意教师及学校为教学活动而引用本实验的内容,且无需事先征得同意和特别说明。 教务处制

一、实验目的 1.掌握标准输入输出(iostream库中标准对象cin、cout)的使用 2.掌握IO流类成员函数输入输出(cin.get, cin.getline, cin.read; cout.put, cout.write)的使用 3.掌握输出格式(标准控制符、IO流类成员函数、iomanip头文件中的控制符)控制方法 4.掌握磁盘文件的输入输出方法 二、实验说明和实验环境 1.在奥特曼类的基础上,编写一个程序,重载运算符“》”和“《”,使得用户可以直接(格式化)输出奥特曼的状态。在主程序中输入若干个(3个)奥特曼的状态,并分别将它们保存到文件RecordU.txt中。然后读取并显示文件中的内容。 2.奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display 在奥特曼的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0 在怪兽的初始化中,需要接受外来等级参数,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍 对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。 注意:为了实现运算符《重载,需要包含头文件 经常天降怪石会砸中奥特曼或怪兽,如果被幸运石砸中,就会处于“鸿运当头”状态,被砸对象除等级外其它属性全部翻倍;如果被厄运石砸中,就会陷入“倒霉透顶”状态,被砸对象除等级外其它属性全部减半。把“鸿运当头”封装成操作,并用重载运算符++来实现;“倒霉透顶”封装成操作,并用重载运算符--来实现。两个重载都需要用友元方法。 3.奥特曼和怪物经过一番战斗斗,需要中场休息,休息时把各自的属性值存放到一个文件中,休息结束时需要从文件中读取之前的状态继续战斗。 奥特曼和怪物都具有属性:等级, 生命, 攻击, 经验, 金钱,都具有方法:初始化initial和显示状态display 奥特曼和怪兽的属性值均来自于文件(文件的第一行是奥特曼的数据,初始状态为:等级是8,生命, 攻击的数值初始化为等级的10倍,金钱为等级的100倍,经验恒为0,文件的第二行是怪兽的数据,初始状态为等级是4,生命, 攻击的数值初始化为等级的8倍,经验为等级的80倍,金钱为等级的800倍)对怪兽和奥特曼的状态输出采用运算符《重载的方法,并结合display方法使用,注意本题目要求怪兽和奥特曼的状态输出必须使用重载运算符《,不能直接使用display方法。 把信息直接从文件读出来并赋值给奥特曼和怪兽,需要重载》运算符作为友元; 把奥特曼和怪兽的值写入文件,要求重载《运算符作为友元

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

实验六---8255并行输入输出

实验六---8255并行输入输出

东南大学 《微机实验及课程设计》 实验报告 实验六 8255并行输入输出

姓名:学号: 专业:测控技术与仪器实验室: 516 同组人员:评定成绩: 一、实验目的 1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示; 2)掌握8段数码管的动态刷新显示控制; 二、(1)实验内容(必做) 6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。 6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。(如56或7f) (2)实验内容(必做一题,选做一题) 6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII 码不是数字(0~9),数码管显示E字母。 6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出) 三、实验原理 (1)实验预备知识

图 八段式LED 数码管的符号和引脚 (2) 6-1流程图:

N Y 将对应段码输 结 6-1源代码: data segment ioport equ 0ec00h-0280h io8255a equ ioport+288h ;8255A口地址 io8255b equ ioport+28bh ;8255控制寄存器端口地址 led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$';提示data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式 mov ax,80h

实验七输入输出流

实验七输入输出流 一、实验目的 (1)了解流式输入输出的基本概念; (2)熟悉Java.io包中常用的基本输入输出类; (3)掌握程序与文件之间的基本输入输出操作; 二、实验内容 1) 把字符串“20102324,张三,男,25,软件工程”,保存到文件”d:\\a.txt”中, 并读取打印a.txt文件中的内容。 2) 把我们在聊天界面中发送的消息保存到日志文件里面,在界面上添加一个历史按钮,当点击历史按钮时读取日志文件内容。 三、实验步骤 1)把字符串“20102324,张三,男,25,软件工程”,保存到文件”d:\\a.txt”中,并读取打印a.txt文件中的内容。 (1) 定义变量message,值为“20102324,张三,男,25,软件工程”; (2) 创建指向”D:\\a.txt”的文件对象 (3) 创建输出流 (4) 把message写入流(文件)中 (5) 关闭输出流 (6) 创建输入流 (7) 读取文件内容 (8) 打印文件内容 (9) 关闭输入流 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileIO { public static void main(String[] args) { String message = "20102324,张三,男,25,软件工程"; File myFile=new File("D:\\a.txt"); //写文件 try { FileOutputStream fout = new FileOutputStream(myFile,true);//不覆盖 try { fout.write(message.getBytes()); } catch (IOException e) { e.printStackTrace(); }finally{ try { fout.close(); } catch (IOException e) { e.printStackTrace();}} } catch (FileNotFoundException e) { e.printStackTrace(); } //读文件 try { FileInputStream fint = new FileInputStream(myFile); byte b[] = new byte[(int) myFile.length()]; try { fint.read(b); String s = new String(b); System.out.println(s); } catch (IOException e) {

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

8255试验报告(方式1查询输出)

《微型计算机接口技术》实验报告 实验名称:可编程并行接口芯片8255应用 (8255方式1、查询输出) 姓名 学号: 班级: 日期: 广东外语外贸大学信息科学技术学院

一、实验目的 掌握8255方式1查询输入、输出时的使用及编程 二、实验内容 1、按照图示连接硬件(注意图中大多数线试验箱已经连好,只连接需要用户连接的部分,预习,参考PPT) 2、编程:每按一次单脉冲按钮,ACK信号有效,8255内部输出准备好状态有效(INTR),查询输出一次数据,点亮、熄灭相应的发光二极管。 三、实验原理(8255方式1输出:结合结构图、时序图、状态字描述) 8255是一片可编程并行I/O接口芯片,每片8255有两个8位的并行口(PA,PB)和两个4位并行口(PC的高、低四位),其中PA口可工作于方式0,1,2。PB口工作于方式0,1。PC口仅能工作于方式0。在方式1中,将8255的三个端口分为了A、B两组,PA、PB两个口仍作为数据输入/输出口,而PC口则作为两部分,分别作为PA、PB口的联络信号。8255A 方式1 A口输出过程由CPU响应中断开始,在中断中用OUT指令通过8255A 向外设输出数据,发出WR 信号;WR上升沿清除INTRA 中断请求信号,且使OBFA =“L”(有效),通知外设取数;当外设接受数据后,发出ACKA 应答信号,一方面使OBFA=“H”(无效),另一方面在ACKA信号的上升沿使INTRA=“H”(有效),以此向CPU发出新的中断请求,开始下一轮输出。 四、硬件设计及方案论证(完整图的信号线连接及作用:数据、地址、控制及外设线)硬件设计如图,其中: 1.8255芯片中的数据总线D0—D7是和CPU的数据线直接相连的,从而CPU可以向8255 发送命令、数据和8255芯片也可以向CPU发送状态、数据等等。 2.8255芯片中的A0和A1也是与CPU的地址总线直接相连,并且在控制字在以下几种 情况有不同的设置,若A1A0= 00时,8255芯片中的PA口被选中,若A1A0=01时,8255芯片中的PB口被选中,若A1A0=10时,8255芯片中的PC口被选中,若A1A0=11时,则8255芯片的控制口被选中。 3.8255芯片的读信号、写信号、复位信号,分别于CPU的IOR、IOW、RESET直接相 连,当CPU执行IN指令时,8255的读信号有效,CPU从8255芯片读取信息,当CPU 执行OUT指令时,8255的写信号有效,CPU输出信息到8255芯片,完成一定的功能。 而当CPU发出复位的信号时,8255也会进行复位操作。 4.8255芯片中的片选信号与3—8译码器的Y1相连,而Y1的寻址范围是288H—28FH, 而8255芯片中的端口A的地址是288H,端口B的地址是289H,端口C的地址是28AH,控制端口的地址是28BH,因此4的端口都在在3—8译码器的Y1的寻址范围之内。5.8255芯片的PC6与脉冲信号是连接在一起,8255芯片的A端口与二极管L7—L0直接 相连。当脉冲信号到来,PC6会被置1,允许中断,CPU会将数据通过8255芯片的A 口输出到二极管L7中,点亮相应的灯。 。。。。。。等等详细论证,如我课堂所讲

微机原理实验报告6

8254定时/计数器应用实验 1.实验目的: (1)、掌握8254的工作方式及应用编程。 (2)、掌握8254的典型应用电路接法。 2.实验设备: PC微机一台、TD-PIT+ 实验系统一套。 3.实验内容: (1)、计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KK1-五次后,产生一次计数中断,并在屏幕上显示一个字符‘5’。 (2)、定时应用实验。编写程序,应用8254的定时功能,实现一个秒表计时并在屏幕上显示。 4.实验说明及步骤: (1)定时应用实验: 编写程序,将8254的计数器2设置为方式3,用1.8432MHz作为CLK2时钟,计数值为64H,OUT2输出为18.432KHz的时钟。将OUT2连接到计数器0的CLK0,设置计数器0也工作在方式3,计数值为18432,相当于18432分频,则在OUT0得到1Hz的输出。参考程序流程如图5-2所示。 图5-2 8254定时应用实验接线图 实验步骤如下: a确认从PC机引出的两根扁平电缆已经连接在实验平台上。 b首先运行CHECK程序,查看I/O空间始地址。

c利用查出的地址编写程序,然后编译链接。 d参考图5-2所示连接实验线路。 e运行程序,看数据灯显示是否正确。 8254定时应用实验代码输出1Hz ;*** *********根据查看端口资源修改下列符号值******************* IOY0 EQU 9C00H ;************************************************************** **** MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,0B6H ;计数器2,方式3 OUT DX,AL MOV DX,MY8254_COUNT2 ;装入计数初值 MOV AL,64H ;100分频 OUT DX,AL MOV AL,00H OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式

微机原理实验8255并行口实验PA输入、PB输出

8255A并行口实验PA输入、PB输出利用LED等显示 程序 LCD EQU 07FE0H LCDWI EQU LCD+0 ;写命令 LCDWD EQU LCD+1 ;写数据 LCDRS EQU LCD+2 ;读状态 LCDRD EQU LCD+3 ;读数据 PA EQU 0FFD8H PB EQU 0FFD9H PC EQU 0FFDAH PCTL EQU 0FFDBH code segment assume cs:code lin db 0 col db 0 num db 0 dis_num db 0 temp0 db 0 temp1 db 0 count db 0 org 1000h start: MOV DX,PCTL MOV AL,90H OUT DX,AL call init_lcd mov al,3 call delay2 mov count,0 mov bx,offset tab0 mov lin,0 mov col,0 mov num,16 call dis_english GOON: MOV DX,PA IN AL,DX TEST AL,01H JE GOON1 TEST AL,02H JE GOON2

TEST AL,04H JZ GOON3 TEST AL,08H JE GOON4 TEST AL,10H JE GOON5 TEST AL,20H JE GOON6 TEST AL,40H JE GOON7 TEST AL,80H JZ GOON8 JMP GOON9 GOON1: JMP KEY1 GOON2: JMP KEY2 GOON3: JMP KEY3 GOON4: JMP KEY4 GOON5: JMP KEY5 GOON6: JMP KEY6 GOON7: JMP KEY7 GOON8: JMP KEY8 GOON9: mov bx,offset tab9 mov lin,1 mov col,0 mov num,16 call dis_english MOV DX,PB MOV AL,0FFH OUT DX,AL JMP GOON KEY1: MOV DX,PB MOV AL,0FEH OUT DX,AL mov bx,offset tab1 mov lin,1 mov col,0 mov num,16 call dis_english JMP GOON KEY2: MOV DX,PB MOV AL,0FDH OUT DX,AL

微机原理实验报告

大学 科技学院 实 验 报 告 课程名称:微机原理实验

实验一数据转换实验 一、实验目的 (1)初步掌握在PC机上建立、汇编、链接和运行8086/88汇编语言程序的过程。 (2)通过对两个验证性试验的阅读、调试、掌握不同进制数及编码相互转换的程序设计方法。 (3)完成程序设计题,加深对数码转换的理解,了解简单程序设计方法。 二、实验内容 1.十六进制数转换为ASCII码 设二字节十六进制数存放于其实地址为3500H的内存单元中,把他们转换成ASCII码后,再分别存入起始地址为350A的四个内存单元中。从书上ASCII码表中可知十六进制数加30H即可得到0H~9H的ASCII码,而要得到AH~FH 的ASCII码,则需再加7H。 请根据所给流程图理清思路,总结出对应的若干要点。将流程图与参考程序相互。根据分析的结果将运行时内存的变化列写出来。 学习并使用MASM或WAVE仿真软件分析程序运行过程中相关寄存器及相应内存的变化情况来验证自己的猜想,以巩固命令的学习,提高编程能力。

图1-1-1

DATAS SEGMENT ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV CX,0004H;根据转换个数设定循环次数 ;(两字节十六进制数如6B2C对应有四个用十六进制表示的ASCII码表示,即四个字节) MOV DI,3500H;指向该两字节十六进制数起始地址,此时在调试窗口修改内存字节 MOV DX,[DI];将地址3500H中的内容(6B2C)给DX A1: MOV AX,DX;第一次时DX=6B2C, ;因为想顺序取C、2、6、B,所以需要一个中间变量AND AX,000FH;取低四位,第一次取到C, CMP AL,0AH;判断AL属于0~9,还是A~F JB A2;如果是0~9,则跳转到A2 ADD AL,07H;若属于A~F,再加上07H后也是再加上30H即得到转换。 A2: ADD AL,30H;0~9的ASCII码对应的十六进制比其 ;本身(注意:亦是十六进制)大30H MOV [DI+0AH],AL;将转码后的C,即43H给350A INC DI;将DI指向下一字节,用于存储转码后的值,第一次自增后要存‘2’ PUSH CX;功能是接下来要用到CX作为一个中间变量, ;而刚才已经使用并且接下来还会用到CX的值, ;也可以不用CX,用其他不用的寄存器或者直接立即数形式的。 MOV CL,04H;若直接用立即数,可能不稳定,(原因不详)用一个中间变量。

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

实验四 8255输入、输出实验

2题:A口输出,B口读入Code segment Assume cs:code Start proc near START: Mov al , 082h Mov dx , 8003h Out dx , al MOV dx ,8001h in al ,dx mov dx,8000h out dx ,al jmp start Code ends End start 1题:用A口控制小灯循环亮灭

Code segment Assume cs:code Start proc near START: Mov al , 082h Mov dx , 8003h Out dx , al Mov al , 080h Mov cx , 08h OUTA: Mov dx , 8000h Out dx , al mov dx,8002h out dx,al shr al,1 mov ah,200 call delay Loop OUTA JMP start Delay proc near Push ax Mov al , 0

Push cx Mov cx , ax Loop $ Pop cx Pop ax Ret Delay endp Code ends End start 思考题:用C口控制小灯Code segment Assume cs:code Start proc near START: Mov al , 00000010h Mov dx , 8003h OUT DX,AL call delay Mov al , 00000011h

Mov dx , 8003h OUT DX,AL call delay JMP START Delay proc near MOV CX ,20000 Loop $ Ret Delay endp Code ends End start

java 输入输出流实验

实验1 学读英文单词 1. 相关知识点 当程序需要读取磁盘上的数据或将程序中得到数据存储到磁盘时,就可以使用输入/输出流,简称I/O流。I/O流提供一条通道,用户可以通过该通道读取“源”中的数据或把数据传送到目的地。I/O流中的输入流的指向称作源,程序通过指向源的输入流读取源中的数据;输出流的指向称作目的地,程序通过指向目的地的输出流写入数据并把信息传递到目的地。 FileReader类是Reader的子类,该类创建的对象称为文件字符输入流。文件字符输入流按字符读取文件中的数据。FileReader流按顺序读取文件,只要不关闭流,每次调用读取方法时FileReader流就会依次读取文件中其余的内容,直到文件的末尾或流被关闭。 FileWriter类是Writer的子类,该类创建的对象称为文件字符输出流。文件字符输出流按字符将数据写入到文件中。FileWriter流按顺序写入数据,只要不关闭流,每次调用写入方法时FileWriter流就会依次向文件写入内容,直到流被关闭。 FileInputStream是InputStream的子类,该类创建的对象称为文件字节输入流。文件字节输入流按字节读取文件中的数据。FileInputStream流按顺序读取文件,只要不关闭流,每次调用读取方法时就依次读取文件中其余的内容,直到文件的末尾或流被关闭。 FileOutputStream类是OutputStream的子类,该类创建的对象称为文件字节输出流。文件字节输出流按字节将数据写入到文件中。FileOutputStream流按顺序写入数据,只要不关闭流,每次调用写入方法FileOutputStream流就会依次向文件写入内容,直到流被关闭。 BufferedReader类创建的对象称为缓冲输入流,该输入流的指向必须是一个Reader流,称作BufferedReader流的底层流,底层流负责将数据读入缓冲区,BufferedReader流的源就是这个缓冲区,缓冲输入流再从缓冲区中读取数据。 BufferedWriter类创建的对象称为缓冲输出流,缓冲输出流可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写入缓冲区,FileWriter流作为BufferedWriter的底层流,负责将数据写入最终目的地。 2. 实验目的 掌握字符输入流和输出流的用法。 3. 实验要求 编写一个Java应用程序,其要求如下: (1)程序可以将一个由英文单词组成的文本文件读入到程序中。 (2)单击“下一个单词”按钮可以在一个标签中显示程序读入的一个单词。 (3)单击“发音”按钮可以听到标签上显示的单词的读音。 (4)用户可以使用文本编辑器编辑程序中用到的三个由英文单词组成的文本文件:training1.txt、training2.txt和training3.txt,这些文本文件中的单词需要用空格、逗号或回车符分隔。 (5)需要制作相应的声音文件,比如,training1.txt文件包含单词hello,那么在当前应用程序的运行目录中需要有hello.wav格式的声音文件。 4. 程序效果示例 5. 程序模板 按模板要求,将【代码1】~【代码5】替换为Java程序代码。 模板1:StudyMainClass.java

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

《微机系统与接口技术》8255流水灯实验报告

《微机系统与接口技术》 预习报告 学院:计算机学院 专业:网络工程 班级学号: 学生姓名:小发 实验日期: 指导老师: 成绩评定: 五邑大学计算机学院制表

一,实验目的 1,学习并掌握8255 的工作方式及其应用。 2,掌握 8255 典型应用电路的接法。 3,掌握程序固化及脱机运行程序的方法。 二,实验设备 PC机器一台,TD-PITE实验装置或TD-PITC实验装置一套 三,实验内容 1,基本输入输出实验。编写程序,使 8255 的 A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。 2,流水灯显示实验。编写程序,使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由 左向右,每次仅亮一个灯,循环显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。 四实验内容及步骤 1. 基本输入输出实验 本实验使 8255 端口 A 工作在方式 0 并作为输入口,端口 B 工作在方式 0 并作为输出口。实验接线图如图 6 所示,按图连接实验线路图。用一组开关信号接入端口 A,端口 B 输出线接至一组数据灯上,然后通过对 8255 芯片编程来实现输入输出功能。具体步骤如下述:(1)实验接线图如图 1-4所示,按图连接实验线路图。 (2)编写实验程序,经编译、连接无误后装入系统。 (3)运行程序,改变拨动开关,同时观察 LED 显示,验证程序功能。 (4)点击“调试”下拉菜单中的“固化程序”项,将程序固化到系统存储器中。 (5)将短路跳线 JDBG 的短路块短接到 RUN 端,然后按复位按键,观察程序是否正常运行;关闭实验箱电源,稍等后再次打开电源,看固化的程序是否运行,验证程序功能。(6)实验完毕后,请将短路跳线 JDBG 的短路块短接到 DBG 端。 图1-4 8255基本输入输出实验接线图

相关主题
文本预览
相关文档 最新文档