微机原理实验---中断控制实验

合集下载

计算机接口与微机原理-第12周-中断控制器8259A-c

计算机接口与微机原理-第12周-中断控制器8259A-c

计算机接⼝与微机原理-第12周-中断控制器8259A-c可编程中断控制器8259Ap IBM PC/XT的中断指令p DOS系统功能调⽤p BIOS中断类型p8259A的中断级联p IBM PC/AT的中断级联p8259A的应⽤举例p8259A的编程⽅法中⼭⼤学信息科学与技术学院陈任IBM PC/XT中的中断指令(1) 8086/8088系统中与中断有关的专⽤指令。

1.INT n 软件中断指令(Interrupt)-软件中断指令,也称为软中断指令,其中n为中断类型号,其值必须在0~255的范围内。

-可在编程时安排在程序中的任何位置上,因此也被称为陷阱中断。

-CPU执⾏INT n指令时,先把标志寄存器的内容推⼊堆栈,再把当前断点的段基地址CS和偏移地址IP⼊栈保护,并清除中断标志IF和单步标志TF。

-然后将中断类型号n乘以4,找到中断服务程序的⼊⼝地址表的表头地址,从中断⽮量表中获得中断服务程序的⼊⼝地址,将其置⼊CS和IP寄存器,CPU就⾃动转到相应的中断服务程序去执⾏。

-原则上讲,利⽤INT n指令能以软件的⽅法调⽤所有256个中断的服务程序,尽管其中有些中断实际上是由硬件触发的。

因此可以利⽤这条指令来调试各种中断服务程序。

-例如,可⽤INT 0指令让CPU执⾏除法出错中断服务程序,可⽤INT 2指令执⾏NMI中断服务程序,⽽不必在NMI引脚上加外部信号。

IBM PC/XT中的中断指令(2)1. INT n 软件中断指令(Interrupt)2. INTO 溢出中断指令(Interrupt On Overflow)-当带符号数进⾏算术运算时,如果溢出标志OF置1,则可由溢出中断指令INTO产⽣类型为4的中断,若OF清零,则INTO指令不产⽣中断,CPU继续执⾏后续程序。

-在带符号数进⾏加减法运算之后,必须安排⼀条INTO指令,⼀旦溢出就能及时向CPU提出中断请求,CPU响应后可作出相应的处理,如显⽰出错信息,使运算结果⽆效等。

微机原理8259A实验报告

微机原理8259A实验报告

实验二8259A中断控制器应用实验分析报告一、填写补充实验1-2中以下两段代码,并简述其意义:第1段:IN AL,21H_ AND AL, 0F7H _____________OUT 21H,ALIN AL,0A1H__AND AL, 0FBH______________OUT 0A1H,AL第2段:MOV AL,20HOUT 0A0H,ALOUT 20H,AL二、简述实验1-2的实验现象,分析解释其原因;结合本实验,简述中断嵌套和中断优先级的意义以及正确形成中断嵌套的基本要求。

答:实验1现象:按下一次单脉冲,显示一次字符,十次中断后停机,不再显示字符串实验2现象:分别按下两个单脉冲显示一串3和一串10,在3未显示完全时按下显示10的脉冲键,可发生中断,相反则不能发生中断,需等待一串10显示完后再显示一行3。

原因:IRQ10的中断级别高于IRQ3,所以可以在3还没有执行完时中断IRQ3,中断原程序执行IRQ10 。

中断嵌套的意义:为了让CPU及时响应更高级别的中断请求。

中断优先级的意义: CPU只能响应一个中断请求,在中断源较多的情况下,当有多个中断源同时发起中断请求时,CPU需要对多个中断源的优先级进行判断,判断出优先级最高的中断请求进行响应。

中断嵌套要求是:被中断程序的优先级低于请求程序中断的优先级。

三、抄写实验1-2中要求填写的“显示‘10’和‘空格’”的代码段NEXT10_1:MOV AX,SEG MESS10MOV DS,AXMOV DX,OFFSET MESS10MOV AH,09INT 21H ;使用INT21 – 09H实现字符串的输出‘10’CALL DELAY1 ;调用延时子程序LOOP NEXT10_1MOV DX,0DH ;调用DOS的中断功能,回车MOV AH,02HINT 21HMOV DX,0AH ;调用DOS的中断功能,换行MOV AH,02HINT 21H四、用文字简述或流程图方式,说明实验1-3中“以查询方式检测处理多中断请求”的过程。

