- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五 中断应用实验 PCI中断实验 编写一实验程序,使用实验装置提供的中断源,写成按键中断的响应。每产生一次按键中断,向显示器输出字符“7” * INTCSR_BYTE0 EQU 9038H INTCSR_BYTE1 EQU 9039H INTCSR_BYTE2 EQU 903AH INTCSR_BYTE3 EQU 903BH IMB4_BYTE3 EQU 1FH DATA SEGMENT CSBAK DW ? IPBAK DW ? MKBAK DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: CLI MOV AX,DATA MOV DS,AX MOV DX,INTCSR_BYTE0 ;初始化PCI板终端控制寄存器 MOV AL,00H OUT DX,AL MOV DX,INTCSR_BYTE1 MOV AL,1FH OUT DX,AL MOV DX,INTCSR_BYTE2 MOV AL,3FH OUT DX,AL MOV DX,INTCSR_BYTE3 MOV AL,00H OUT DX,AL MOV AX,0000H ;保存和替换中断向量 MOV ES,AX MOV DI, 01C4H ;INT 71H,01C4H=71H*4 MOV AX,ES:[DI] MOV IPBAK,AX ; 保存IP MOV AX,OFFSET MYINT;放入新的中断处理程序的IP CLD STOSW MOV AX,ES:[DI] ;保存CS MOV CSBAK,AX MOV AX,SEG MYINT ;放入新的中断处理程序的CS STOSW IN AL,0A1H ;取从片中断屏蔽寄存器IMR的内容 MOV MKBAK,AL AND AL,00FDH ;0FCh- OUT 0A1H,AL ;允许从片8259第2号中断 STI A1: NOP CALL BREAK JMP A1 MYINT: PUSH DS PUSH AX PUSH DX MOV DX,IMB4_BYTE3 ;清PCI中断标志 IN AL,DX MOV DX,INTCSR_BYTE2 MOV AL,3FH OUT DX,AL MOV AL,61H OUT 0A0H,AL ;结束从片IRQ9对应的中断 MOV AL,62H ; OUT 20H,AL ;结束主片IRQ2对应的中断 MOV AH,0EH ;显示字符‘7’ MOV AL,37H INT 10H ;BIOS功能调用 POP DX POP AX POP DS IRET BREAK PROC NEAR PUSH DS MOV AH,06H ;DOS功能调用 MOV DL,0FFH ;DL=0FFH表示单个字符输入 INT 21H JE RETURN ;若不退出,转RETURN POP DS ;以下为退出时的程序段 CLI MOV AL,MKBAK OUT 0A1H,AL MOV AX,0000H ;恢复原中断向量 MOV ES,AX MOV DI, 01C4H ;INT 71H,01C4H=71H*4 MOV AX,IPBAK CLD STOSW MOV AX,CSBAK STOSW STI *
文档评论(0)