CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,0
MOV ES,AX
MOV BX,4*80H
MOV ES:WORD PTR[BX],OFFSET INTRA
MOV ES:WORD PTR[BX+2],SEG INTRA
MOV AL,00010011B
OUT 20H,AL
MOV AL,10000000B
OUT 22H,AL
MOV AL,00000001B
OUT 22H,AL
MOV AL,11111110B
OUT 22H,AL
MOV AL,10000100B
OUT 66H,AL
MOV AL,00010001B
OUT 46H,AL
STI
AGAIN: MOV AL,80H
OUT 0,AL
JMP AGAIN
INTRA: PUSH AX
PUSH BX
MOV BL,00000001B
NEXT: MOV AL,BL
OUT 62H,AL
ROL BL,1
MOV AL,2
OUT 40H,AL
AGAIN1: IN AL,64H
TEST AL,00000010B
JZ AGAIN1
MOV AL,100
OUT 40H,AL
JMP NEXT
MOV AL,00100000B
OUT 20H,AL
POP BX
POP AX
IRET
MOV AH,4CH
INT 21H
CODE ENDS
END START