微机原理上机实验(八+十二)实验报告 8086中断实验 步进电机实验

微机原理上机实验(八+十二)实验报告 8086中断实验 步进电机实验

微机原理上机实验报告实验八:8086中断实验实验十二:步进电机实验微机原理上机实验(八)实验报告实验八:8086中断实验一、实验目的1、了解8086内部响应中断的机制;掌握中断向量的作用。

2、利用实验仪上单脉冲、74HC244电路,不使用8259,实现一个中断实例。

3、复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验内容1、编制程序:拨动单脉冲开关,“”送给8086的INTR,触发中断;8086通过INTA信号,读取中断向量;8086计数中断次数,显示于F5区的数码管上注意:给INTR高电平信号,8086就会相应中断,所以实验开始前,保证单脉冲开关给8086低电平;中断程序中,加一个较长的延时程序,在中断结束前,有时间拨动单脉冲开关,恢复给8086低电平。

三、实验原理图本实验,通过F4区的8个拨动开关,给74HC244设定中断向量;本实验的中断向量是08H,即IN7-IN0位数据是00001000。

同学可以自定义中断向量,实验程序中处理中断向量部分程序作相应调整四、实验步骤1、连线说明:B4区:CS244、BLE ——C1区:GNDB4区:RD(IO区)——A3区:INTAA3区:INTR ——B2区:单脉冲B4区:JP57(D0..D7) ——A3区:JP41B4区:JP52(IN0..7) ——F4区:JP27(1..8)D3区:CS、A0、A1 ——A3区:CS1、A0、A1D3区:PC0、PC1 ——F5区:KL1、KL2D3区:JP20、B、C ——F5区:A、B、C2、运行程序3、实验开始前,保证单脉冲开关给8086低电平;运行程序;向下拨动开关(触发中断),立即向上拨动开关,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。

五、实验代码EXTRN InitKeyDisplay:NEAR, Display8:NEAR_STACK SEGMENT STACKDW 100 DUP(?)_STACK ENDS_DATA SEGMENT WORD PUBLIC 'DATA'BUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0_DATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:_DATA, SS:_STACKMOV AX,_DATAMOV DS,AXMOV ES,AXNOPCALL InitKeyDisplay ;对键盘、数码管控制器8255初始化CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: LEA SI,BufferCALL Display8CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1WriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HRETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1CALL LedDisplayDELAY: PUSH BXPUSH CXPUSH DIPUSH SIMOV CX,20DELAY1: LEA SI,BufferCALL Display8loop DELAY1POP SIPOP DIPOP CXPOP BXPOP AX六、实验思考题1.绘制本实验的详细实验电路图?微机原理上机实验(十二)实验报告实验十二:步进电机实验一、实验目的1、了解步进电机的基本原理,掌握步进电机的转动编程方法2、了解影响电机转速的因素有那些二、实验内容编写程序:使用F5区的键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;将相应的数据显示在F5区的数码管上。

微机原理实验-外部中断实验

微机原理实验-外部中断实验

下面是赠送的几篇网络励志文章需要的便宜可以好好阅读下,不需要的朋友可以下载后编辑删除!!谢谢!!出路出路,走出去才有路“出路出路,走出去才有路。

”这是我妈常说的一句话,每当我面临困难及有畏难情绪的时候,我妈就用这句话来鼓励我。

一定有很多人想说:“这还在北京混个什么劲儿啊!”但他每天都乐呵呵的,就算把快递送错了也乐呵呵的。

某天,他突然递给我一堆其他公司的快递单跟我说:“我开了家快递公司,你看得上我就用我家的吧。

”我有点惊愕,有一种“哎呦喂,张老板好,今天还能三蹦子顺我吗”的感慨。

之后我却很少见他来,我以为是他孩子出生了休假去了。

再然后,我就只能见到单子见不到他了。

某天,我问起他们公司的快递员,小伙子说老板去上海了,在上海开了家新公司。

我很杞人忧天地问他:“那上海的市场不激烈吗?新快递怎么驻足啊!”小伙子嘿嘿一笑说:“我们老板肯定有办法呗!他都过去好几个月了,据说干得很不错呢!”“那老婆孩子呢?孩子不是刚生还很小吗?”“过去了,一起去上海了!”那个瞬间,我回头看了一眼办公室里坐着的各种愁眉苦脸的同事,并且举起手机黑屏幕照了一下我自己的脸,一股“人生已经如此的艰难,有些事情就不要拆穿”的气息冉冉升起。

