微机原理与接口技术实验报告Word下载.docx
《微机原理与接口技术实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
三、实验步骤
1.实验1-1:
PC机内中断应用实验
(1)按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,屏幕显示结果截图如下:
(2)自设计实验。
改变接线方式,将单次脉冲连到USB核心板上的IRQ10插孔上,参考本实验代码,编程实现IRQ10中断。
(注意:
考虑PC机内中断级联的方式,参看前面的原理说明),代码如下:
DATASEGMENT
MESSDB'
IRQ10'
0DH,0AH,'
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINT10
MOVAX,2572H;
设置IRQ10对应的中断向量
INT21H
INAL,21H;
读取中断屏蔽寄存器
ANDAL,0F3H;
开放IRQ3中断和从片
OUT21H,AL
INAL,0A1H;
从片的中断屏蔽寄存器
ANDAL,0FBH;
开放IRQ10中断
OUT0A1H,AL
MOVCX,10
STI
WAIT:
JMPWAIT
INT10:
MOVAX,DATA;
中断服务程序
MOVDS,AX
MOVDX,OFFSETMESS
MOVAH,09;
在屏幕上显示每次中断的提示信息
INT21H
MOVAL,20H;
发出EOI结束中断到PC内主片的地址20H
OUT20H,AL
LOOPNEXT
INAL,21H;
读中断屏蔽寄存器,获取中断屏蔽字
ORAL,08H;
关闭IRQ3中断
OUT21H,AL;
将中断屏蔽字送到中断屏蔽寄存器
STI;
置中断标志位
MOVAH,4CH;
返回DOS
NEXT:
IRET;
中断返回
CODEENDS
ENDSTART
调用程序代码,观察实验现象,屏幕显示截图如下:
2.实验1-2:
PC机内中断嵌套实验
实验要求:
(1)按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,观察屏幕显示结果并分析产生该现象的原因:
A.按下连接IRQ的单次脉冲按键,屏幕上会显示10个3,在屏幕上10次显示未结束之前,按下连接IRQ10的单次脉冲按键,观察现象;
按下IRQ时屏幕上会显示10个3,此时按下IRQ10,会直接在屏幕上显示10个10,然后结束后再显示剩余的3B.按下连接IRQ10的单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3的单次脉冲按键,观察现象。
在屏幕上显示10个10的过程中按下IRQ无反应,等到10个10全部显示完毕后才再显示10个3
出现这种现象的原因是IRQ10的中断优先级高于IRQ3
屏幕截图:
(2)程序所有代码及注释:
CODE,DS:
.386
CLI
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINT10;
采用间接修改法,设置中断向量
MOVDX,OFFSETINT3;
MOVAX,250BH;
设置IRQ3对应的中断向量
INAL,21H;
读中断屏蔽寄存器,21H是该寄存器的端口号
ANDAL,0F3H;
开放中断,允许从片和IRQ3
读中断屏蔽寄存器,0A1H是该寄存器的端口
ANDAL,0FBH;
开放中断IRQ10
MOVCX,10;
记中断循环次数为10次
CLI;
PUSHAD
PUSHFD
NEXT10_1:
MOVDX,31H
MOVAH,02H;
输出DL
MOVDX,30H
MOVAH,02H;
MOVDX,20H;
发出EOI结束中断到PC内主片的地址20H
输出DL,3
CALLDELAY1;
等待
LOOPNEXT10_1
MOVDX,0DH
输出DL,‘’
MOVDX,0AH;
发出EOI结束中断到PC内从片占用的是0A0H端口
输出DL,发生中断后输出10
MOVAL,20H;
OUT0A0H,AL;
从片
OUT20H,AL;
主片
POPFD;
关中断,出栈,返回
POPAD
IRET
INT3:
PUSHAD
PUSHFD
NEXT3_1:
MOVDX,33H
LOOPNEXT3_1
MOVDX,0DH
发生中断输出DL,10
MOVAL,20H
OUT0A0H,AL
出栈,关中断,返回
DELAY1PROC;
控制等待部分
MOVCX,0FH
DELAY_LOOP1:
MOVBX,0FFFFH
DELAY_LOOP2:
DECBX
NOP
JNZDELAY_LOOP2
LOOPDELAY_LOOP1
POPFD
RET
DELAY1ENDP
3.实验1-3:
扩展多中断应用实验
调用程序源码文件8259-3.asm,在程序源代码中划横线的位置,请按照所学8259工作原理填写并验证,然后将所填内容写在实验报告中,并分析所填数据的形成原理。
程序代码及与案例说明:
;
*****************************************************************
8259中断查询方式应用实验
请根据所学原理推断横线处需填写的源代码
I8259_1EQU2B0H;
8259的ICW1端口地址
I8259_2EQU2B1H;
8259的ICW2端口地址
I8259_3EQU2B1H;
8259的ICW3端口地址,ICW3,ICW4,OCW1都写入奇地址中
I8259_4EQU2B1H;
8259的ICW4端口地址
O8259_1EQU2B1H;
8259的OCW1端口地址
O8259_2EQU2B0H;
8259的OCW2端口地址,OCW2,OCW3写入偶地址
O8259_3EQU2B0H;
8259的OCW3端口地址
MES1DB'
YOUCANPLAYAKEYONTHEKEYBOARD!
'
0DH,0AH,24H
MES2DDMES1
MESS1DB'
HELLO!
THISISINTERRUPT*0*!
0DH,0AH,'
MESS2DB'
THISISINTERRUPT*1*!
MESS3DB'
THISISINTERRUPT*2*!
MESS4DB'
THISISINTERRUPT*3*!
MESS5DB'
THISISINTERRUPT*4*!
MESS6DB'
THISISINTERRUPT*5*!
MESS7DB'
THISISINTERRUPT*6*!
MESS8DB'
THISISINTERRUPT*7*!
STACKSSEGMENT
DB100DUP(?
)
STACKSENDS
STACK1SEGMENTSTACK
DW256DUP(?
STACK1ENDS
DATA,SS:
STACKS,ES:
MOVAX,DATA
MOVES,AX
MOVAX,STACKS
MOVSS,AX
MOVDX,I8259_1;
初始化8259的ICW1
MOVAL,13H;
边沿触发、单片8259、需要ICW4,查表得到控制字
OUTDX,AL
MOVDX,I8259_2;
初始化8259的ICW2
MOVAL,0B0H
MOVAL,03H
MOVDX,O8259_1;
初始化8259的中断屏蔽操作命令字
MOVAL,000H;
打开屏蔽位,将全部屏蔽位打开
QUERY:
MOVAH,1;
判断是否有按键按下