www.pudn.com > 16bit.rar > PCLED.ASM
TIM_CTL EQU 203H TIMER0 EQU 200H TIMER1 EQU 201H MODE03 EQU 36H MODE12 EQU 74H INTA00 EQU 20H INTA01 EQU 21H PORTSEG EQU 211H PORTBIT EQU 210H STACK SEGMENT STACK STA DW 512 DUP (?) TOP EQU LENGTH STA STACK ENDS DATA SEGMENT MIN1 DB 0 MIN2 DB 0 GAP1 DB 10 GAP2 DB 10 SEC1 DB 0 SEC2 DB 0 INTMASK DB ? CSREG DW ? IPREG DW ? COUNT DB 0 LED DB 3FH,06,5BH,4FH,66H,6DH,7DH,07,7FH,6FH,40H MES DB 'DISPLAY THE LEDS,PRESS ANY KEY TO DOS!' DB 0AH,0DH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX CLI MOV DX,TIM_CTL MOV AL,MODE03 OUT DX,AL MOV DX,TIMER0 MOV AL,00h OUT DX,AL MOV AL,02H OUT DX,AL MOV DX,TIM_CTL MOV AL,MODE12 OUT DX,AL MOV DX,TIMER1 MOV AL,0aH OUT DX,AL MOV AL,00 OUT DX,AL MOV AX,STACK MOV SS,AX MOV SP,TOP MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES MOV AH,09 INT 21H MOV AX,350AH INT 21H MOV AX,ES MOV CSREG,AX MOV IPREG,BX PUSH BX PUSH DS MOV AX,CS MOV DS,AX MOV DX,OFFSET INT_PROC MOV AX,250AH INT 21H POP DS MOV DX,INTA01 IN AL,DX MOV INTMASK,AL AND AL,0FBH OUT DX,AL AGAIN: IN AL,21H OR AL,04H OUT 21H,AL STI MOV AH,01 INT 16H PUSHF IN AL,21H AND AL,0FBH OUT 21H,AL POPF JZ AGAIN CLI POP BX MOV DX,INTA01 MOV AL,INTMASK OUT DX,AL MOV DX,IPREG MOV AX,CSREG MOV DS,AX MOV AX,250AH INT 21H STI MOV AX,4C00H INT 21H INT_PROC:PUSH AX PUSH CX PUSH DX PUSH DI MOV AX,DATA MOV DS,AX MOV DI,OFFSET MIN1 MOV CL,01 DIS1: MOV AL,[DI] MOV BX,OFFSET LED XLAT MOV DX,PORTSEG OUT DX,AL MOV AL,CL MOV DX,PORTBIT OUT DX,AL PUSH CX MOV CX,350H DELAY: LOOP DELAY POP CX CMP CL,20H JZ CHG INC DI SHL CL,1 MOV AL,00 OUT DX,AL JMP DIS1 CHG: INC COUNT CMP COUNT,50 JL QUIT MOV COUNT,0 INC SEC2 CMP SEC2,10 JL QUIT MOV SEC2,0 INC SEC1 CMP SEC1,6 JL QUIT MOV SEC1,0 INC MIN2 CMP MIN2,10 JL QUIT MOV MIN2,0 INC MIN1 CMP MIN1,6 JL QUIT MOV MIN1,0 QUIT: MOV DX,PORTBIT MOV AL,00 OUT DX,AL MOV DX,INTA00 MOV AL,20H OUT DX,AL POP DI POP DX POP CX POP AX IRET CODE ENDS END START