文档详情

8259A中断控制器和8253计数器.doc

发布:2016-09-14约2.75千字共7页下载文档
文本预览下载声明
8259A中断控制器和8253计数器·定时器实验 浏览次数:1129次悬赏分:50?|?解决时间:2008-12-2 12:17?|?提问者:liushang8811程序1 参考流程图 1:开始 2:关中断 3:初始化8253(设定定时器0和1的工作方式及技术初值) 4:使用INT 21H的35H号功能获取0AH号中断向量并保存。 5:使用INT 21H的25H号功能设置0AH号中断的新中断向量。 6:设置IMR寄读器及允许IRQ2中断。 7:开中断 8:循环等待中断。 程序2 参考流程图:编写中断服务程序。要求主机每响应一次IRQ2的中断时,就执行一次终端服务子程序。中断服务子程序的核心就是显示字符串“THIS IS A 8259A INTERRUPT” 1:开始 2:显示字符串 3:技术结束? 终端结束并返回 4:关中断 5: 使用INT 21H的25H号功能恢复原OAH号中断的中断向量 6: 恢复IMR寄存器的原值 7: 开中断 8: 结束,返回DOS 用汇编,急用,跪谢 1. MOV AX,FLAGS AND AX,1111110111111111B ;关中断 MOV FLAGS,AX MOV AL ;假设定时器0设为方式3 OUT 43H,AL MOV AL,XXH ; OUT 40H,AL MOV AL,XXH OUT 40H,AL ;定时器0初值 MOV AL ;假设定时器1设为方式3 OUT 43H,AL MOV AL,XXH ; OUT 41H,AL MOV AL,XXH OUT 41H,AL ;定时器1初值 MOV AH,35H MOV AL,0AH INT 21H PUSH ES ;保存原向量 PUSH BX PUSH DS ;借用DS和DX作中断入口,暂时保存原值 PUSH DX MOV DS,XXH ;新中断向量段地址 MOV DX,XXH ;新中断向量偏移量 MOV AH,25H MOV AL,0AH INT 21H POP DX POP DS IN AL,21H MOV SAV_IR,AL ;保存原8259设置(必须事先在数据段中为SAV_IR开辟一个字节的空间) OR AL ;开IR2 OUT 21H,AL MOV AX,FLAGS OR AX,0000001000000000B ;开中断 MOV FLAGS,AX WAIT1: JMP WAIT1 2. MESSAGE DB THIS IS A 8259A INTERRUPT$ SAV_IR DB 0 MOV AH,9 MOV DX,SEG MESSAGE MOV DS,DX MOV DX,OFFSET MESSAGE INT 21H MOV AX,FLAGS AND AX,1111110111111111B ;关中断 MOV FLAGS,AX PUSH DS ;借用DS和DX作中断入口,暂时保存原值 PUSH DX MOV DS,ES MOV DX,BX ;原0AH中断向量值 MOV AH,25H MOV AL,0AH INT 21H POP DX POP DS MOV AL,SAV_IR ;读回8259原设置值 OUT 21H,AL MOV AX,FLAGS OR AX,0000001000000000B ;开中断 MOV FLAGS,AX IRET 回答者:?shinesnow_wy?|?三级?|?2008-11-12 18:51 呵呵~~我们是同行啊~~~也许是对的吧~~顶~~ 顶~~~ 顶~~~~MOV AX,FLAGS AND AX,1111110111111111B ;关中断 MOV FLAGS,AX MOV AL ;假设定时器0设为方式3 OUT 43H,AL MOV AL,XXH ; OUT 40H,AL MOV AL,XXH OUT 40H,AL ;定时器0初值 MOV AL ;假设定时器1设为方式3 OUT 43H,AL MOV AL,XXH ; OUT 41H,AL MOV AL,XXH OUT 41H,AL ;定时器1初值 MOV AH,35H MOV AL,0AH INT 21H PUSH ES ;保存原向量 P
显示全部
相似文档