并不是说都跳槽出去开公司才厉害,在公司瞪着眼睛看屏幕就是没发展,我是想说,只有勇气才能让自己作出改变。

《拒绝平庸》里有一句话:很多时候我们为什么嫉妒别人的成功?正是因为知道做成一件事不容易又不愿意去做,然后又对自己的懒惰和无能产生愤怒,只能靠嫉妒和诋毁来平衡。

其实走出去不一定非要走到什么地方去,而是更强调改变自己不满意的现状。

有人问我那你常说要坚持,天天跑出去怎么坚持?其实要坚持的是一种信仰,而不是一个地方,如果你觉得一个地方让你活得特别难受,工作得特别憋屈,除了吐槽和压抑没别的想法,那就要考虑走出去。

就像歌词里说的:“梦想失败了,那就换一个梦想。

”不能说外面都是大好前程,但肯定你会认识新的人,有新的机会,甚至改头换面重新做人。

微机原理实验

微机原理实验

微机原理实验实验⼀ MASM For Windows 的使⽤及顺序程序设计⼀、实验⽬的1、熟悉在PC机上建⽴、汇编、连接、调试和运⾏8086汇编语⾔程序的过程。

2、熟悉masm for windows调试环境及DEBUG常⽤命令的使⽤⼆、实验内容1.DEBUG常⽤命令(U、R、D、E、F、T、G、Q)的操作使⽤2.编程实现两个16位⽆符号数的加、减、乘、除运算。

有两个两字节⽆符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显⽰。

相加若有进位不存⼊存储单元。

三、实验设备PC机⼀台四、实验准备1) 分析题⽬,将程序中的原始数据和最终结果的存取⽅法确定好。

2) 画出流程图。

3) 写出源程序。

4) 对程序中的结果进⾏分析,并准备好上机调试与⽤汇编程序及汇编调试的过程。

五、实验步骤1) 输⼊源程序。

2) 汇编、连接程序,⽣成 .EXE⽂件,执⾏⽂件,检查结果。

六、学⽣实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。

2) 说明程序中各部分所⽤的算法。

3) 说明主要符号和所⽤到寄存器的功能。

4) 上机调试过程中遇到的问题是如何解决的。

5) 对调试源程序的结果进⾏分析。

4) 说明标志位CF、SF和OF的意义。

DEBUG的常⽤命令1、R 显⽰或修改寄存器的内容命令格式:-R2、 D 显⽰存储单元的内容命令格式:-D[地址1, 地址2]3、E修改存储单元的内容命令格式:-E[地址1, 地址2]命令格式:-U[地址1, 地址2]5、T单步执⾏命令格式:-T6、G连续执⾏命令格式:-G[=起始地址, 结束地址]A⼩汇编命令格式:-A7、Q退出DEBUG,返回DOS实验⼀源程序 EXAM1-2 .ASMDATA SEGMENTA DB 34H,18H,2 DUP(0),’$’B DB 56H,83HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMOV AL,AMOV BL,BADD AL,BLMOV AH,A+1MOV BH, B+1ADC AH, BHMOV A, ALMOV A+1, AHMOV CX, 0004HMOV DI, OFFSET AMOV DX, [ DI]ADD DI,03NEXT: MOV AX, DXAND AX,000FHCMP AL,0AHJB QQQADD AL, 07HMOV [DI], ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP NEXTMOV DX, OFFSET AMOV AH, 09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START执⾏程序EXAM1-2·EXE,屏幕上显⽰结果:9B8A实验⼆分⽀、循环程序设计⼀、实验⽬的1) 掌握分⽀、循环程序的结构。

微机原理-实验四-中断实验

微机原理-实验四-中断实验

微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验四8259A中断控制器实验一、实验目的:1、利用试验箱掌握8259A中断控制器的使用方法。

2、掌握中断的相关知识。

二、实验内容:1、实验连线(微机原理试验箱)⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G 与总线单元上方的GS相连。

⑵将8259CS插孔与译码单元的Y0相连,中断源IR7与单脉冲单元的SP插孔相连。

⑶用8芯扁平电缆将8259中断控制单元的数据总线插座与数据总线单元任一插座相连。

2、 PC机连接好串口线电源线,打开电源,在电脑中打开intel8088微机实验系统选择串口一和 57600 波特率若出现仿真器没有连接的画面则串口线没有连接好如下图:3、LED环境⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。

Ph88/he08.asm代码在软件中自带的,打开软件中的he08.asm 点编译(c)点击编译、连接、装载⑵在“P.”状态下在小键盘键入3400,然后按“EXEC”进入实验项目的运行。

这是输入起始地址,对应代码中的 ORG 3400H4、观察运行结果在连续运行方式下,按动 AN 按钮,LED 数码管从最高位开始依次显示“7”显示满后,最高位显示“P.”继续等待中断。

5、终止运行按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。

三、程序流程图和程序代码1、流程图2、代码与注释;-------------------硬件实验八 8259单级中断控制器实验------------------- CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 3400HH8: JMP P8259ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,?Port0 EQU 0FFE0HPort1 EQU 0FFE1HP8259: CLICALL WP ;初始化显示“P.”MOV AX,OFFSET INT8259MOV BX,003CHMOV [BX],AXMOV BX,003EHMOV AX,0000HMOV [BX],AXCALL FOR8259mov si,0000hSTICON8: CALL DISJMP CON8;------------------------------------ INT8259:cliMOV BX,OFFSET BUFMOV BYTE PTR [BX+SI],07HINC SICMP SI,0007HJZ X59XX59: MOV AL,20HMOV DX,Port0OUT DX,ALmov cx,0050hxxx59: push cxcall dispop cxloop xxx59pop cxmov cx,3438hpush cxSTIIRETX59: MOV SI,0000HCALL WPJMP XX59;==============================FOR8259:MOV AL,13HMOV DX,Port0OUT DX,ALMOV AL,08HMOV DX,Port1OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,7FH ;IRQ7OUT DX,ALRET;---------------------------WP: MOV BUF,11H ;初始化显示“P.”MOV BUF+1,10HMOV BUF+2,10HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HRET;--------------------------------DIS: MOV CL,20HMOV BX,OFFSET BUFDIS1: MOV AL,[BX]PUSH BXMOV BX,OFFSET LEDXLATPOP BXMOV DX,ZXKOUT DX,ALMOV AL,CLMOV DX,ZWKOUT DX,ALPUSH CXMOV CX,0100HDELAY: LOOP $POP CXCMP CL,01HJZ EXITINC BXSHR CL,1JMP DIS1EXIT: MOV AL,00HMOV DX,ZWKOUT DX,ALRET;--------------------------CODE ENDSEND H8四、调试过程及遇到的问题在“P.”状态下键入 3400,然后按“EXEC”进入实验项目的运行。

微机原理 第七章中断控制器


CAS2
3
2 . 8259A的编程结构和工作原理
4
编程结构 (1)上半部分:处理部件 中断请求寄存器IRR 中断优先级裁决器PR 当前中断服务寄存器ISR (2)下半部分:7个寄存器 ICW1~ICW4 OCW1~OCW3
5
中断请求寄存器IRR
保存8条外界中断请求信号IR0-IR7的请求状态 Di位为1表示IRi引脚有中断请求;为0表示无请求
1. 中断优先权管理方式: 可见,8259A (1) 全嵌套方式 (2)特殊全嵌套方式 有多中工作方式, (3)自动循环方式 (4)特殊循环方式 使用起来很灵活, 2. 屏蔽中断源的方式 不易掌握,所以介 (1)普通屏蔽方式 (2)特殊屏蔽方式 绍编程之前,先对 3. 中断结束方式 其工作方式分类进 (1) 自动结束(AEOI)方式 行简要的介绍。 (2) 非自动结束(EOI)方式: ① 普通EOI方式;② 特殊EOI方式 4. 系统总线的连接方式(8259A级连方式) (1) 缓冲方式 (2)非缓冲方式 5. 中断请求的引入方式 (1) 边沿触发 (2)电平触发 (3)中断查询
• 优先级特殊循环方式:初始优先级队列是由编程确定的。 也可由操作命令字OCW2来设定。
10
2、屏蔽中断源的方式
• 普通屏蔽方式:8259A的每个中断请求输入端都可以通过 对应屏蔽位的设置被屏蔽,通过设置操作命令字OCW1使 屏蔽器中任一位或几位置1(对中断的屏蔽总是暂时的, eg:计算机网络通信)
5.
6.
16
五、中断响应过程(CPU与8259A的操作过程)
1、申请中断 外设 对应IR0 ~ IR7为“1”, 为“1” CPU的INTR输入“1”,申请中断。 2、响应中断的条件 CLI 使 IF = 0,禁止中断。 STI 使 IF = 1,允许中断。 判优后使INT

微机实验报告

实验1 基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

(2)掌握使用运算指令类编程及调试方法。

