北科大微机原理实验报告.docx

上传人:b****6 文档编号:13485497 上传时间:2023-06-14 格式:DOCX 页数:24 大小:781.09KB
下载 相关 举报
北科大微机原理实验报告.docx_第1页
第1页 / 共24页
北科大微机原理实验报告.docx_第2页
第2页 / 共24页
北科大微机原理实验报告.docx_第3页
第3页 / 共24页
北科大微机原理实验报告.docx_第4页
第4页 / 共24页
北科大微机原理实验报告.docx_第5页
第5页 / 共24页
北科大微机原理实验报告.docx_第6页
第6页 / 共24页
北科大微机原理实验报告.docx_第7页
第7页 / 共24页
北科大微机原理实验报告.docx_第8页
第8页 / 共24页
北科大微机原理实验报告.docx_第9页
第9页 / 共24页
北科大微机原理实验报告.docx_第10页
第10页 / 共24页
北科大微机原理实验报告.docx_第11页
第11页 / 共24页
北科大微机原理实验报告.docx_第12页
第12页 / 共24页
北科大微机原理实验报告.docx_第13页
第13页 / 共24页
北科大微机原理实验报告.docx_第14页
第14页 / 共24页
北科大微机原理实验报告.docx_第15页
第15页 / 共24页
北科大微机原理实验报告.docx_第16页
第16页 / 共24页
北科大微机原理实验报告.docx_第17页
第17页 / 共24页
北科大微机原理实验报告.docx_第18页
第18页 / 共24页
北科大微机原理实验报告.docx_第19页
第19页 / 共24页
北科大微机原理实验报告.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北科大微机原理实验报告.docx

《北科大微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《北科大微机原理实验报告.docx(24页珍藏版)》请在冰点文库上搜索。

北科大微机原理实验报告.docx

北科大微机原理实验报告

北科大微机原理实验报告

实验一:

8259中断控制器应用实验

实验名称

PC机内中断应用实验

成绩

班级

通信

姓名

学号

实验目的:

1.学习可编程中断控制器8259的工作原理;

2.掌握可编程中断控制器8259的应用控制方法;

实验内容:

PC机中断实验。

使用单次脉冲模拟中断产生。

验证中断处理程序,在显示屏幕上显示一行预设定的字符串。

实验步骤:

实验结果及分析:

DATASEGMENT

OUT21H,AL;输出到中断屏蔽寄存器

MOVCX,10;记中断循环次数为10次

STI;允许中断发生

WAIT:

JMPWAIT

INT3:

MOVAX,DATA;中断服务程序

MOVDS,AX

MOVDX,OFFSETMESS

MOVAH,09H;在屏幕上显示每次中断的提示信息

INT21H

MOVAL,20H;发出EOI结束中断到PC内主片的地址20H

OUT20H,AL

LOOPNEXT;当CX为0,跳转到NEXT

INAL,21H;读中断屏蔽寄存器,获取中断屏蔽字

ORAL,04H;关闭IRQ3中断,00000100

OUT21H,AL;将中断屏蔽字送到中断屏蔽寄存器

STI;置中断标志位

MOVAH,4CH;返回DOS

INT21H

NEXT:

IRET;中断返回

CODEENDS

ENDSTART

收获体会:

使用间接法设置中断向量:

1.将中断处理程序的段首地址送入DS寄存器,偏移量送入DX寄存器。

2.将需要修改的中断向量类型号送入AL.

3.25号功能送AH。

4.执行INT21H指令。

 

实验名称

PC机内中断嵌套实验

成绩

班级

姓名

学号

实验目的:

1.学习可编程中断控制器8259的工作原理;

2.掌握可编程中断控制器8259的应用控制方法;

实验内容:

PC机内中断嵌套实验。

使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。

实验步骤:

实验结果及分析:

CODESEGMENT

ASSUMECS:

CODE

START:

.386;伪指令

CLI

MOVAX,CS

MOVDS,AX

MOVDX,OFFSETINT10;设置IRQ10对应的中断向量

MOVAX,SEGINT10;以AX为过渡,取得段首地址

MOVDS,AX

MOVAL,72H;IRQ10的中断向量地址为72H

MOVAH,25H

INT21H

MOVDX,OFFSETINT3;设置IRQ3对应的中断向量

MOVAX,SEGINT3;以AX为过渡,取得段首地址

MOVDS,AX

MOVAL,0BH;IRQ3的中断向量地址为0BH

MOVAH,25H

INT21H

INAL,21H;读入中断控制寄存器

ANDAL,0F7H;开放IRQ3中和IRQ2中断请求,11110111

OUT21H,AL;输出到中断控制寄存器

INAL,0A1H

ANDAL,0FBH;开放IRQ10中断请求11111011

OUT0A1H,AL

MOVCX,10;设置计数器

STI

WAIT:

JMPWAIT;跳转,等待中断请求信号

INT10:

CLI;将处理器标志寄存器的中断标志位清0,当前不允许中断

PUSHAD;将所有的32位通用寄存器压入堆栈

PUSHFD;然后将32位标志寄存器EFLAGS压入堆栈

MOVCX,10

NEXT10_1:

;在*号之间填写代码,在屏幕上显示"10"和"空格"的字符

;****************************************

MOVDL,'1';在屏幕显示字符1

MOVAH,2

INT21H

MOVDL,'0';在屏幕显示字符0

MOVAH,2

INT21H

MOVDL,20H;在屏幕显示空格字符

MOVAH,2

INT21H

;******************************************

CALLDELAY1;调用延时子程序

LOOPNEXT10_1

MOVDX,0DH;调用DOS的中断功能,回车

MOVAH,02H

INT21H

MOVDX,0AH;调用DOS的中断功能,换行

MOVAH,02H

INT21H

MOVAL,20H

OUT0A0H,AL

OUT20H,AL

POPFD

POPAD

STI

IRET

INT3:

CLI

PUSHAD

PUSHFD

MOVCX,10

NEXT3_1:

;在*号之间填写代码,在屏幕显示"3"和"空格"的字符

;****************************************

MOVDL,'3';在屏幕显示字符3

MOVAH,2

INT21H

MOVDL,20H;在屏幕显示空格字符

MOVAH,2

INT21H

;******************************************

CALLDELAY1;调用延时子程序

LOOPNEXT3_1

MOVDX,0DH;调用DOS的中断功能,回车

MOVAH,02H

INT21H

MOVDX,0AH;调用DOS的中断功能,换行

MOVAH,02H

INT21H

MOVAL,20H

OUT20H,AL

OUT0A0H,AL

POPFD

POPAD

STI

IRET

DELAY1PROC;延时子程序

PUSHAD;将所有的32位通用寄存器压入堆栈

PUSHFD;然后将32位标志寄存器EFLAGS压入堆栈

MOVCX,0FH;向CX送数据0FH

DELAY_LOOP1:

MOVBX,0FFFFH

DELAY_LOOP2:

DECBX

NOP

JNZDELAY_LOOP2

LOOPDELAY_LOOP1

POPFD

POPAD

RET

DELAY1ENDP

CODEENDS

ENDSTART

收获体会:

(1)按下连接IRQ的单次脉冲按键,在屏幕上10次显示未结束之前,按下连接IRQ10的单次脉冲按键,观察现象;

答:

按下IRQ时屏幕上会显示10个3,此时按下IRQ10,会直接在屏幕上显示10个10,然后结束后再显示剩余的3

(2)按下连接IRQ10的单次脉冲按键,在屏幕上10次显示未结束之前,按下连接IRQ3的单次脉冲按键,观察现象。

答:

在屏幕上显示10个10的过程中按下IRQ无反应,等到10个10全部显示完毕后才再显示10个3

原因:

IRQ10的中断优先级比IRQ的高。

