2025年北京科技大学微机原理实验指导与解析_第1页
2025年北京科技大学微机原理实验指导与解析_第2页
2025年北京科技大学微机原理实验指导与解析_第3页
2025年北京科技大学微机原理实验指导与解析_第4页
2025年北京科技大学微机原理实验指导与解析_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

试验一:8259中断控制器应用试验

试验名称PC机内中断应用试验成绩

试验目的:

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

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

试验内容:

PC机中断试验。使用单次脉冲模拟中断产生。验证中断处理程序,在显示屏幕上显示一行预设定的

字符串。

试验环节:

试验成果及分析:

DATASEGMENT

MESSDB'TPCAinteiTupt!\ODH,()AH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX.CS

MOVDS,AX

MOVDX.OFFSETINT3;采用间接修改法.调用DOS功能,设置中断向

量,获得偏移地址

MOVAX.SEGINT3;通过AX的过渡,得到段首地址。

MOVDS,AX

MOVAL,()BH淞置1RQ3对应的中断向量OBH

MOVAH.25H

INT21H

INAL.21H;读中断屏蔽寄存器,21H是该寄存器的端口号

ANDAL.0F7H;开放IRQ3中断,容许IRQ3的中断申请,11110111

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

MOVCXJ0;记中断循环次数为10次

STI;容许中断发生

WAIT:JMPWAIT

INT3:MOVAX,DATA;中断服务程序

MOVDS.AX

MOVDX.OFFSETMESS

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

INT21H

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

OUT20H,AL

LOOPNEXT;当CX为0,跳转至11NEXT

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

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

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

STI;置中断标志位

MOVAH,4CH;返回DOS

INT21H

NEXT:IRET;中断返回

CODEENDS

ENDSTART

收获体会:

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

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

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

3.25号功能送AHo

4.执行INT21H指令。

试验名称PC机内中断嵌套试验成绩

班级姓名学号

试验目的:

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

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

试验内容:

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

套的过程。

试验环节:

主程序中新3程序入口中断10程序入口

|开始|I开始I

显小响扁的提小忌口.|

试验成果及分析:

CODESEGMENT

ASSUMECSrCODE

START:

.386;伪指令

CLI

MOVAX,CS

MOVDS,AX

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

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

MOVDS,AX

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

MOVAH,25H

INT21H

MOVDXQFFSETINT3;设置IRQ3对应的中断向量

MOVAX,SEGINT3似AX为过渡,获得段首地址

MOVDS,AX

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

MOVAH.25H

INT21H

INAL,2IH;读入中断控制寄存器

ANDAU0F7H;开放1RQ3中和1RQ2中断祈求,11110111

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

INAL,OA1H

ANDAUOFBH;开放IRQIO中断祈求11111011

OUT0A:H.AL

MOVCX,10;设置计数器

STI

WAIT:JMPWAIT;跳转,等待中断祈求信号

INTIO:CLI;将处理器标志寄存器的中断标志位清O,目前不容许中断

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

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

MOVCX.10

NEXT1()_1:

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

,*#********木木木本*木京**木木木;♦:*********%*****木木

MOVDLJ';在屏幕显示字符1

MOVAH.2

INT2IH

MOVDL:O';在屏幕显示字符0

MOVAH,2

INT21H

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

MOVAH,2

INT21H

,*********京********************************

CALLDELAY1,调用延时了程序

LOOPNEXT1()_I

MOVDX.ODH;调用DOS的中断功能,回车

MOVAH,02H

INT21H

MOVDXA)AH;调用DOS的中断功能,换行

MOVAH,02H

INT21H

MOVAL,20H

OU1OAOH.AL

OUT20H,AL

POPFD

POPAD

STI

IRET

INT3:CLI

PUSHAD

PUSHFD

MOVCXJO

NEXT3.1:

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

,*****中***今******±****力******车***幸***本***

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

MOVAH.2

INT21H

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

MOVAH,2

INT21H

・*****赤***************%**********京***才*****

CALLDELAY1;调用延时子程序

LOOPNEXT3_1

MOVDX.ODH;调用DOS的中断功能,回车

MOVAH.02H

INT21H

MOVDX.OAH;调用DOS的中断功能,换行

MOVAH,02H

INT21H

MOVAL,20H

OUT20H.AL

