ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:781.09KB ,
资源ID:13485497      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13485497.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北科大微机原理实验报告.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

北科大微机原理实验报告.docx

1、北科大微机原理实验报告北科大微机原理实验报告实验一:8259中断控制器应用实验实验名称PC机内中断应用实验成绩班级通信姓名学号实验目的: 1. 学习可编程中断控制器8259的工作原理; 2. 掌握可编程中断控制器8259的应用控制方法;实验内容: PC机中断实验。使用单次脉冲模拟中断产生。验证中断处理程序,在显示屏幕上显示一行预设定的字符串。实验步骤: 实验结果及分析:DATA SEGMENT OUT 21H, AL ;输出到中断屏蔽寄存器 MOV CX, 10 ;记中断循环次数为10次 STI ;允许中断发生 WAIT: JMP WAIT INT3: MOV AX, DATA ;中断服务程序

2、 MOV DS, AX MOV DX, OFFSET MESS MOV AH, 09H ;在屏幕上显示每次中断的提示信息 INT 21H MOV AL, 20H ; 发出 EOI结束中断到 PC内主片的地址 20H OUT 20H, AL LOOP NEXT ;当 CX为0,跳 转到 NEXT IN AL, 21H ;读中断屏蔽寄存器,获取中断屏蔽字 OR AL,04H ;关闭IRQ3中断 ,00000100 OUT 21H, AL ;将中断屏蔽字送到中断屏蔽寄存器 STI ;置中断标志位 MOV AH, 4CH ;返回DOS INT 21H NEXT: IRET ;中断返回 CODE END

3、S END START收获体会:使用间接法设置中断向量:1.将中断处理程序的段首地址送入DS寄存器,偏移量送入DX寄存器。2.将需要修改的中断向量类型号送入AL.3. 25号功能送AH。4.执行 INT 21H指令。实验名称PC机内中断嵌套实验成绩班级姓名学号实验目的: 1. 学习可编程中断控制器8259的工作原理; 2. 掌握可编程中断控制器8259的应用控制方法; 实验内容: PC机内中断嵌套实验。使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。实验步骤:实验结果及分析:CODE SEGMENT ASSUME CS:CODE START:.386 ;伪指令 CL

4、I MOV AX,CS MOV DS,AX MOV DX,OFFSET INT10 ;设置IRQ10对应的中断向量 MOV AX,SEG INT10 ;以 AX 为过渡,取得段首地址 MOV DS,AX MOV AL,72H ;IRQ10的中断向量地址为72H MOV AH,25H INT 21H MOV DX,OFFSET INT3 ;设置IRQ3对应的中断向量 MOV AX,SEG INT3 ;以 AX 为过渡,取得段首地址 MOV DS,AX MOV AL,0BH ;IRQ3的中断向量地址为0BH MOV AH,25H INT 21H IN AL,21H ;读入中断控制寄存器 AND A

5、L,0F7H ;开放 IRQ3中和 IRQ2中断请求 ,11110111 OUT 21H,AL ;输出到中断控制寄存器 IN AL,0A1H AND AL,0FBH ;开放IRQ10中断请求 11111011 OUT 0A1H,AL MOV CX,10 ;设置计数器 STI WAIT: JMP WAIT ;跳转,等待中断请求信号 INT10: CLI ;将处理器标志寄存器的中断标志位清0,当前不允许中断 PUSHAD ; 将所有的32位通用寄存器压入堆栈 PUSHFD ; 然后将32位标志寄存器EFLAGS压入堆栈 MOV CX,10 NEXT10_1: ;在*号之间填写代码,在屏幕上显示10

6、和空格的字符 ;* MOV DL,1 ;在屏幕显示字符 1 MOV AH,2 INT 21H MOV DL,0 ;在屏幕显示字符 0 MOV AH,2 INT 21H MOV DL,20H ;在屏幕显示空格字符 MOV AH,2 INT 21H ;* CALL DELAY1 ;调用延时子程序 LOOP NEXT10_1 MOV DX,0DH ;调用DOS的中断功能,回车 MOV AH,02H INT 21H MOV DX,0AH ;调用DOS的中断功能,换行 MOV AH,02H INT 21H MOV AL,20H OUT 0A0H,AL OUT 20H,AL POPFD POPAD STI

