;L-SAO-1 列扫描码低 8 位
;L-SAO-2 列扫描码高 8 位
;H-CODE-2 行代码 2
;控制字
;H-CODE-1 行代码 1
;BL SAO FLAG
;H-CODE
;L-CODE
;XPA/XPB
XPA EQU 0FF28H
XPB EQU 0FF29H
XPC EQU 0FF2AH
XPCTL EQU 0FF2BH
;---------------------------------
PO EQU 8000H
DATA SEGMENT AT 0
ORG 1B90H
FL DB ?
RH DW ?
RL DB ?
PAG DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
ORG 2DC0H
START:
MOV DX,XPCTL
MOV AL,90H
OUT DX,AL
MOV DX,XPA
IN AL,DX
CMP AL,0FEH
JZ ZZ
JMP STARTY
JMP STARTZ
MOV DX,XPCTL
ZZ:
STARTY:
MOV AL,80H
OUT DX,AL
;控制字 80H,A 基本输入输出方式,A 输出,C 上半部输
出 B 基本输入输出,B 输出,C 下半部输出
CALL OFFLED
MOV AL,00H
MOV FL,AL
MOV PAG,XPB
X0:
X1:
MOV RH,0000H
CALL DEL1
INC RH
MOV AX,RH
AND AX,000FH
;0FF28H ;8000H ;XPA/XPB
;H-CODE
CMP AX,0000H
JNZ X2
ADD RH,0010H
x2:
CMP RH,00E0h
;4GZ
JZ START
JMP x1
DISPW: CLC
PUSH RH
MOV RL,80H
DISP1: MOV SI,RH
MOV BX,OFFSET TAB
MOV AL,CS:[BX+SI]
MOV DX,XPC
OUT DX,AL
MOV AL,CS:[BX+SI+10H]
MOV DX,PO
OUT DX,AL
;H-NUM
;L-NUM
;PA, CODE->SHANG BAN BU
;XPC,CODE->XIA BAN BU
MOV DX,PAG
MOV AL,RL
NOT AL
OUT DX,AL
MOV CX,0080H
LOOP $
CALL OFFLED
INC RH
MOV AX,RH
AND AX,000FH
CMP AX,0000H
JNZ CON2
字)
字
;显示停留时间
;不等于 0 去 con2 显示未超过 16 位(没有显示完一个
;等于 0 显示超过 16 位(显示完一个字)准备读取下一个
ADD RH,0010H
CON2:
RCR RL,1
JNC DISP1
CMP FL,00H
JNZ EXIT
INC FL
CLC
MOV RL,80H
MOV PAG,XPA
JMP DISP1
;进位为 0 半屏没显示完
;进位为 1 半屏显示完
;0FF29H
EXIT:
MOV PAG,XPB
;0FF28H
MOV FL,00H
POP RH
RET
OFFLED:
MOV DX,XPA
MOV AL,0FFH
OUT DX,AL
MOV DX,XPB
OUT DX,AL
RET
DEL1: MOV
CX,0008H
CON1:
PUSH CX
CALL DISPW
POP CX
LOOP CON1
RET
;A 口写入 0FFH
;B 口写入 0FFH
;yanshi
STARTZ:
MOV DX,XPCTL
MOV AL,80H
OUT DX,AL
;控制字 80H,A 基本输入输出方式,A 输出,C 上半部输
出 B 基本输入输出,B 输出,C 下半部输出
CALL OFFLED1
MOV AL,00H
MOV FL,AL
MOV PAG,XPA
X3:
X4:
MOV RH,0000H
CALL DEL2
INC RH
;0FF28H ;8000H ;XPA/XPB
;H-CODE
MOV AX,RH
AND AX,000FH
CMP AX,0000H
JNZ X5
ADD RH,0010H
x5:
CMP RH,00E0h
;4GZ
JZ LL
JMP LS
LL:
LS:
JMP START
JMP x4
DISPW2:
CLC
PUSH RH
MOV RL,01H
DISP2: MOV SI,RH
MOV BX,OFFSET TAB1
MOV AL,CS:[BX+SI]
MOV DX,XPC
OUT DX,AL
MOV AL,CS:[BX+SI+10H]
MOV DX,PO
OUT DX,AL
MOV DX,PAG
MOV AL,RL
NOT AL
OUT DX,AL
MOV CX,0080H
LOOP $
CALL OFFLED1
INC RH
MOV AX,RH
;H-NUM
;L-NUM
;PA, CODE->SHANG BAN BU
;XPC,CODE->XIA BAN BU
;显示停留时间
AND AX,000FH
CMP AX,0000H
JNZ CON3
字)
;不等于 0 去 con2 显示未超过 16 位(没有显示完一个
;等于 0 显示超过 16 位(显示完一个字)准备读取下一个
字
ADD RH,0010H
CON3:
RCL RL,1
JNC DISP2
CMP FL,00H
JNZ EXIT1
INC FL
CLC
MOV RL,01H
MOV PAG,XPB
JMP DISP2
;进位为 0 半屏没显示完
;进位为 1 半屏显示完
;0FF29H
EXIT1:
MOV PAG,XPA
;0FF28H
MOV FL,00H
POP RH
RET
OFFLED1: MOV DX,XPA
MOV AL,0FFH
OUT DX,AL
MOV DX,XPB
OUT DX,AL
RET
DEL2: MOV
CX,0008H
CON4:
PUSH CX
CALL DISPW2
POP CX
LOOP CON4
RET
;A 口写入 0FFH
;B 口写入 0FFH
;yanshi
TAB1:
DB 00H, 00H, 2fH, 2aH, 7aH, 2aH, 2fH, 00H, 08H, 0aH, 7fH, 0aH, 0aH, 08H ,00H,00H
DB 00H, 20H, 0a0H, 0a0H, 0feH, 0a0H, 0a0H, 20H, 80H, 80H, 0feH, 80H, 84H, 7eH,00H,00H
DB 00H, 04H, 08H, 1fH, 60H, 01H, 09H, 1aH, 6dH, 08H, 0cH, 2aH, 19H, 09H, 00H, 00H
DB 00H, 00H, 00H, 0feH, 00H, 00H, 42H, 0a2H, 94H, 88H, 94H, 0a2H, 42H, 02H, 00H, 00H
;fengqiang
DB 00H,20H,10H,08H,04H,02H,40H,40H,7FH,41H,41H,41H,7FH,01H,00H,00H
DB 00H,00H,08H,10H,20H,40H,80H,20H,20H,20H,20H,24H,02H,0FEH,00H,00H
;QIANG
DB 00H,47H,44H,44H,44H,7CH,00H,79H,49H,49H,4FH,49H,49H,79H,00H,00H
DB 00H,0C8H,44H,44H,44H,7CH,00H,0E4H,24H,24H,0FCH,24H,2CH,0E2H,02H,00H
;LIXIUSHAN
DB 00H,00H,00H,00H,02H,24H,29H,31H,0FFH,31H,29H,24H,02H,00H,00H,00H
DB 00H,00H,00H,00H,00H,20H,24H,22H,7FH,0A0H,20H,20H,00H,00H,00H,00H
DB 00H,04H,0FH,10H,21H,40H,08H,19H,36H,56H,1AH,11H,00H,00H,00H,00H
DB 00H,00H,0F8H,00H,0E0H,00H,95H,2AH,54H,0A8H,50H,20H,80H,00H,00H,00H
DB 00H,00H,00H,01H,00H,00H,00H,3FH,00H,00H,00H,01H,00H,00H,00H,00H
DB 00H,00H,00H,0FCH,04H,04H,04H,0FCH,04H,04H,04H,0FCH,00H,00H,00H,00H
TAB:
DB 00H,00H,08H,0AH,0AH,7FH,0AH,08H,00H,2FH,2AH,7AH,2AH,2FH,00H,00H
DB 00H,00H,7EH,84H,80H,0FEH,80H,80H,20H,0A0H,0A0H,0FEH,0A0H,0A0H,20H,00H
DB 00H,00H,09H,19H,2AH,0CH,08H,6DH,1AH,09H,01H,60H,1FH,08H,04H,00H
DB 00H,00H,02H,42H,0A2H,94H,88H,94H,0A2H,42H,00H,00H,0FEH,00H,00H,00H
;fengqiang
DB 00H,00H,01H,7FH,41H,41H,41H,7FH,40H,40H,02H,04H,08H,10H,20H,00H
DB 00H,00H,0FEH,02H,24H,20H,20H,20H,20H,80H,40H,20H,10H,08H,00H,00H
;QIANG
DB 00H,00H,79H,49H,49H,4FH,49H,49H,79H,00H,7CH,44H,44H,44H,47H,00H
DB 00H,02H,0E2H,2CH,24H,0FCH,24H,24H,0E4H,00H,7CH,44H,44H,44H,0C8H,00H
;LIXIUSHAN
DB 00H,00H,00H,02H,24H,29H,31H,0FFH,31H,29H,24H,02H,00H,00H,00H,00H,
DB 00H,00H,00H,00H,20H,20H,0A0H,7FH,22H,24H,20H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,11H,1AH,56H,36H,19H,08H,40H,21H,10H,0FH,04H,00H
DB 00H,00H,00H,80H,20H,50H,0A8H,54H,2AH,95H,00H,0E0H,00H,0F8H,00H,00H
DB 00H,00H,00H,00H,01H,00H,00H,00H,3FH,00H,00H,00H,01H,00H,00H,00H
DB 00H,00H,00H,00H,0FCH,04H,04H,04H,0FCH,04H,04H,04H,0FCH,00H,00H,00H
CODE ENDS
END START