📄 8259.s
字号:
;
; 8259 中断控制器
;
; dis_irq :禁止8259 响应任何中断
global dis_irq
[bits 16]
dis_irq:
mov al,0xFF ; mask off all interrupts for now
out 0x21,al ; sencond 8259
dw 0x00eb,0x00eb
out 0xA1,al ;master 8259
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
%if 0
; well, that went ok, I hope. Now we have to reprogram the interrupts :-(
; we put them right after the intel-reserved hardware interrupts, at
; int 0x20-0x2F. There they won't mess up anything. Sadly IBM really
; messed this up with the original PC, and they haven't been able to
; rectify it afterwards. Thus the bios puts interrupts at 0x08-0x0f,
; which is used for the internal hardware interrupts as well. We just
; have to reprogram the 8259's, and it isn't fun.
mov al,0x11 ; initialization sequence
out 0x20,al ; send it to 8259A-1
dw 0x00eb,0x00eb ; jmp $+2, jmp $+2
out 0xA0,al ; and to 8259A-2
dw 0x00eb,0x00eb
mov al,0x20 ; start of hardware int's (0x20)
out 0x21,al
dw 0x00eb,0x00eb
mov al,0x28 ; start of hardware int's 2 (0x28)
out 0xA1,al
dw 0x00eb,0x00eb
mov al,0x04 ; 8259-1 is master
out 0x21,al
dw 0x00eb,0x00eb
mov al,0x02 ; 8259-2 is slave
out 0xA1,al
dw 0x00eb,0x00eb
mov al,0x01 ; 8086 mode for both
out 0x21,al
dw 0x00eb,0x00eb
out 0xA1,al
dw 0x00eb,0x00eb
mov al,0xFF ; mask off all interrupts for now
out 0x21,al
dw 0x00eb,0x00eb
out 0xA1,al
%endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -