📄 wanzheng.asm.txt
字号:
CODE SEGMENT
ASSUME CS:CODE
ORG 1000H
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
INTPORT1 EQU 0020H
INTPORT2 EQU 0021H
INTQ3 EQU INTREEUP3
IOCONPT EQU 0073H
IOCPT EQU 0072H
IOBPT EQU 0071H
TCONTRO EQU 004BH
TCON2 EQU 004AH
ADPORT EQU 0060H
START:JMP M
SEGPT DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
B3 DB 0H
B2 DB 0H
B1 DB 0H
SUM DB 0H
F1 DB 0H
M: MOV AL,89H ;INIT 8255
MOV DX,IOCONPT
OUT DX,AL
MOV DX,IOBPT
MOV AL,0FFH
OUT DX,AL
GO: MOV DX,IOCPT
IN AL,DX
CMP F1,1
JZ N
TEST AL,10H
JNZ INPUT
N: IN AL,DX
AND AL,01H
JZ GO
CALL XIANG
WORK: MOV DX,CONTPORT
MOV AL,0AFH ; OFF LED
OUT DX,AL
KS: MOV AL,0FFH
MOV DX,IOBPT
OUT DX,AL
MOV DX,IOCPT
IN AL,DX
MOV CL,AL
MOV AL,0FEH
MOV DX,IOBPT
OUT DX,AL
MOV AL,CL
TEST AL,02H
JNZ KS2
TEST AL,04H
JNZ KS3
TEST AL,08H
JNZ KS4
JMP KS
KS2: MOV AL,0FCH
MOV DX,IOBPT
OUT DX,AL
JMP KBBB
KS3: MOV AL,0FAH
MOV DX,IOBPT
OUT DX,AL
JMP KBBB
KS4: MOV AL,0F6H
MOV DX,IOBPT
OUT DX,AL
JMP KBBB
KBBB:
MOV AX,00
MOV DX,ADPORT
OUT DX,AL
MOV CX,0FFFFH
KLOOP1: LOOP KLOOP1
MOV DX,ADPORT
IN AL,DX
CMP AL,050H
JA KABOVE
JMP KS
KABOVE: MOV AL,0EEH
MOV DX,IOBPT
OUT DX,AL
JMP KBBB
RET
INPUT: INC F1
MOV DX, CONTPORT ;INPUT AND TIMER
MOV AL,00H
OUT DX,AL
LEA SI,B3
MOV CX,3
LOOP1: MOV DX,CONTPORT
IN AL,DX
TEST AL,07H
JZ LOOP1
MOV AL,40H
OUT DX,AL
MOV DX,DATAPORT
IN AL,DX
MOV [SI],AL
INC SI
LOOP LOOP1
S1:
MOV DX,CONTPORT
MOV AL,00H
OUT DX,AL
MOV AL,90H
OUT DX,AL
MOV CX,3
DEC SI
LOOP2: MOV DX,DATAPORT
MOV AL,[SI]
DEC SI
MOV BX,OFFSET SEGPT
XLAT
OUT DX,AL
LOOP LOOP2
JMP GO
XIANG: MOV DX,IOBPT
MOV AL,0FEH
OUT DX,AL
CMP F1,0
JNZ YE
CALL WORK
YE: MOV AX,0H ;WRITE INTREEUP ADDRESS
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ3
STOSW
MOV AX,CS
STOSW
MOV DX,TCONTRO ;INIT 8253
MOV AL,0B0H
OUT DX,AL
MOV DX,TCON2
MOV AL,10H
OUT DX,AL
MOV AL,27H
OUT DX,AL
MOV DX,CONTPORT
MOV AL,0AFH ; OFF LED
OUT DX,AL
MOV AL,0D1H ;XOR RAM FIFO
OUT DX,AL
MOV AL,0A0H ;ON LED
OUT DX,AL
MOV AL,00H ;WRITE MODE
OUT DX,AL
G1: MOV BX,OFFSET SEGPT
MOV DX,CONTPORT
MOV AL,90H
OUT DX,AL
MOV CX,0FFH
LL: LOOP LL
MOV DX,DATAPORT
MOV AL,6DH
OUT DX,AL
MOV AL,6DH
OUT DX,AL
MOV AL,B1
XLAT
OUT DX,AL
MOV AL,B2
XLAT
OUT DX,AL
MOV AL,B3
XLAT
OUT DX,AL
MOV DI,OFFSET SEGPT
ADD DI,4
G2: MOV SI,OFFSET SEGPT
ADD SI,9
MIAO1: MOV AL,80H
MOV DX,CONTPORT
OUT DX,AL
MOV DX,DATAPORT
MOV AL,[SI]
OUT DX,AL
CALL INIT ; ONE SECOND INTR
DEC SI
CMP SI,1002H
JNZ MIAO1
JMP MIAO2
MIAO2: MOV DX,CONTPORT
MOV AL,81H
OUT DX,AL
MOV AL,[DI]
MOV DX,DATAPORT
OUT DX,AL
CMP DI,1002H
JZ SHI1
DEC DI
JMP G2
SHI1:
MOV DX,CONTPORT
MOV AL,82H
OUT DX,AL
MOV AL,B1
MOV BX,OFFSET SEGPT
XLAT
MOV DX,DATAPORT
OUT DX,AL
CMP B1,0
JZ RE
DEC B1
JMP G1
RE: MOV B1,9
MOV DX,CONTPORT
MOV AL,83H
OUT DX,AL
MOV AL,B2
XLAT
MOV DX,DATAPORT
OUT DX,AL
CMP B2,0
JZ LAST
DEC B2
JMP G1
LAST: MOV B2,5
MOV DX,CONTPORT
MOV AL,84H
OUT DX,AL
MOV AL,B3
XLAT
MOV DX,DATAPORT
OUT DX,AL
CMP B3,0
JZ ENDTI
DEC B3
JMP G1
INIT: MOV AL,13H ;INIT 8259
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
STI
MOV SUM,0
WATING: CMP SUM,100
JE EXIT
JMP WATING
INTREEUP3:
CLI
ADD SUM,1
MOV DX,TCON2
MOV AL,10H
OUT DX,AL
MOV AL,27H
OUT DX,AL
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
STI
IRET
EXIT: RET
ENDTI: RET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -