第1个回答 2018-03-12
.MODEL TINY
ADDR_8255_PA EQU 0F000H
ADDR_8255_PB EQU 0F001H
ADDR_8255_PC EQU 0F002H
ADDR_8255_C EQU 0F003H
ADDR_8155_PA EQU 0E101H
ADDR_8155_PB EQU 0E102H
ADDR_8155_C EQU 0E100H
LINE1 EQU ADDR_8255_PA
LINE2 EQU ADDR_8255_PB
ROW1 EQU ADDR_8255_PC
ROW2 EQU ADDR_8155_PA
.STACK 100
.DATA
;往上
JI DB 00H,40H,20H,40H,10H,40H,10H,40H,00H,40H,00H,40H,0F7H,0FEH,10H,40H
DB 10H,40H,10H,40H,10H,40H,10H,40H,14H,40H,18H,40H,10H,40H,00H,40H
AX1 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,80H,04H,40H,18H,30H,20H,08H
DB 18H,30H,04H,40H,05H,40H,0AH,0A0H,0CH,20H,00H,00H,00H,00H,00H,00H
SUAN DB 20H,40H,3EH,7EH,48H,90H,80H,00H,3FH,0F8H,20H,08H,3FH,0F8H,20H,08H
DB 3FH,0F8H,20H,08H,3FH,0F8H,08H,20H,0FFH,0FEH,08H,20H,10H,20H,20H,20H
AX2 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,80H,04H,40H,18H,30H,20H,08H
DB 18H,30H,04H,40H,05H,40H,0AH,0A0H,0CH,20H,00H,00H,00H,00H,00H,00H
JI2 DB 10H,00H,11H,0F0H,11H,10H,11H,10H,0FDH,10H,11H,10H,31H,10H,39H,10H
DB 55H,10H,55H,10H,91H,10H,11H,12H,11H,12H,12H,12H,12H,0EH,14H,00H
AX3 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,80H,04H,40H,18H,30H,20H,08H
DB 18H,30H,04H,40H,05H,40H,0AH,0A0H,0CH,20H,00H,00H,00H,00H,00H,00H
ZHUAN DB 01H,00H,01H,00H,01H,00H,3FH,0F8H,02H,00H,02H,00H,0FFH,0FEH,04H,00H
DB 08H,00H,0FH,0F0H,00H,10H,00H,20H,06H,40H,01H,80H,00H,40H,00H,20H
AX4 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,80H,04H,40H,18H,30H,20H,08H
DB 18H,30H,04H,40H,05H,40H,0AH,0A0H,0CH,20H,00H,00H,00H,00H,00H,00H
YE DB 04H,40H,04H,40H,04H,40H,04H,40H,44H,44H,24H,44H,24H,48H,14H,48H
DB 14H,50H,14H,60H,04H,40H,04H,40H,04H,40H,04H,40H,0FFH,0FEH,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;往下
JI1 DB 00H,00H,0C0H,40H,0A0H,40H,50H,40H,40H,40H,40H,40H,40H,40H,47H,0FCH
DB 40H,40H,40H,40H,40H,40H,80H,40H,0F0H,40H,20H,40H,60H,40H,80H,00H
AX11 DB 00H,00H,00H,00H,00H,00H,0CH,20H,0AH,0A0H,05H,40H,04H,40H,18H,30H
DB 20H,08H,18H,30H,04H,40H,02H,80H,02H,80H,01H,00H,00H,00H,00H,00H
SUAN1 DB 10H,20H,7FH,0FEH,08H,20H,3FH,0F8H,20H,08H,20H,08H,3FH,0F8H,20H,08H
DB 3FH,0F8H,20H,08H,20H,08H,3FH,0F8H,00H,00H,50H,0A0H,3CH,78H,10H,20H
AX21 DB 00H,00H,00H,00H,00H,00H,0CH,20H,0AH,0A0H,05H,40H,04H,40H,18H,30H
DB 20H,08H,18H,30H,04H,40H,02H,80H,02H,80H,01H,00H,00H,00H,00H,00H
JI21 DB 00H,00H,20H,00H,24H,1EH,22H,12H,21H,10H,21H,10H,0A9H,10H,79H,10H
DB 71H,10H,71H,10H,71H,10H,71H,10H,0F9H,10H,21H,10H,21H,0F0H,00H,00H
AX31 DB 00H,00H,00H,00H,00H,00H,0CH,20H,0AH,0A0H,05H,40H,04H,40H,18H,30H
DB 20H,08H,18H,30H,04H,40H,02H,80H,02H,80H,01H,00H,00H,00H,00H,00H
ZHUAN1 DB 00H,00H,01H,00H,03H,00H,04H,80H,00H,40H,00H,80H,01H,00H,01H,00H
DB 01H,00H,7FH,0FCH,01H,00H,01H,00H,1FH,0F8H,01H,00H,01H,00H,00H,00H
AX41 DB 00H,00H,00H,00H,00H,00H,0CH,20H,0AH,0A0H,05H,40H,04H,40H,18H,30H
DB 20H,08H,18H,30H,04H,40H,02H,80H,02H,80H,01H,00H,00H,00H,00H,00H
YE1 DB 00H,00H,3FH,0FCH,04H,40H,04H,40H,04H,40H,0CH,60H,14H,50H,24H,48H
DB 24H,48H,24H,48H,04H,40H,04H,40H,04H,40H,04H,40H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;往左
JI23 DB 50H,0FCH,51H,08H,3EH,10H,00H,00H,01H,00H,01H,00H,01H,00H,01H,00H
DB 3FH,0F8H,01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,00H,00H,00H,00H
AX12 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
SUAN2 DB 00H,00H,20H,02H,4FH,0FAH,0EAH,4BH,4AH,4AH,0AH,4EH,0AH,4AH,0AH,4AH
DB 0AH,4AH,2AH,4AH,4AH,4FH,0EAH,4AH,4AH,4AH,0FH,0FAH,00H,02H,00H,00H
AX22 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
JI22 DB 10H,40H,1FH,80H,7FH,0FCH,1FH,00H,10H,80H,00H,44H,00H,08H,3FH,0F0H
DB 20H,00H,20H,00H,20H,00H,3FH,0FCH,00H,04H,00H,04H,00H,1CH,00H,00H
AX32 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
ZHUAN2 DB 00H,00H,00H,00H,02H,00H,02H,00H,12H,00H,12H,00H,12H,08H,7FH,0C4H
DB 12H,26H,12H,15H,12H,08H,12H,00H,02H,00H,02H,00H,00H,00H,00H,00H
AX42 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
YE2 DB 00H,00H,00H,02H,03H,0C2H,00H,22H,00H,12H,3FH,0FEH,00H,02H,00H,02H
DB 00H,02H,00H,02H,3FH,0FEH,00H,12H,00H,22H,03H,0C2H,00H,02H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;往右
JI33 DB 00H,00H,00H,00H,00H,00H,01H,00H,01H,00H,01H,00H,01H,00H,3FH,0FCH
DB 01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,28H,10H,2FH,0C8H,48H,3CH
AX51 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
SUAN3 DB 00H,00H,00H,00H,00H,00H,00H,02H,20H,02H,77H,0FAH,25H,2FH,15H,2AH
DB 05H,2AH,05H,2AH,05H,2AH,05H,2AH,25H,2EH,77H,0FBH,20H,02H,10H,02H
AX52 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
JI32 DB 00H,00H,00H,0CH,00H,04H,00H,04H,3FH,0FCH,20H,00H,20H,00H,20H,00H
DB 3FH,0F0H,00H,08H,00H,04H,10H,40H,1FH,80H,7FH,0FCH,1FH,80H,10H,40H
AX53 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
ZHUAN3 DB 00H,00H,00H,00H,02H,00H,12H,00H,12H,00H,12H,00H,12H,10H,12H,2AH
DB 7FH,0C4H,12H,08H,12H,00H,12H,00H,12H,00H,02H,00H,00H,00H,00H,00H
AX54 DB 00H,00H,00H,00H,01H,00H,02H,80H,02H,98H,04H,68H,18H,10H,20H,20H
DB 18H,10H,04H,68H,02H,98H,02H,80H,01H,00H,00H,00H,00H,00H,00H,00H
YE3 DB 00H,00H,00H,02H,03H,82H,00H,42H,00H,22H,7FH,0FEH,00H,02H,00H,02H
DB 00H,02H,00H,02H,7FH,0FEH,00H,22H,00H,42H,03H,82H,00H,02H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
.CODE
START: MOV AX,@DATA
MOV DS,AX
MOV ES,AX
NOP
MOV DX,ADDR_8255_C
MOV AL,80H
OUT DX,AL
MOV DX,ADDR_8155_C
MOV AL,01H
OUT DX,AL
SHOW: MOV CX,9
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,04H
JZ L33
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,08H
JZ L44
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,10H
JZ L55
LEA SI,JI23
ZI: PUSH CX
MOV CX,16
HANG: CALL DISP_CH
INC SI
INC SI
LOOP HANG
POP CX
LOOP ZI
JMP SHOW
L33: LEA SI,JI1
ZI1: PUSH CX
MOV CX,16
HANG1: CALL DISP_CH
INC SI
INC SI
LOOP HANG1
POP CX
LOOP ZI1
JMP SHOW
L44: LEA SI,JI
ZI2: PUSH CX
MOV CX,16
HANG2: CALL DISP_CH
INC SI
INC SI
LOOP HANG2
POP CX
LOOP ZI2
JMP SHOW
L55: LEA SI,JI33
ZI3: PUSH CX
MOV CX,16
HANG3: CALL DISP_CH
INC SI
INC SI
LOOP HANG3
POP CX
LOOP ZI3
JMP SHOW
DISP_CH PROC NEAR
PUSH CX
MOV CX,8 //延时函数
DISP_CH_1: CALL DISP1
L1: MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,01H
JZ DISP_CH_1
LOOP DISP_CH_1
POP CX
RET
DISP_CH ENDP
DISP1 PROC NEAR
PUSH SI
PUSH CX
MOV CX,16
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,04H
JZ L31
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,08H
JZ L41
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,10H
JZ L51
MOV BL,01H
MOV BH,00H
REPEAT:MOV DX,ROW1
MOV AL,BL
OUT DX,AL
MOV DX,ROW2
MOV AL,BH
OUT DX,AL
LODSB
CALL ADJUST
NOT AL
MOV DX,LINE1
OUT DX,AL
LODSB
CALL ADJUST
NOT AL
MOV DX,LINE2
OUT DX,AL
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,02H
JZ L2
CALL DL30MS
L2: CALL DL10MS
CALL CLEAR
CLC
RCL BL,1
RCL BH,1
LOOP REPEAT
POP CX
POP SI
RET
L31: JMP DOWN
L41: JMP UP
L51: JMP RIGHT
DISP1 ENDP
UP PROC NEAR
MOV BL,0FEH
MOV BH,0FFH //行选,选中最后一行
REPEAT3:MOV DX,LINE1
MOV AL,BL
OUT DX,AL
MOV DX,LINE2
MOV AL,BH
OUT DX,AL
LODSB
CALL ADJUST
MOV DX,ROW1
OUT DX,AL
LODSB
CALL ADJUST
MOV DX,ROW2
OUT DX,AL
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,02H
JZ L23
CALL DL30MS
L23: CALL DL10MS
CALL CLEAR
STC
RCL BL,1
RCL BH,1
LOOP REPEAT3
POP CX
POP SI
RET
UP ENDP
DOWN PROC NEAR
MOV BH,07FH
MOV BL,0FFH
REPEAT2:MOV DX,LINE1
MOV AL,BL
OUT DX,AL
MOV DX,LINE2
MOV AL,BH
OUT DX,AL
LODSB
CALL ADJUST
MOV DX,ROW1
OUT DX,AL
LODSB //块装入指令
CALL ADJUST
MOV DX,ROW2
OUT DX,AL
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,02H
JZ L22
CALL DL30MS
L22: CALL DL10MS
CALL CLEAR
STC
RCR BH,1
RCR BL,1
LOOP REPEAT2
POP CX
POP SI
RET
DOWN ENDP
LEFT PROC NEAR
MOV BL,01H
MOV BH,00H
REPEAT4:MOV DX,ROW1
MOV AL,BL
OUT DX,AL
MOV DX,ROW2
MOV AL,BH
OUT DX,AL
LODSB
CALL ADJUST
NOT AL
MOV DX,LINE1
OUT DX,AL
LODSB
CALL ADJUST
NOT AL
MOV DX,LINE2
OUT DX,AL
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,02H
JZ L24
CALL DL30MS
L24: CALL DL10MS
CALL CLEAR
CLC
RCL BL,1
RCL BH,1
LOOP REPEAT4
POP CX
POP SI
RET
LEFT ENDP
RIGHT PROC NEAR
MOV BH,80H
MOV BL,00H
REPEAT5:MOV DX,ROW1
MOV AL,BL
OUT DX,AL
MOV DX,ROW2
MOV AL,BH
OUT DX,AL
LODSB
CALL ADJUST
NOT AL
MOV DX,LINE1
OUT DX,AL
LODSB
CALL ADJUST
NOT AL
MOV DX,LINE2
OUT DX,AL
MOV DX,ADDR_8155_PB
IN AL,DX
TEST AL,02H
JZ L25
CALL DL30MS
L25: CALL DL10MS
CALL CLEAR
CLC
RCR BH,1
RCR BL,1
LOOP REPEAT5
POP CX
POP SI
RET
RIGHT ENDP
CLEAR PROC NEAR
MOV AL,0FFH
MOV DX,LINE1
OUT DX,AL
MOV DX,LINE2
OUT DX,AL
MOV AL,0
MOV DX,ROW1
OUT DX,AL
MOV DX,ROW2
OUT DX,AL
RET
CLEAR ENDP
ADJUST PROC NEAR
PUSH CX
MOV CX,8
ADJUST1:RCL AL,1
XCHG AL,AH
RCR AL,1
XCHG AL,AH
LOOP ADJUST1
MOV AL,AH
POP CX
RET
ADJUST ENDP
DL10ms PROC NEAR
PUSH CX
MOV CX,50
LOOP $
POP CX
RET
DL10ms ENDP
DL30ms PROC NEAR
PUSH CX
MOV CX,200
LOOP $
POP CX
RET
DL30ms ENDP
END START