微机原理实验指导书非电专业.docx
《微机原理实验指导书非电专业.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书非电专业.docx(66页珍藏版)》请在冰豆网上搜索。
![微机原理实验指导书非电专业.docx](https://file1.bdocx.com/fileroot1/2022-12/13/484322e7-8fdd-424c-8f98-53511be10205/484322e7-8fdd-424c-8f98-53511be102051.gif)
微机原理实验指导书非电专业
计算机与通信工程学院实验指导书系列
目录
目录II
实验一8259中断控制器应用实验1
一、实验目的1
二、实验内容1
三、实验原理与步骤1
四、思考题17
实验二8255并口控制器应用实验18
一、实验目的18
二、实验内容18
三、实验原理与步骤18
四、思考题24
实验三8254定时/计数器应用实验25
一、实验目的25
二、实验内容25
三、实验原理与步骤25
四、思考题30
附录31
附录一实验系统认识31
一、CZ-CIUS实验系统结构及主要电路31
二、实验箱集成开发环境的使用说明36
三、微机实验操作注意事项43
附录二INT21H指令说明及使用方法44
附录三I386汇编指令集51
实验一8259中断控制器应用实验
一、实验目的
1.学习可编程中断控制器8259的工作原理。
2.掌握可编程中断控制器8259的应用编程方法。
二、实验内容
1.PC机内中断实验。
使用单次脉冲模拟中断产生。
验证中断处理程序,在显示器屏幕上显示一行预设定的字符串。
2.PC机内中断嵌套实验。
使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。
3.扩展多中断源查询方式应用实验。
利用实验平台上8259控制器作为中断扩展源,编写程序对8259控制器的中断请求进行处理。
三、实验原理与步骤
1.实验原理
(1)PC微机系统中的8259介绍
中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:
1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。
8259A的命令字共有7个,可分为两类。
一类是初始化命令字,另一类是操作命令字。
8259的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如表1-1所示,OCW1-OCW3各命令字格式如表1-2所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和结束方式的操作命令字,OCW3用于设置和撤消特殊屏蔽方式,设置中断查询方式以及设置对8259A内部寄存器的读出命令。
表1-1初始化命令字
D7
D6
D5
D4
D3
D2
D1
D0
ICW1
X
X
X
1
1:
电平触发
0:
边沿
触发
X
1:
单片
8259
0:
多片
8259
1:
需要ICW4
0:
不需要
ICW4
ICW2
中断向量的高5位
X
X
X
ICW3(主)
分别对应8个IRQ,Di=1,IRQi上有级连芯片,=0,无级连芯片
ICW3(从)
0
0
0
0
0
指明从片连接在主片的哪个IRQ上
ICW4
0
0
0
1:
特殊全嵌套
0:
非特
殊全嵌
套
1:
缓冲
0:
非缓冲
1:
主片
0:
从
片
1:
自动EOI
0:
非自
动EOI
1:
8086系统
0:
8080系统
表1-2操作命令字
D7
D6
D5
D4
D3
D2
D1
D0
OCW1
Di=0:
开放IRi中断请求
Di=1:
禁止IRi中断请求
OCW2
优先级
循环控
制位
L2~L0
有效控
制位
中断结
束命令
位
0
0
中断级编码
OCW3
X
0X:
无意义
10:
撤销特殊屏蔽
11:
设置特殊屏蔽
0
1
中断查
询控制
位
0X:
无意义
10:
读IRR寄存器
11:
读ISR寄存器
(2)PC微机系统中的8259A
在80x86系列PC微机系统中,系统中包含了两片8259中断控制器,通过级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表1-3所示。
两片8259的端口地址为:
主片8259使用020H和021H两个端口;从片使用0A0H和0AlH两个端口。
系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为:
0级最高,依次为1级、8级~15级,然后是3级~7级。
在实验平台上系统总线单元的INTR信号对应的中断线就是PC机保留中断其中的一个。
对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。
表1-3PC微机系统中的硬件中断
中断号
功能
中断向量号
中断向量地址
主8259IRQ0
时钟/计数器0
08H
0020H~0023H
主8259IRQ1
键盘
09H
0024H~0027H
主8259IRQ2
接从片8259
0AH
0028H~002BH
主8259IRQ3
串行口2
0BH
002CH~002FH
主8259IRQ4
串行口1
0CH
0030H~0033H
主8259IRQ5
并行口2
0DH
0034H~0037H
主8259IRQ6
软盘
0EH
0038H~003BH
主8259IRQ7
并行口1
0FH
003CH~003FH
从8259IRQ8
实时钟
70H
01C0H~01C3H
从8259IRQ9
保留
71H
01C4H~01C7H
从8259IRQ10
保留
72H
01C8H~01CBH
从8259IRQ11
保留
73H
01CCH~01CFH
从8259IRQ12
保留
74H
01D0H~01D3H
从8259IRQ13
协处理器中断
75H
01D4H~01D7H
从8259IRQ14
硬盘控制器
76H
01D8H~01DBH
从8259IRQ15
保留
77H
01DCH~01DFH
说明:
CZ-CIUS-USB实验系统总线区的IRQ接到了3号中断IRQ3上,即进行中断实验时,所用中断类型号为0BH。
USB核心板上的IR10接到了10号中断IRQ10上,所用中断类型为072H。
(3)中断向量的设置方法
当系统程序或应用程序由于某种特殊需要而提供新的中断处理程序时,需要设置对应的中断向量,使其指向新的中断处理程序。
修改向量表中的中断处理程序的入口地址一般有两种方式:
直接修改法和间接修改法。
1)直接修改法
直接利用传送指令,将中断处理程序的入口地址送入中断向量表中。
2)间接修改法
利用DOS的25号功能调用,将中断子程序的入口地址送入中断向量表,其方法如下:
①将25号功能号送入AH寄存器,即AH=25H;
②将需要修改中断向量的类型号送入AL寄存器,即AL=中断类型号;
③将中断处理程序的段首址送入DS段寄存器,将偏移量送入DX寄存器,即DS:
DX=新的中断向量;
④执行“INT21H”指令。
2.实验步骤
(1)实验1-1:
PC机内中断应用实验
实验要求:
通过本实验,学习对PC机内中断的编程应用,掌握中断向量的设置方法,开启和关闭中断的方法。
本实验使用单次脉冲模拟中断的产生,通过实验箱连入PC机,验证设定好的中断处理程序,是否能在显示器屏幕上显示一行预设定的字符串。
接线图:
说明:
本实验只需要一根连线,一端接系统总线区的IRQ引脚,一端接到单脉冲单元的引脚上,接线如图1-1所示。
图1-18259实验1接线图
参考流程图(如图1-2):
图1-28259实验1程序流程图
程序源代码:
DATASEGMENT
MESSDB'TPCAinterrupt!
',0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,CS
MOVDS,AX
MOVDX,________;采用间接修改法,设置中断向量
_________________;设置IRQ3对应的中断向量
INT21H
INAL,21H;读中断屏蔽寄存器,21H是该寄存器的端口号
ANDAL,________;开放IRQ3中断,允许IRQ3的中断申请
OUT21H,AL
MOVCX,10;记中断循环次数为10次
STI;允许中断发生
WAIT:
JMPWAIT
INT3:
MOVAX,DATA;中断服务程序
MOVDS,AX
MOVDX,OFFSETMESS
MOVAH,____;在屏幕上显示每次中断的提示信息
_____________
MOVAL,20H;发出EOI结束中断到PC内主片的地址20H
OUT20H,AL
LOOPNEXT
INAL,_______;读中断屏蔽寄存器,获取中断屏蔽字
_____________;关闭IRQ3中断
OUT21H,AL;将中断屏蔽字送到中断屏蔽寄存器
STI;置中断标志位
MOVAH,4CH;返回DOS
INT21H
NEXT:
IRET;中断返回
CODEENDS
ENDSTART
(2)实验1-2:
PC机内中断嵌套实验
实验要求:
通过本实验,学习中断嵌套的原理与实现。
利用实验箱生成两个脉冲信号,模拟两个中断申请,发送给PC机内中断芯片的IRQ3和IRQ10引脚,通过实验观察中断优先级不同,其实验现象的不同。
按接线图连好接线,调用程序源代码,做如下操作,并将现象结果以截图的方式写在实验报告中,并分析产生该现象的原因:
①按下连接IRQ的单次脉冲按键,在屏幕显示未结束之前,按下连接IRQ10的单次脉冲按键,观察现象;
②按下连接IRQ10的单次脉冲按键,在屏幕显示未结束之前,按下连接IRQ的单次脉冲按键,观察现象;
接线图:
说明:
本实验接线图如图1-3所示,从单脉冲单元引出两根导线,一根接到系统总线单元区的IRQ引脚,一根接到USB核心卡的IRQ10端。
图1-38259实验2接线图
参考流程图:
图1-48259实验2程序流程图
程序源代码:
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
.386
CLI
MOVAX,CS
MOVDS,AX
MOVDX,_________;设置IRQ10对应的中断向量
_________________
INT21H
MOVDX,__________;设置IRQ3对应的中断向量
___________________
INT21H
INAL,21H
___________________;开放IRQ3和IRQ2中断请求
OUT21H,AL
INAL,0A1H
___________________;开放IRQ10中断请求
OUT0A1H,AL
MOVCX,10
STI
WAIT:
JMPWAIT;跳转,等待中断请求信号
INT10:
CLI;将处理器标志寄存器的中断标志位清0,当前不允许中断
PUSHAD;将所有的32位通用寄存器压入堆栈
PUSHFD;然后将32位标志寄存器EFLAGS压入堆栈
MOVCX,10
NEXT10_1:
;在*号之间填写代码,在屏幕上显示“10”和“空格”的字符
;****************************************
;******************************************
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”和“空格”的字符
;****************************************
;******************************************
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
(3)实验1-3:
扩展多中断应用实验
实验要求:
说明:
本实验采用查询方式,应用实验箱提供的8259中断源,向PC机提交中断请求。
按单脉冲请求一次中断,屏幕上显示相应的中断请求号。
调用程序源码文件,在程序源代码中划横线的位置,请按照所学8259工作原理填写,并验证,然后将所填内容写在实验报告中,并分析所填数据的形成原理。
接线图:
说明:
接线图如图1-5所示,以逻辑电平开关模拟单次脉冲,开关置高电平,代表一次脉冲,8259模块相应管脚分别与系统总线、I/O地址单元和+5V相连。
图1-58259实验3接线图
参考流程图:
图1-68259实验3程序流程图
源程序代码:
;*****************************************************************
;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、需要ICW4
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
OUTDX,AL
INAL,DX;读出查询字
MOVAH,AL
ANDAL,80H
TESTAL,80H;判断中断是否已响应
JZQUERY
MOVAL,AH;没有响应则继续查询
ANDAL,07H;取出查询字的末三位
;通过下面的比较判断程序,判断中断请求来自哪个优先级
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发送中断结束命令
MOVAL,20H
OUTDX,AL
JMPQUERY
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
CODEENDS
ENDSTART
四、思考题
1.单中断与多中断有何不同?
2.如何改变中断优先级的顺序?
3.可编程中断控制器8259A在协助CPU处理中断事务中起哪些作用?
4.可屏蔽中断与8259A是什么关系?
实验二8255并口控制器应用实验
一、实验目的
1.掌握8255的工作方式及应用编程。
2.掌握8255典型应用电路的接法。
二、实验内容
1.基本输入输出实验。
编写程序,使8255的B口为输入,A口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就改变。
2.流水灯显示实验。
编写程序,使8255的A口为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示。
三、实验原理与步骤
1.8255简介
并行接