You are on page 1of 4

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE

PPIC_C EQU 1FH

PPIC EQU 1DH

PPIB EQU 1BH

PPIA EQU 19H

ORG 1000H

MOV AL,10000000B

OUT PPIC_C,AL

MOV AL,00000000B

OUT PPIC,AL

COUNTDOWN2:

MOV SI,OFFSET DATA1

COUNTDOWN1:

MOV AL,BYTE PTR CS:[SI]

OUT PPIA,AL

CALL TIMER

CALL C_ROTATION

CMP AL,10001110B;F

JE COUNTDOWN2

CMP AL,11000110B ;C

JE LEDFUNC1

BACKTRACK:
MOV AL,00000000B

OUT PPIB,AL ;LED OFF

INC SI

JMP COUNTDOWN1

TIMER:

MOV CX,0

TIMER1:

NOP

NOP

NOP

NOP

NOP

LOOP TIMER1

RET

C_ROTATION:

PUSH AX

MOV AL,11111110B ;A

OUT PPIA,AL

CALL TIMER

MOV AL,11011111B ;F

R1:

OUT PPIA,AL

CALL TIMER

ROR AL,1

CMP AL,11111110B

JNE R1
POP AX

RET

LEDFUNC1:

MOV AL,10000000B ;8

OUT PPIA,AL

CALL TIMER

MOV BX,OFFSET DATA2

JMP LEDFUNC2

LEDFUNC3:

INC BX

LEDFUNC2:

MOV AL,BYTE PTR ES:[BX]

OUT PPIB,AL

CALL TIMER

CMP AL,00000100B ;LED C

JNE LEDFUNC3

JMP BACKTRACK

DATA1:

DB 10001000B ;A

DB 10000000B ;B

DB 11000110B ;C

DB 11000000B ;D

DB 10000110B ;E

DB 10001110B ;F
DATA2:

DB 00000010B ;B

DB 00001000B ;D

DB 00000001B ;A

DB 00000100B ;C

CODE ENDS

END

You might also like