Professional Documents
Culture Documents
4 Segment Wonder
4 Segment Wonder
MAINLOOP:
CALL TAKE_INPUT
RET
START ENDP
TAKE_INPUT PROC NEAR
MOV SI, 0
ENDLESS:
XOR AX,AX
CALL SHOW
ACTIVE_FIRST_COL:
MOV AL, 00100000b
OUT 0ABh, AL
IN AL, 0ADh
AND AL, 0Fh
JNZ CHECK_FIRST_COL
ACTIVE_SECOND_COL:
MOV AL, 01000000b
OUT 0ABh, AL
IN AL, 0ADh
AND AL, 0Fh
JNZ CHECK_SECOND_COL
ACTIVE_THIRD_COL:
MOV AL, 10000000b
OUT 0ABh, AL
IN AL, 0ADh
AND AL, 0Fh
JNZ CHECK_THIRD_COL
CHECK_FIRST_COL:
CHECK_ONE:
TEST AL, 01h
JZ CHECK_FOUR
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[1]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_FOUR:
TEST AL, 02h
JZ CHECK_SEVEN
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[4]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_SEVEN:
TEST AL, 04h
JZ CHECK_STAR
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[7]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_STAR:
TEST AL, 08h
JZ ENDLESS
CMP SI,5
JZ MAKE_ALL_ZERO
INC SI
JMP ENDLESS
CHECK_SECOND_COL:
CHECK_TWO:
TEST AL, 01h
JZ CHECK_FIVE
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[2]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_FIVE:
TEST AL, 02h
JZ CHECK_EIGHT
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[5]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_EIGHT:
TEST AL, 04h
JZ CHECK_ZERO
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[8]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_ZERO:
TEST AL, 08h
JZ ENDLESS
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[0]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_THIRD_COL:
CHECK_THREE:
TEST AL, 01h
JZ CHECK_SIX
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[3]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_SIX:
TEST AL, 02h
JZ CHECK_NINE
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[6]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_NINE:
TEST AL, 04h
JZ CHECK_HASH
CALL SAVE_DELETED_DIGIT
MOV BL, DIGITS[9]
CALL SCROLL_TO_LEFT
CALL SHOW
JMP ENDLESS
CHECK_HASH:
TEST AL, 08h
JZ ENDLESS
CALL SCROLL_TO_RIGHT
JMP ENDLESS
MAKE_ALL_ZERO:
MOV AH, DIGITS[0]
MOV BL, AH
MOV BH, AH
MOV DL, AH
MOV DH, AH
JMP ENDLESS
RET
TAKE_INPUT ENDP
MOV AL, 1h
OUT 0ABh, AL
MOV AL, BL
OUT 0A9h, AL
CALL WAIT_A_LITTLE
MOV AL, 2h
OUT 0ABh, AL
MOV AL, BH
OUT 0A9h, AL
CALL WAIT_A_LITTLE
MOV AL, 4h
OUT 0ABh, AL
MOV AL, DL
OUT 0A9h, AL
CALL WAIT_A_LITTLE
MOV AL, 8h
OUT 0ABh, AL
MOV AL, DH
OUT 0A9h, AL
CALL WAIT_A_LITTLE
RET
SHOW_NUMBERS ENDP
RET
SCROLL_TO_RIGHT ENDP
MOV AL, BL
MOV DI, AX
MOV BX, 50
CMP DELPTR, BX
JL END_OF_DELETE_DIGIT
XOR BX,BX
MOV DELPTR, BX
END_OF_DELETE_DIGIT:
POP BX
RET
SAVE_DELETED_DIGIT ENDP