(3)掌握运算类指令对各状态标志位的影响及其测试方法。

(4)学习使用软件监视变量的方法。

二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容3.1 实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。

实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。

2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。

语言选择后,下次再启动软件,语言环境保持这次的修改不变。

在这里我们选择汇编语言。

3)语言选择后,点击新建来新建一个文档。

默认文件名为Wmd861.4)编写实验程序。

并保存,此时系统会提示输入新的文件名,输完后点击保存。

实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。

微机5.2(广工中断及8259应用实验)

实验报告课程名称微机原理及应用实验学生学院自动化学院专业班级 14级物联网4班学号3114001569学生姓名林思培指导教师王春茹2016年11月28日一.实验目的1)掌握8259中断控制器的工作原理。

2)掌握8259可编程中断控制器的应用编程。

3)学习掌握8259级联方式的使用方法。

4)掌握在接口实验单元上构建连接实验电路的方法。

二.实验设备PC一台,TD-PITE微机/单片机教学实验装置一套三.实验内容与步骤1)实验内容修改图2-5-2接线,将KK2+接到MIR6。

编写程序,实现按一次KK2+时,显示字符“2013NKL”(用AH=09H,INT 21H显示),中断16次后程序退出。

2)分析参照实验书的实验1.8259A单中断实验,先对执行IRQ6中断时要产生的动作(显示字符串)这一功能进行编写,然后初始化主片8259A,开放IR6中断,初始化中断可运行的次数,用CX记录,然后执行一次中断就CX-1,当16次中断完成后,禁止IR6中断,程序结束。

3)代码DATAS SEGMENTDATA1 DB'2013NKL$'DATAS ENDSSTACKS SEGMENTDW 64 DUP(?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATAS ;现用的段地址送AXMOV DS,AX ;送DS段寄存器PUSH DS ;因为下面需要用到DS,先把其进栈MOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ6 ;取中断入口地址MOV SI,0038H ;IR6的中断向量表地址为38H~3BH MOV [SI],AX ;填IRQ6的偏移地址MOV AX,CSMOV SI,003AHMOV [SI],AX ;填IRQ6的段地址;初始化主片8259AMOV AL,11HOUT 20H,AL ;写入ICW1MOV AL,08HOUT 21H,AL ;写入ICW2MOV AL,04HOUT 21H,AL ;写入ICW3MOV AL,01HOUT 21H,AL ;写入ICW4IN AL,21HAND AL,0BFHOUT 21H,AL ;开放IR6中断POP DS ;将DS出栈STIMOV CX,0010H ;初始化循环次数CX为16 A1:CMP CX,0 ;当CX=0,禁止IR6中断JNZ A2IN AL,21HOR AL,40HOUT 21H,ALA2:NOPJMP A1IRQ6:MOV DX,OFFSET DATA1MOV AH,09H ;显示‘2013NKL’INT 21HDEC CXMOV AL,20HOUT 20H,ALIRETMOV AH,4CHINT 21HCODES ENDSENDSTART4)调试步骤(1)按照图2-5-2连接实验线路(2)输入程序并检查无误,经汇编、连接后装入系统。

微机原理与接口技术实验


CALL ADDA DISX 3DH MOV SI,OFFSET DATA3 MOV BX,05 CALL DISPL DISX 0DH DISX 0AH MOV AH,4CH INT 21H
DISPL DS1:
DISPL
PROC NEAR DISX [SI+BX-1] DEC BX JNZ DS1 RET ENDP
5.在屏幕上显示结果可利用INT 21H的02号子功能,因该功能一次只 能显示一个字符,故对于显示数字串来说,要编写一段显示子程序,反 复使用02H号子功能。
6.加数与被加数为5位,而和可能为5位或6位,即考虑到带进位和不 带进位的情况。在显示和数时最好按DISUP1: MOV AL,BH MOV CL,04 SHR AL,CL CMP AL,09 JA DISUP4 ADD AL,30H
实验二 两个多位十进制数相加的程序
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 DX,OFFSET MESS MOV AH,09H INT 21H MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL DISX 2BH MOV SI,OFFSET DATA2 MOV BX,05 CALL DISPL MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2
实验一 求最大值程序
NEXT: MAX2:
LOOP MAX1 MOV BL,AL MOV CL,04 SHR AL,CL CMP AL,09 JA MAX4 ADD AL,30H DISX AL MOV AL,BL AND AL,0FH CMP AL,09 JA MAX5 ADD AL,30H
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳大学实验报告
课程名称:微机计算机设计
实验项目名称:8259 中断控制实验
学院:信息工程学院
专业:电子信息工程
指导教师:
报告人:学号:**********班级:<1>班实验时间:2011. 05.19
实验报告提交时间:2011. 05. 26
教务处制
一、实验目的
1. 掌握8259 中断控制器的工作原理。

