北科大微机原理实验报告.docx
- 文档编号:26968652
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:25
- 大小:750.52KB
北科大微机原理实验报告.docx
《北科大微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《北科大微机原理实验报告.docx(25页珍藏版)》请在冰豆网上搜索。
北科大微机原理实验报告
北科大微机原理实验报告
实验一:
8259中断控制器应用实验
实验名称
PC机内中断应用实验
成绩
班级
通信
姓名
学号
实验目的:
1.学习可编程中断控制器8259的工作原理;
2.掌握可编程中断控制器8259的应用控制方法;
实验内容:
PC机中断实验。
使用单次脉冲模拟中断产生。
验证中断处理程序,在显示屏幕上显示一行预设定的字符串。
实验步骤:
实验结果及分析:
DATASEGMENT
MESSDB'TPCAinterrupt!
',0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINT3;采用间接修改法,调用DOS功能,设置中断向量,取得偏移地址
MOVAX,SEGINT3;通过AX的过渡,得到段首地址。
MOVDS,AX
MOVAL,0BH;设置IRQ3对应的中断向量0BH
MOVAH,25H
INT21H
INAL,21H;读中断屏蔽寄存器,21H是该寄存器的端口号
ANDAL,0F7H;开放IRQ3中断,允许IRQ3的中断申请,11110111
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端口是单向的传出。
并行方式的接线非常的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北科大 微机 原理 实验 报告