求大家帮忙看下这个程序,为什么在第一个状态的时候无法进入中断?

[复制链接]
查看11 | 回复0 | 2021-1-27 06:35:02 | 显示全部楼层 |阅读模式
STACKSEGMENTSTACK
DB200DUP(0)
STACKENDS
DATASEGMENT
TIMEDB00H,06H
COUNTDW0
INT0EQU220H
INT1EQU221H
P8255KEQU21BH
P8255AEQU218H
B8279EQU212H
DB279EQU210H
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
;IRQ0中断向量
PUSHDS
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETIRQ7
ADDAX,2000H
MOVSI,0020H
MOV[SI],AX
MOVAX,0000H
MOVSI,0022H
MOV[SI],AX
MOVAL,13H;ICW1
MOVDX,INT0
OUTDX,AL
MOVAL,8
MOVDX,INT1;ICW2
OUTDX,AL
MOVAL,0FEH;OCW1
OUTDX,AL
MOVDX,INT0
MOVAL,20H
OUTDX,AL
CLI
POPDS
INAL,21H
ANDAL,0FEH;清除对IRQ0的中断
OUT21H,AL
NORMAL:MOVAL,80H;8255初始化,A,B口方式0输出,C口输出
MOVDX,P8255K
OUTDX,AL
MOVAL,0B6H;8253初始化,计数器2方式3
MOVDX,203H
OUTDX,AL
MOVAX,59650;初值,50ms产生一次中断
MOVDX,202H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVCOUNT,0
STI
FANS1:MOVAL,82H
MOVDX,P8255A
OUTDX,AL
CMPCOUNT,20
JLFANS1
MOVCOUNT,0
MOVDI,OFFSETTIME
MOVAL,[DI+1]
CMPAL,00H
JZA5
MOVAL,[DI]
CMPAL,00H
JZA6
DECAL
MOV[DI],AL
JMPFANS1
A5:MOVAL,[DI]
CMPAL,06H
JZA0
DECAL
MOV[DI],AL
JMPFANS1
A6:MOVAL,9
MOV[DI],AL
MOVAL,[DI+1]
DECAL
MOV[DI+1],AL
JMPFANS1
A0:MOVAL,05H
MOV[DI],AL
JMPFANS2
FANS2:MOVAL,81H
MOVDX,P8255A
OUTDX,AL
CMPCOUNT,20
JLFANS2
MOVCOUNT,0
MOVDI,OFFSETTIME
MOVAL,[DI]
CMPAL,01H
JZA7
DECAL
MOV[DI],AL
JMPFANS2
A7:MOVAL,4
MOV[DI+1],AL
MOVAL,5
MOV[DI],AL
JMPFANS3
FANS3:MOVAL,44H
MOVDX,P8255A
OUTDX,AL
CMPCOUNT,20
JLFANS3
MOVCOUNT,0
MOVDI,OFFSETTIME
MOVAL,[DI+1]
CMPAL,00H
JZA8
MOVAL,00H
JZA9
DECAL
MOV[DI],AL
JMPFANS3
A8:MOVAL,[DI]
CMPAL,06H
JZA1
DECAL
MOV[DI],AL
JMPFANS3
A9:MOVAL,9
MOV[DI],AL
MOVAL,[DI+1]
DECAL
MOV[DI+1],AL
JMPFANS3
A1:MOVAL,05H
MOV[DI],AL
JMPFANS4
FANS4:MOVAL,24H
MOVDX,P8255A
OUTDX,AL
CMPCOUNT,20
JLFANS4
MOVCOUNT,0
MOVDI,OFFSETTIME
MOVAL,[DI]
CMPAL,01H
JZA10
DECAL
MOV[DI],AL
JMPFANS4
A10:MOVAL,6
MOV[DI+1],AL
MOVAL,0
MOV[DI],AL
JMPFANS1
IRQ0:INCCOUNT
MOVAL,20H
OUT20H,AL
IRET
CODEENDS
ENDSTART
分 -->
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行