OUTOAOH,AL

POPFD

POPAD

STI

IRET

DELAY1PROC;延时子程序

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

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

MOVCX.OFHJHCX送数据0FH

DELAY_LOOP1:

MOVBX,0FFFFH

DELAY_LOOP2:

DECBX

NOB

JNZDELAY_LOOP2

LOOPDELAY.LOOPI

POPFD

POPAD

RET

DELAY!ENDP

CODEENDS

ENDSTART

净BochsforWindows-Display

ataOslave:Generic1234ATA-2Hard-Disk(29MBytes)

BootingfromHardDisk...

StartingMS-DOS...

C:\>setpath=c:\dos;d:\tasm\bin

C:\>d:

D:\>cdd:\exec

D:\EXEC>dcltree/Y.

Deleting.\8Z59-Z.exe...

D:\EXEO..Sailcom

loadingfile..8259-2.EXE

load&exec01010

10101010103319IO

333333301O1O

1010101010331O1010

33333331010IO1010IO101010

1333333333

F12enablesmouse

收获体会:

(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控制器的中断祈求进行处理。

试验环^7

试验成果及分析:

»,本**木************木左*^X*木****本***本木******木冬木*木去木察**X本***本**本木木**本木木

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

,***本*******/**米本******专***赤%**木***余***本**去***********木**X声***衣**本

I8259_lEQU2B0H;8259的ICWI端口地址

I8259_2EQU2B1H;8259的ICW2端口地址

I8259_3EQU2B1U;8259的ICW3端口地址

I8259_4EQU2B1H;8259的ICW4端口地址

()8259」EQU2B1H;8259的OCW1端口地址

O8259_2EQU2B3H;8259的0CW2端口地址

08259.3EQU2BDH;8259的OCW3端口地址

DATASEGMENT

MES1DB'YOUCANPLAYAKEYONTHEKEYBOARDJ'.ODH,OAH,24H

MES2DDMESI

MESSIDB'HELLO!THISISINTERRUPT*0*!*.ODH.OAH:$,

MESS2DBHELLO!THISISINTERRUPT*1*!*,ODH,OAH:$,

MESS3DBHELLO!THISISINTERRUPT*2*!*,ODH,OAH:$'

MESS4DBHELLO!THISISINTERRUPT*3*!,,0DH,0AH;$,

MESS5DB'HELLO!THISISINTERRUPT*4*!,.0DH,0AH:$'

MESS6DBHELLO!THISISINTERRUPT*5*!*,0DH,0AH:$'

MESS7DB'HELLO!THISISINTERRUPT*6*!*,0DH,0AH:$'

MESS8DBHELLO!THISISINTERRUPT*7*!*,()DH,OAH,,S'

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,18259」;初始化8259的ICW1

MOVALJ3H;边缘触发、单片8259、需要ICW400010011

OUTDX,AL

MOVDX,I8259_2;初始化8259的ICW2

MOVAL.UBUH

OUTDX,AL

MOVAL.03H

OUTDX,AL

MOVDX,O8259_I:初始化8259的OCWI

MOVAL.00H;打开屏蔽位

OUTDX,AL

QUERY:MOVAHJ;判断与否有按键按下

INT16H

JNZQUIT;有按键则退出

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

MOVAL.OCH;00001100D2=l,设置为中断查询方式工作

OUTDX,AL

INAL.DX;读出查询字

MOVAH.AL

ANDAL80H;判断中断与否已响应

TESTAL.80H

JZQUERY;没有响应则维续查询

MOVAL,AH

ANDAL07H;取出查询字的末三位00000111

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

CMPAL.OOH;将查询字末三位与OOH比较,相等,为IR0祈求

JEIROISR;若为】R0祈求,跳到IR0处理程序

CMPAL.01H

JE1R1ISR;若为IR1祈求,跳到IRI处理程序

CMPAL.02H

JE1R2ISR;若为IR2祈求,跳到IR2处理程序

CMPAL.03II

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

CMPAL.04H

JEIR4ISR港为IR4祈求,跳到IR4处理程序

CMPAL.05H

JEIR5ISR;若为IR5祈求,跳到【R5处理程序

CMPAL.06H

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

CMPAL.07H

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

JMPQUERY

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

MOVDS.AX

MOVDX.OFFSETMESS1;显示提醒信息

MOVAH,09

INT21H

JMPEOI

1R11SR:MOVAX,DA1A

MOVDS,AX

MOVDX.OFFSETMESS2;显示提醒信息

MOVAH.09

INT2IH

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

MOVDXQFFSETMESS5;显示提醒信息

MOVAH.09

INT21H

JMPEOI

1R5ISR:MOVAX,DA「A

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:MOVDXQ8259一2:向8259的OCW2发送中断结束命令

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

OUTDX,AL

JMPQUERY

QUIT:MOVAX,4C(X)H;结束程序退出

INT21H

CODEENDS

ENDSTART

收获体会:

所填数据的形成原理:

I.MOVAL,13H;边缘触发,单片8259,需要ICW4

解释:在初始化ICW1中,D7~D5都是0.D4=I,是ICWLD3=0,上升沿触发。

D2=0,8086中固定设为0.Dl=l,单片工作方式。D0=1,需要ICW4。

因此ICW1=00010011B=13H

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

解释:中断屏蔽寄存器中,某一位为0时容许中断,为I时屏蔽中断。

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

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

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

解释:获得AL的最高位,判断是1或0.

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

MOVAU20H;00100000D5=l,中断结束

解释:0CW2的D5=l时,中断结束。

思索题:

1.单中断和多中断有何不一样?

单中断就是从中断开始到中断结束只能完毕一次中断,多中断应当是多重中断,这种中断

方式可以容许在一次中断未完毕时响应更高级别的中断申请,也叫中断嵌套。

2.怎样变化中断优先级的次序?

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

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

[1]优先级排队管理

根据任务的轻重缓急或设备的特殊规定,分派中断源的中断等级。8259A具有完全嵌套。循环

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

⑵可屏蔽中断INTR

当CPU的INTR引脚上有一种来自外部的“高”有效信号输人时,则产生硬件可屏蔽中断祈

求INTR,这种祈求可以被CPU用指令CLI来严禁,也可由指令STI来容许。只有在INTR被

容许时,CPU才发中断响应信号1NTA,这时,中断源一定要向CPU提供中断类型号,以便

找到中断服务程序入口。中断向量表中中断号为08~0FH和()70H~077H的中断,属于这种中

断(见表5.2)。很明显,这种中断是由外部设备产生的,

⑶提供中断类型号

8259A最突出的特点是具有对中断服务程序入口地址的寻址能力,也就是当CPU响应中断申

请后,通过8259A提供的中断类型号可以找到中断服务程序的人口地址,转移到中断服务程

序去执行。

⑷进行中断祈求的屏蔽和开放

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口为输出,完毕拨动开关到数据

灯的数据传播。规定只要开关拨动,数据灯的显示就变化。

试验环节:

开始

设笈8255B」

输入All输出

1-

从BU输入数据

将此数据自AU输出

(一秦)

试验成果及分析:

IO8255_MODEEQU28DII

IO8255_AEQU288H

IO8255_BEQU289H

CODESEGMENT

ASSUMECS:CODE

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

MOVAL,82H;设置控制字为1()()(XX)1OB

OUTDX,AL

INOUT:MOVDX,IO8255.B;从B口读入数据

INAL,DX

MOVDX,IO8255_A;从A口输出数据

OUTDX,AL

MOVDLQFFH;判断与否有按键

MOVAH,06H

INT21H

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

MOVAH,4cH;否则返回

INT2IH

CODEENDS

ENDSTART

收获体会:

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

试验名称流水灯试验成绩

班级姓名学号

试验目的:

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

2.掌握8255经典应用出路的接法。

试验内容:

流水灯显示试验。编写程序,使8255的ALI为输出,数据灯D7~D0由左向右,每次仅亮一种灯,循环显

o

试验环节:

试验成果及分析:

IO8255.AEQU288H;8255的A口地址

IO8255_MODEEQU28BH;8255的控制寄存器地址

STACK1SEGMENTSTACK

DVV256DUP(?)

STACK1ENDS

DATASEGME?4T

LADB?;定义数据变量

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DA1A

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

DI:MOVAX,0FFFH

D2:DECAX

JNZD2

LOOPD1

POPAX

POPCX

KEF

DALLYENDP

CODEENDS

ENDSTART

・4

♦Y

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论