实验名称

扩展多中断应用实验

成绩

班级

姓名

学号

实验目的:

1.学习可编程中断控制器8259的工作原理;

2.掌握可编程中断控制器8259的应用控制方法;

实验内容:

扩展多中断源查询方式应用实验。

利用实验平台上的8259控制器作为中断扩展源,编写程序对8259控制器的中断请求进行处理。

实验步骤:

实验结果及分析:

;*****************************************************************

;8259中断查询方式应用实验

;*****************************************************************

I8259_1EQU2B0H;8259的ICW1端口地址

I8259_2EQU2B1H;8259的ICW2端口地址

I8259_3EQU2B1H;8259的ICW3端口地址

I8259_4EQU2B1H;8259的ICW4端口地址

O8259_1EQU2B1H;8259的OCW1端口地址

O8259_2EQU2B0H;8259的OCW2端口地址

O8259_3EQU2B0H;8259的OCW3端口地址

DATASEGMENT

MES1DB'YOUCANPLAYAKEYONTHEKEYBOARD!

',0DH,0AH,24H

MES2DDMES1

MESS1DB'HELLO!

THISISINTERRUPT*0*!

',0DH,0AH,'$'

MESS2DB'HELLO!

THISISINTERRUPT*1*!

',0DH,0AH,'$'

MESS3DB'HELLO!

THISISINTERRUPT*2*!

',0DH,0AH,'$'

MESS4DB'HELLO!

THISISINTERRUPT*3*!

',0DH,0AH,'$'

MESS5DB'HELLO!

THISISINTERRUPT*4*!

',0DH,0AH,'$'

MESS6DB'HELLO!

THISISINTERRUPT*5*!

',0DH,0AH,'$'

MESS7DB'HELLO!

THISISINTERRUPT*6*!

',0DH,0AH,'$'

MESS8DB'HELLO!

THISISINTERRUPT*7*!

',0DH,0AH,'$'

DATAENDS

STACKSSEGMENT

DB100DUP(?

STACKSENDS

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACKS,ES:

DATA

.386;伪指令,告诉编译器在本程序中使用的指令集为80386指令集

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACKS

MOVSS,AX

MOVDX,I8259_1;初始化8259的ICW1

MOVAL,13H;边沿触发、单片8259、需要ICW400010011

OUTDX,AL

MOVDX,I8259_2;初始化8259的ICW2

MOVAL,0B0H

OUTDX,AL

MOVAL,03H

OUTDX,AL

MOVDX,O8259_1;初始化8259的OCW1

MOVAL,00H;打开屏蔽位

OUTDX,AL

QUERY:

MOVAH,1;判断是否有按键按下

INT16H

JNZQUIT;有按键则退出

MOVDX,O8259_3;向8259的OCW3发送查询命令

MOVAL,0CH;00001100D2=1,设置为中断查询方式工作

OUTDX,AL

INAL,DX;读出查询字

MOVAH,AL

ANDAL,80H;判断中断是否已响应

TESTAL,80H

JZQUERY;没有响应则继续查询

MOVAL,AH

ANDAL,07H;取出查询字的末三位00000111

;通过下面的比较判断程序,判断中断请求来自哪个优先级

CMPAL,00H;将查询字末三位与00H比较,相等,为IR0请求

JEIR0ISR;若为IR0请求,跳到IR0处理程序

CMPAL,01H

JEIR1ISR;若为IR1请求,跳到IR1处理程序

CMPAL,02H

JEIR2ISR;若为IR2请求,跳到IR2处理程序

CMPAL,03H

JEIR3ISR;若为IR3请求,跳到IR3处理程序

CMPAL,04H

JEIR4ISR;若为IR4请求,跳到IR4处理程序

CMPAL,05H

JEIR5ISR;若为IR5请求,跳到IR5处理程序

CMPAL,06H

JEIR6ISR;若为IR6请求,跳到IR6处理程序

CMPAL,07H

JEIR7ISR;若为IR7请求,跳到IR7处理程序

JMPQUERY

IR0ISR:

MOVAX,DATA;将数据段首地址放入AX寄存器

MOVDS,AX

MOVDX,OFFSETMESS1;显示提示信息

MOVAH,09

INT21H

JMPEOI

IR1ISR:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS2;显示提示信息

MOVAH,09

INT21H

JMPEOI

IR2ISR:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS3;显示提示信息

MOVAH,09

INT21H

JMPEOI

IR3ISR:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS4;显示提示信息

MOVAH,09

INT21H

JMPEOI

IR4ISR:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS5;显示提示信息

MOVAH,09

INT21H

JMPEOI

IR5ISR:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS6;显示提示信息

MOVAH,09

INT21H

JMPEOI

IR6ISR:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS7;显示提示信息

MOVAH,09

INT21H

JMPEOI

IR7ISR:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMESS8;显示提示信息

MOVAH,09

INT21H

EOI:

MOVDX,O8259_2;向8259的OCW2发送中断结束命令

MOVAL,20H;00100000D5=1,中断结束

OUTDX,AL

JMPQUERY

QUIT:

MOVAX,4C00H;结束程序退出

INT21H

CODEENDS

ENDSTART

收获体会:

所填数据的形成原理:

1.MOVAL,13H;边沿触发,单片8259,需要ICW4

解释:

在初始化ICW1中,D7~D5都是0.D4=1,是ICW1.D3=0,上升沿触发。

D2=0,8086中固定设为0.D1=1,单片工作方式。

D0=1,需要ICW4。

所以ICW1=00010011B=13H

2.MOVAL,00H;打开屏蔽位。

解释:

中断屏蔽寄存器中,某一位为0时允许中断,为1时屏蔽中断。

3.MOVDX,O8259_3;向8259的OCW3发送查询命令。

MOVAL,L,0CH;00001100D2=1,设置为中断查询方式工作.

4.ANDAL,80H;判断中断是否已响应

解释:

取得AL的最高位,判断是1或0.

5.MOVDX,O8259_2;向8259的OCW2发送中断结束命令

MOVAL,20H;00100000D5=1,中断结束

解释:

OCW2的D5=1时,中断结束。

思考题:

1.单中断和多中断有何不同?

单中断就是从中断开始到中断结束只能完成一次中断,多中断应该是多重中断,这种中断方式可以允许在一次中断未完成时响应更高级别的中断申请,也叫中断嵌套。

2.如何改变中断优先级的顺序?

可以根据程序中中断的书写顺序和逻辑结构来进行判断。

3.可编中断控制寄存器8259A在协助CPU处理中断事务中起到那些作用?

[1]优先级排队管理

根据任务的轻重缓急或设备的特殊要求,分配中断源的中断等级。

8259A具有完全嵌套。

循环优先级、特定屏蔽等多种方式的优先级排队管理。

[2]可屏蔽中断INTR

当CPU的INTR引脚上有一个来自外部的“高”有效信号输人时,则产生硬件可屏蔽中断请求INTR,这种请求可以被CPU用指令CLI来禁止,也可由指令STI来允许。

只有在INTR被允许时,CPU才发中断响应信号INTA,这时,中断源一定要向CPU提供中断类型号,以便找到中断服务程序入口。

中断向量表中中断号为08~0FH和070H~077H的中断,属于这种中断(见表5.2)。

很明显,这种中断是由外部设备产生的。

[3]提供中断类型号

8259A最突出的特点是具有对中断服务程序入口地址的寻址能力,也就是当CPU响应中断申请后,通过8259A提供的中断类型号可以找到中断服务程序的人口地址,转移到中断服务程序去执行。

[4]进行中断请求的屏蔽和开放

8259A能够对提出中断请求的外部设备进行屏蔽或开放。

可见,采用8259A可使系统的硬中断管理无需附加其他电路,只需对8259A进行编程,就可管理8级、15级或更多的硬中断,并且还可实现向量中断和查询中断

4.可屏蔽中断与8259A是什么关系?

一片Intel8259可管理8个中断请求,并把当前优先级最高的中断请求送到CPU的INTR端;并在CPU响应中断时,为CPU提供中断类型码;8个外部中断的优先级排列方式,可以通过对8259编程进行指定。

也可以通过编程屏蔽某些中断请求,或者通过编程改变中断类型码。

允许9片8259级联,构成64级中断系统。

中断可分为可屏蔽中断与不可屏蔽中断。

其中可屏蔽中断是外设使用最多的中断方式。

 

实验二:

8255并口控制应用实验

实验名称

可编程并行接口8255方式0应用实验

成绩

班级

姓名

学号

实验目的:

1.掌握8255的工作方式及应用编程;

2.掌握8255典型应用电路的接法。

实验内容:

1.基本输入输出实验。

编写程序,使8255的B口为输入,A口为输出,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就改变。

实验步骤:

实验结果及分析:

IO8255_MODEEQU28BH

IO8255_AEQU288H

IO8255_BEQU289H

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,IO8255_MODE;设8255为B口输入,A口输出

MOVAL,82H;设置控制字为10000010B

OUTDX,AL

INOUT:

MOVDX,IO8255_B;从B口读入数据

INAL,DX

MOVDX,IO8255_A;从A口输出数据

OUTDX,AL

MOVDL,0FFH;判断是否有按键

MOVAH,06H

INT21H

JZINOUT;若无,则继续自B口输入,A口输出

MOVAH,4CH;否则返回

INT21H

CODEENDS

ENDSTART

收获体会:

8255芯片需要设置好控制字,然后进行读写控制操作。

实验名称

流水灯实验

成绩

班级

姓名

学号

实验目的:

1.掌握8255的工作方式及应用编程;

2.掌握8255典型应用电路的接法。

实验内容:

流水灯显示实验。

编写程序,使8255的A口为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示。

实验步骤:

实验结果及分析:

IO8255_AEQU288H;8255的A口地址

IO8255_MODEEQU28BH;8255的控制寄存器地址

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

LADB?

;定义数据变量

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,IO8255_MODE;定义8255工作方式

MOVAL,80H;工作方式0,A口为输出,所以控制字为:

10000000B

OUTDX,AL

MOVDX,IO8255_A;写A口发出的起始数据

MOVAL,80H;设置第一盏灯亮

OUTDX,AL

MOVLA,AL

LOOP1:

CALLDALLY

MOVAL,LA;将A口起始数据右移再写入A口

RCRAL,1;循环右移指令

MOVLA,AL

MOVDX,IO8255_A

OUTDX,AL

MOVAH,1;判断是否有按键按下

INT16H

JZLOOP1;无按键则跳回继续循环,有则退出

QUIT:

MOVAX,4C00H;结束程序退出

INT21H

DALLYPROCNEAR;软件延时子程序

PUSHCX

PUSHAX

MOVCX,0FFFH

D1:

MOVAX,0FFFH

D2:

DECAX

JNZD2

LOOPD1

POPAX

POPCX

RET

DALLYENDP

CODEENDS

ENDSTART

收获体会:

思考题:

1.并口通信需要注意哪些问题?

并行通信的一个二进制数据位采用一根数据线传输。

但是PA端口是双向的传输,PB和PC端口是单向的传出。

并行方式的接线非常的多。

2.比较并口通信与串口通信的异同。

串口按位(bit)发送和接收字节。

尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

它很简单并且能够实现远距离通信。

比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

典型地,串口用于ASCII码字符的传输。

通信使用3根线完成,分别是地线、发送、接收。

由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手,但不是必须的。

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。

对于两个进行通信的端口,这些参数必须匹配。

并行接口,指采用并行传输方式来传输数据的接口标准。

从最简单的一个并行数据寄存器或专用接

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2