ppqks

IOY0    EQU    0600H
MY8255_A    EQU    IOY0+00H*2
MY8255_B    EQU    IOY0+01H*2
MY8255_C    EQU    IOY0+02H*2
MY8255_CON    EQU    IOY0+03H*2
SSTACK    SEGMENT STACK
          DW 16 DUP(?)
SSTACK    ENDS
DATA    SEGMENT
DTABLE    DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
FEN    DB 00H,00H
LED    DB 00H
HZ     DB 05FH
FLAG DB 00H,00H,00H
DATA    ENDS
CODE    SEGMENT
        ASSUME CS:CODE,DS:DATA
START:  MOV AX,DATA
        MOV DS,AX
		MOV SI,3000H
		MOV DI,3005H
		MOV BX,0
		MOV AH,01H
		MOV DX,MY8255_CON
		MOV AL,81H
		OUT DX,AL
		CALL CLEAR
FIRST:  CALL KAISHI
BEGIN:  CALL BISAI
        CALL INK
		CALL DELAY
		JMP BEGIN
BISAI:  MOV AH,FLAG+1
        CALL CCSCAN
		AND AL,0FH
		CMP AL,08H
		JNC NEXT2
		CALL CLEAR
		CALL KAISHI
		RET
NEXT2:  AND AL,07H
        CMP AL,04H
		JNC NEXT1
		CALL KAISHI
		RET
NEXT1:  CMP AL,AH
        JZ JUDGE
		MOV FLAG+1,AL
		AND AL,03H
		AND AL,01H
		AND AH,01H
		CMP AL,AH
		JNZ B2
B1:     MOV AL,LED
        CMP AL,80H
		JNZ JUDGE
		MOV FLAG,02H
		JMP JUDGE
B2:     MOV AL,LED
        CMP AL,01H
		JNZ JUDGE
		MOV FLAG,00H
		JMP JUDGE
JUDGE:  MOV AL,LED
        CMP AL,01H
		JNC NEXT
		RET
NEXT:   MOV AL,FLAG
        CMP AL,01H
		JNC L2
L1:     MOV AL,HZ
        DEC AL
		JNZ L12
		MOV AL,LED
		SHL AL,1
		MOV DX,MY8255_B
		OUT DX,AL
		MOV LED,AL
		CMP AL,01H
		JNC L11
		MOV AL,FEN+1
		ADD AL,1
		MOV FEN+1,AL
L11:    MOV AL,5FH
L12:    MOV HZ,AL
            JMP KERR
L2:     MOV AL,HZ
        DEC AL
		JNZ L22
		MOV AL,LED
		SHR AL,1
		MOV DX,MY8255_B
		OUT DX,AL
		MOV LED,AL
		CMP AL,01H
		JNC L21
		MOV AL,FEN
		ADD AL,1
		MOV FEN,AL
L21:    MOV AL,5FH
L22:    MOV HZ,AL
            RET
KAISHI:
        MOV AH,FEN
		MOV AL,FEN+1
		CMP AH,AL
		JNC NEXTX
		MOV LED,01H
		MOV FLAG,00H
		MOV AL,01H
		MOV DX,MY8255_B
		OUT DX,AL
NEXTX:  MOV LED,80H
        MOV FLAG,02H
		MOV AL,80H
		MOV DX,MY8255_B
		OUT DX,AL
		RET
INK:    MOV DX,MY8255_C
        MOV AL,0EFH
		OUT DX,AL
		MOV DX,MY8255_A
		MOV BH,00H
		MOV BL,FEN
		MOV AL,DTABLE[BX]
		OUT DX,AL
		CALL DELAY
		
		MOV DX,MY8255_C
		MOV AL,0DFH
		OUT DX,AL
		MOV DX,MY8255_A
		MOV BL,FEN+1
		MOV AL,DTABLE[BX]
		OUT DX,AL
		CALL DELAY
KERR:   RET
CCSCAN: MOV DX,MY8255_C
        IN AL,DX
		RET
DELAY:
        PUSH CX
		PUSH AX
		MOV CX,0006H
T1:     MOV AX,009FH
T2:     DEC AX
        JNZ T2
		LOOP T1
		POP AX
		POP CX
		RET
CLEAR:  MOV DX,MY8255_C
        MOV AL,0CFH
		OUT DX,AL
		MOV DX,MY8255_A
		MOV AL,03FH
		OUT DX,AL
		MOV FEN,00H
		MOV FEN+1,00H
		RET
GOBACK: RET
CODE ENDS
END START

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值