2. 学习8259 的应用编程方法。

3. 掌握8259 级联方式的使用方法。

二、实验要求
1、8259 单中断实验,由单次脉冲输出与主片8259 的IR7 相连可以实现每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。

2、8259 级联实验,由KK1+连接到主片8259 的IR7 上,KK2+连接到从片8259 的IR1 上,可实现当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。

三、实验设备
PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。

四、实验原理
1、在Intel 386EX 芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。

该中断控制单元就功能而言与工业上标准的82C59A 是一致的,操作方法也相同。

从片的INT 连接到主片的IR2 信号上构成两片8259 的级联。

在TD-PITE 实验系统中,将主控制器的IR6、IR7 以及从控制器的IR1 开放出来供实验使用,主片8259 的IR4 供系统串口使用。

8259 的内部连接及外部管脚引出如图:
2、在对8259 进行编程时,首先必须进行初始化。

一般先使用CLI 指令将所有的可屏蔽中断禁止,然后写入初始化命令字。

8259 有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。

在初始化主片8259 时,写入初
始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259 的顺序与初始化主片8259 的顺序是相同的。

系统启动时,主片8259 已被初始化,且4 号中断源(IR4)提供给与PC 联机的串口通信使用,其它中断源被屏蔽。

五、实验过程
1、8259 单中断实验
(1)按图接线好电路。

(2)编写实验程序,经编译、链接无误后装入系统。

(代码如下):SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET MIR7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7 的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7 的段地址矢量
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
MOV AL, 6FH ;OCW1
OUT 21H, AL
STI
AA1: NOP
JMP AA1
MIR7: STI
CALL DELAY
MOV AX, 0137H
INT 10H ;显示字符7
MOV AX, 0120H
INT 10H
OUT 20H, AL ;中断结束命令
IRET
DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX
LOOP AA0
POP CX
RET
CODE ENDS
END START
(3)运行程序,重复按单次脉冲开关KK1+,观看显示屏,结果如下:2、8259 级联实验
(1)连接好实验线路。

(2)输入程序,编译、链接无误后装入系统。

(部分代码如下):MOV AX, OFFSET MIR7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7 的偏移矢量
MOV AX, CS ;段地址
MOV [SI], AX ;填IRQ7 的段地址矢量
MOV AX, OFFSET SIR1
MOV SI, 00C4H
MOV [SI], AX
MOV AX, CS
MOV SI, 00C6H
MOV [SI], AX
CLI
POP DS
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
;初始化从片8259
MOV AL, 11H
OUT 0A0H, AL ;ICW1
MOV AL, 30H
OUT 0A1H, AL ;ICW2
MOV AL, 02H
OUT 0A1H, AL ;ICW3
MOV AL, 01H
OUT 0A1H, AL ;ICW4
MOV AL, 0FDH
OUT 0A1H,AL ;OCW1 = 1111 1101
MOV AL, 6BH
OUT 21H, AL ;主8259 OCW1
STI
AA1: NOP
JMP AA1
MIR7: CALL DELAY
MOV AX, 014DH
INT 10H ;M
MOV AX, 0137H
INT 10H ;显示字符7
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 20H, AL ;中断结束命令
IRET
SIR1: CALL DELAY
MOV AX, 0153H
INT 10H ;S
MOV AX, 0131H
INT 10H ;显示字符1
MOV AX, 0120H
INT 10H
MOV AL, 20H
OUT 0A0H, AL
OUT 20H, AL
IRET
DELAY: PUSH CX
MOV CX, 0F00H
AA0: PUSH AX
POP AX
LOOP AA0
POP CX
RET
CODE ENDS
END START
(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性。

实验结果如下:
(4)若同时按下KK1+和KK2+,观察实验结果,解释实验现象:
通过观察得到,若同时按下KK1+和KK2+,那么显示屏是显示S1在前M7在后。

说明了S1比M7的优先级高。

六、实验结论
本次实验实现了8259的单级和多级的中断实验,深刻体会到了中断优先级的概念。

关于优先级部分,当时不知如何才能让两个按键同时按下,后来通过连在一起而实现了其要求。

总之,这次的实验对中断有了进一步的了解。

注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

相关文档
最新文档