DATA SEGMENT
Times DW 0,0
Didas0 equ 5 ;延迟0.3秒
Didas1 equ 8 ;延迟0.5秒
Didas2 equ 11 ;延迟0.7秒
Didas3 equ 14 ;延迟0.85秒
Didas4 equ 18 ;延迟0.9秒
TABF DW 4554,4058,3615,3409,3036,2706,2410,2146,4554,4058,3615,3409,3036,2706,2410,2146,0
TABT DB 200,200,200,200,200,200,200,200,200,200,200,200,200,200,200
N1 EQU 1
N2 EQU 1000
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV AL,10110110B
OUT 43H,AL
;IN AL,61H
;OR AL,00000011B
;OUT 61H,AL
MOV AL,80H
MOV DX,63H
OUT DX,AL
MOV AL,0FFH
MOV DX,61H
OUT DX,AL
AGA: MOV SI,OFFSET TABF
MOV DI,OFFSET TABT
LAST: CMP WORD PTR[SI],0
JZ AGA
;MOV DX,12H
;MOV AX,34DEH
;DIV WORD PTR[SI]
MOV AX,[SI]
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
CALL DELAY
ADD SI,2
INC DI
MOV AH,1
INT 16H
JE LAST
;IN AL,61H
;AND AL,11111100B
;OUT 61H,AL
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH DX
PUSH CX
MOV CX,0
MOV DH,0
MOV DL,[DI]
MOV AH,0
INT 1AH
mov Times,dx
mov Times[2],cx
Read_Time7:MOV AX,0
int 1ah
sub dx,Times
sbb cx,Times[2]
cmp dx,Didas0
jb Read_Time7
POP CX
POP DX
RET
DELAY ENDP
CODE ENDS
END BEG