7、 IRET INT3: CLI PUSHAD PUSHFD MOV CX,10 NEXT3_1: ; 在*号之间填写代码,在屏幕显示3和空格的字符 ;* MOV DL,3 ;在屏幕显示字符 3 MOV AH,2 INT 21H MOV DL,20H ;在屏幕显示空格字符 MOV AH,2 INT 21H ;* CALL DELAY1 ;调用延时子程序 LOOP NEXT3_1 MOV DX,0DH ;调用DOS的中断功能,回车 MOV AH,02H INT 21H MOV DX,0AH ;调用DOS的中断功能,换行 MOV AH,02H INT 21H MOV AL,20H OUT 20H,A

8、L OUT 0A0H,AL POPFD POPAD STI IRET DELAY1 PROC ;延时子程序 PUSHAD ; 将所有的32位通用寄存器压入堆栈 PUSHFD ; 然后将32位标志寄存器EFLAGS压入堆栈 MOV CX,0FH ;向CX送数据0FH DELAY_LOOP1: MOV BX,0FFFFH DELAY_LOOP2: DEC BX NOP JNZ DELAY_LOOP2 LOOP DELAY_LOOP1 POPFD POPAD RET DELAY1 ENDP CODE ENDS END START收获体会:(1) 按下连接IRQ的单次脉冲按键,在屏幕上10次显示未结束

9、之前,按下连接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的应用控制方法; 实验内容: 扩展多中断源查询方式

10、应用实验。利用实验平台上的8259控制器作为中断扩展源,编写程序对8259控制器的中断请求进行处理。 实验步骤: 实验结果及分析: ;*; 8259中断查询方式应用实验;* I8259_1 EQU 2B0H ; 8259的 ICW1端口地址 I8259_2 EQU 2B1H ; 8259的 ICW2端口地址 I8259_3 EQU 2B1H ; 8259的 ICW3端口地址 I8259_4 EQU 2B1H ; 8259的 ICW4端口地址 O8259_1 EQU 2B1H ; 8259的 OCW1端口地址 O8259_2 EQU 2B0H ; 8259的 OCW2端口地址 O8259_3 E

11、QU 2B0H ; 8259的 OCW3端口地址 DATA SEGMENT MES1 DB YOU CAN PLAY A KEY ON THE KEYBOARD!,0DH, 0AH, 24H MES2 DD MES1 MESS1 DB HELLO! THIS IS INTERRUPT * 0 *!,0DH,0AH,$ MESS2 DB HELLO! THIS IS INTERRUPT * 1 *!,0DH,0AH,$ MESS3 DB HELLO! THIS IS INTERRUPT * 2 *!,0DH,0AH,$ MESS4 DB HELLO! THIS IS INTERRUPT * 3

12、*!,0DH,0AH,$ MESS5 DB HELLO! THIS IS INTERRUPT * 4 *!,0DH,0AH,$ MESS6 DB HELLO! THIS IS INTERRUPT * 5 *!,0DH,0AH,$ MESS7 DB HELLO! THIS IS INTERRUPT * 6 *!,0DH,0AH,$ MESS8 DB HELLO! THIS IS INTERRUPT * 7 *!,0DH,0AH,$ DATA ENDS STACKS SEGMENT DB 100 DUP(?) STACKS ENDS STACK1 SEGMENT STACK DW 256 DUP(

13、?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKS, ES:DATA.386 ;伪指令,告诉编译器在本程序中使用的指令集为80386指令集 START: MOV AX,DATA MOV DS, AX MOV ES, AX MOV AX, STACKS MOV SS, AX MOV DX, I8259_1 ;初始化 8259的 ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4 00010011 OUT DX,AL MOV DX,I8259_2 ;初始化8259的 ICW2 MOV AL,0B0H OU

14、T DX,AL MOV AL,03H OUT DX,AL MOV DX,O8259_1 ;初始化 8259的 OCW1 MOV AL,00H ;打开屏蔽位 OUT DX,AL QUERY: MOV AH,1 ;判断是否有按键按下 INT 16H JNZ QUIT ;有按键则退出 MOV DX,O8259_3 ;向 8259的 OCW3发送查询命令 MOV AL,0CH ;0000 1100 D2=1,设置为中断查询方式工作 OUT DX,AL IN AL,DX ;读出查询字 MOV AH,AL AND AL,80H ;判断中断是否已响应 TEST AL,80H JZ QUERY ;没有响应则继

15、续查询 MOV AL,AH AND AL,07H ;取出查询字的末三位 00000111 ;通过下面的比较判断程序,判断中断请求来自哪个优先级 CMP AL,00H ;将查询字末三位与00H比较,相等,为IR0请求 JE IR0ISR ;若为IR0请求,跳到 IR0处理程序 CMP AL,01H JE IR1ISR ;若为IR1请求,跳到 IR1处理程序 CMP AL,02H JE IR2ISR ;若为IR2请求,跳到 IR2处理程序 CMP AL,03H JE IR3ISR ;若为IR3请求,跳到 IR3处理程序 CMP AL,04H JE IR4ISR ;若为IR4请求,跳到 IR4处理程

16、序 CMP AL,05H JE IR5ISR ;若为IR5请求,跳到 IR5处理程序 CMP AL,06H JE IR6ISR ;若为IR6请求,跳到 IR6处理程序 CMP AL,07H JE IR7ISR ;若为IR7请求,跳到 IR7处理程序 JMP QUERY IR0ISR: MOV AX,DATA ;将数据段首地址放入 AX寄存器 MOV DS,AX MOV DX,OFFSET MESS1 ;显示提示信息 MOV AH,09 INT 21H JMP EOI IR1ISR: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS2 ;显示提示信息 MOV AH

17、,09 INT 21H JMP EOI IR2ISR: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS3 ;显示提示信息 MOV AH,09 INT 21H JMP EOI IR3ISR: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS4 ;显示提示信息 MOV AH,09 INT 21H JMP EOI IR4ISR: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS5 ;显示提示信息 MOV AH,09 INT 21H JMP EOI IR5ISR: MOV AX,DATA MOV DS,A

18、X MOV DX,OFFSET MESS6 ;显示提示信息 MOV AH,09 INT 21H JMP EOI IR6ISR: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS7 ;显示提示信息 MOV AH,09 INT 21H JMP EOI IR7ISR: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS8 ;显示提示信息 MOV AH,09 INT 21H EOI: MOV DX,O8259_2 ;向 8259 的 OCW2发送中断结束命令 MOV AL,20H ;00100000 D5=1,中断结束 OUT DX,AL

19、JMP QUERY QUIT: MOV AX,4C00H ;结束程序退出 INT 21H CODE ENDS END START收获体会:所填数据的形成原理:1.MOV AL, 13H ;边沿触发,单片8259,需要ICW4解释:在初始化ICW1中,D7D5都是0. D4=1,是ICW1. D3=0,上升沿触发。D2=0, 8086中固定设为0. D1=1,单片工作方式。 D0=1,需要ICW4。所以ICW1=00010011B=13H2.MOV AL,00H ;打开屏蔽位。解释:中断屏蔽寄存器中,某一位为0时允许中断,为1时屏蔽中断。3.MOV DX,O8259_3 ;向8259的OCW3发

20、送查询命令。MOV AL,L,0CH ;0000 1100 D2=1,设置为中断查询方式工作.4.AND AL,80H ;判断中断是否已响应 解释:取得AL的最高位,判断是1或0.5.MOV DX,O8259_2 ;向 8259 的 OCW2发送中断结束命令MOV AL,20H ;00100000 D5=1,中断结束解释:OCW2的D5=1时,中断结束。 思考题:1.单中断和多中断有何不同? 单中断就是从中断开始到中断结束只能完成一次中断,多中断应该是多重中断,这种中断方式可以允许在一次中断未完成时响应更高级别的中断申请,也叫中断嵌套。2.如何改变中断优先级的顺序?可以根据程序中中断的书写顺序

21、和逻辑结构来进行判断。3.可编中断控制寄存器8259A在协助CPU处理中断事务中起到那些作用?1优先级排队管理根据任务的轻重缓急或设备的特殊要求,分配中断源的中断等级。8259A具有完全嵌套。循环优先级、特定屏蔽等多种方式的优先级排队管理。2可屏蔽中断INTR当CPU的INTR引脚上有一个来自外部的“高”有效信号输人时,则产生硬件可屏蔽中断请求INTR,这种请求可以被CPU用指令CLI来禁止,也可由指令STI来允许。只有在INTR被允许时,CPU才发中断响应信号INTA,这时,中断源一定要向CPU提供中断类型号,以便找到中断服务程序入口。中断向量表中中断号为080FH和070H077H的中断,

22、属于这种中断(见表5.2)。很明显,这种中断是由外部设备产生的。 3提供中断类型号8259A最突出的特点是具有对中断服务程序入口地址的寻址能力,也就是当CPU响应中断申请后,通过8259A提供的中断类型号可以找到中断服务程序的人口地址,转移到中断服务程序去执行。 4进行中断请求的屏蔽和开放8259A能够对提出中断请求的外部设备进行屏蔽或开放。可见,采用8259A可使系统的硬中断管理无需附加其他电路,只需对8259A进行编程,就可管理8级、15级或更多的硬中断,并且还可实现向量中断和查询中断4.可屏蔽中断与8259A是什么关系?一片Intel 8259可管理8个中断请求,并把当前优先级最高的中断

23、请求送到CPU的INTR端;并在CPU响应中断时,为CPU提供中断类型码;8个外部中断的优先级排列方式,可以通过对8259编程进行指定。也可以通过编程屏蔽某些中断请求,或者通过编程改变中断类型码。允许9片8259级联,构成64级中断系统。中断可分为可屏蔽中断与不可屏蔽中断。其中可屏蔽中断是外设使用最多的中断方式。实验二:8255并口控制应用实验实验名称可编程并行接口8255方式0应用实验成绩班级姓名学号实验目的: 1. 掌握8255的工作方式及应用编程; 2. 掌握8255典型应用电路的接法。实验内容:1.基本输入输出实验。编写程序,使8255的B口为输入,A口为输出,完成拨动开关到数据灯的数

24、据传输。要求只要开关拨动,数据灯的显示就改变。实验步骤:实验结果及分析: IO8255_MODE EQU 28BH IO8255_A EQU 288H IO8255_B EQU 289H CODE SEGMENT ASSUME CS: CODE START: MOV DX, IO8255_MODE ;设8255为 B口输入,A口输出 MOV AL,82H ;设置控制字为10000010B OUT DX, AL INOUT: MOV DX, IO8255_B ;从 B口读入数据 IN AL,DX MOV DX,IO8255_A ;从 A口输出数据 OUT DX,AL MOV DL,0FFH ;判

25、断是否有按 键 MOV AH, 06H INT 21H JZ INOUT ;若无,则继续自B口输入,A口输出 MOV AH,4CH ;否则返回 INT 21H CODE ENDS END START收获体会:8255芯片需要设置好控制字,然后进行读写控制操作。实验名称流水灯实验成绩班级姓名学号实验目的: 1. 掌握8255的工作方式及应用编程; 2. 掌握8255典型应用电路的接法。实验内容:流水灯显示实验。编写程序,使8255的A口为输出,数据灯D7D0由左向右,每次仅亮一个灯,循环显示。实验步骤:实验结果及分析: IO8255_A EQU 288H ;8255的 A口地址 IO8255_M

26、ODE EQU 28BH ;8255的控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT LA DB ? ;定义数据变量 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX,IO8255_MODE ;定义8255工作方式 MOV AL, 80H ;工作方式0,A口为输出, 所以控制字为:10000000B OUT DX, AL MOV DX,IO8255_A ;写 A口发出的起始数据 MOV A

27、L, 80H ;设置第一盏灯亮 OUT DX,AL MOV LA,AL LOOP1: CALL DALLY MOV AL,LA ;将A口起始数据右移再写入 A口 RCR AL,1 ;循环右移指令 MOV LA,AL MOV DX,IO8255_A OUT DX,AL MOV AH,1 ;判断是否有按键按下 INT 16H JZ LOOP1 ;无按键则跳回继续循环,有则退出 QUIT: MOV AX,4C00H ;结束程序退出 INT 21H DALLY PROC NEAR ;软件延时子程序 PUSH CX PUSH AX MOV CX,0FFFH D1: MOV AX, 0FFFH D2: D

28、EC AX JNZ D2 LOOP D1 POP AX POP CX RET DALLY ENDP CODE ENDS END START收获体会:思考题:1.并口通信需要注意哪些问题? 并行通信的一个二进制数据位采用一根数据线传输。但是PA端口是双向的传输,PB和PC端口是单向的传出。并行方式的接线非常的多。2.比较并口通信与串口通信的异同。 串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。并行接口,指采用并行传输方式来传输数据的接口标准。从最简单的一个并行数据寄存器或专用接

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2