mov dx,04a0h mov ax,13h
out dx,ax ;ICW1, ICW4 NEEDED mov dx,04a2h
mov ax,80h
out dx,ax ;ICW2
v h
mov ax,01h;01
out dx,ax ;ICW4mov ax,00h
中断类型80h
out dx,ax ;OCW1, 开放所有中断nop ;以上为8259初始化 mov ax,0
mov ds,ax
mov di,200h ;初始化中断向量表mov ax,offset int0mov ds:[di],axadd di,2
mov ds:[di],100hadd di,2
mov ax,offset int1mov ds:[di],axadd di,2
mov ds:[di],100hadd di,2
mov ax,offset int2mov ds:[di],axadd di,2
mov ds:[di],100hadd di,2
mov ax,offset int3mov ds:[di],axadd di,2
mov ds:[di],100hadd di,2
mov ax,offset int4mov ds:[di],axadd di,2
mov ds:[di],100hadd di,2
mov ax,offset int5mov ds:[di],axadd di,2
mov ds:[di],100hadd di,2
mov ax,offset int6mov ds:[di],axadd di,2
mov ds:[di],100hadd di,2
mov ax,offset int7mov ds:[di],ax
add di,2 ;序
mov ds:[di],100h ;main: mov ax,0
上述程序为芯片8259的初始化程建议不熟练者不要修改。sti ;开中断。waiting: cmp ax,0h
je waiting ;没发生中断,则等待
mov dx,04b0h
out dx,ax ;对应LED灯亮mov cx,0
delay1: loop delay1 ;
jmp start1
int0: cli ;nop ;mov ax,0feh ;iret ;int1: cli
nop ;mov ax,0fdh ;iretint2: cli
nop ;mov ax,0fbh ;iretint3: cli
nop ;数字滤波,按键去抖关中断。以下类推。
此两行为IR0的中断服务程序用户可修改。
中断返回,以下类推。此两行为IR1的中断服务程序,用户可修改。此两行为IR2的中断服务程序,用户可修改。此两行为IR3的中断服务程序,
mov ax,0f7h ;用户可修改。iretint4: cli
nop ;此两行为IR4的中断服务程序,mov ax,0efh ;用户可修改。iretint5: cli
nop ;mov ax,0dfh ;iretint6: cli
nop ;mov ax,0bfh ;iretint7: cli
nop ;mov ax,07fh ;iret
code endsend start
此两行为IR5的中断服务程序,用户可修改。此两行为IR6的中断服务程序,用户可修改。此两行为IR7的中断服务程序,用户可修改。
因篇幅问题不能全部显示,请点此查看更多更全内容