将标准的16x16点阵汉字库(下载16x16汉字库)转换成适合VGA文本模式下显示的点阵汉字库
本程序需要调用file.asm中的子程序,所以连接时需要把file连接进来,如下
C:\> tlink chghzk + file
调用参数描述如下
|---------------------------------------------------------------------|
| C:\> chghzk ; 无调用参数,转换标准库文件(SRC16.FNT)为适合VGA文本模式显示的汉字库(DST16.FNT) |
; more source code at http://www.ahjoe.com/source/srcdown.asp
; CHANG A 16*16 HZK FILE TO VIDEO CHAR FORMAT
EXTRN FOPEN:FAR, FCREATE:FAR, FREAD:FAR, FWRITE:FAR
EXTRN FSIZE:FAR, FPOS:FAR
CODE SEGMENT
ASSUME CS:CODE
SOURCE DB 'SRC16.FNT',0
DEST DB 'DST16.FNT',0
ERRINFO DB 'ERROR!',07,0DH,0AH,'$'
GOODINFO DB 'GOOD!',0DH,0AH,'$'
SBUFF DW 16 DUP (0)
DBUFF DW 16 DUP (0)
SFINO DW 0FFH
DFINO DW 0FFH
TSIZE DW 0
DW 0
BEGIN: MOV AX, CS
MOV DS, AX
MOV ES, AX
MOV DX, OFFSET SOURCE
MOV AL, 00
CALL FOPEN
JNC NETTE
JMP ERROR
NETTE:
MOV SFINO, AX
MOV DX, OFFSET DEST
MOV AL, 01
CALL FCREATE
JC ERROR
MOV DFINO, AX
MOV AX, SFINO
CALL FSIZE
JC ERROR
MOV TSIZE, AX
MOV TSIZE+2, DX
MOV AL, 00
XOR CX, CX
MOV DX, CX
MOV BX, SFINO
CALL FPOS
CONTI:
MOV AX, SFINO
MOV DX, OFFSET SBUFF
MOV CX, 32
CALL FREAD
JC ERROR
MOV DI, OFFSET DBUFF
CLD
MOV CX, 16
MOV SI, OFFSET SBUFF
REPEA1:
MOVSB
INC SI
LOOP REPEA1
MOV CX, 16
MOV SI, OFFSET SBUFF+1
REPEA2:
MOVSB
INC SI
LOOP REPEA2
MOV DX, OFFSET DBUFF
MOV AX, DFINO
MOV CX, 32
CALL FWRITE
JC ERROR
DB 66H
MOV AX, 32
DW 0
DB 66H
SUB TSIZE, AX
JZ OVER
JMP CONTI
OVER:
MOV DX, OFFSET GOODINFO
SHOO:
MOV AH, 09
INT 21H
MOV AH, 4CH
INT 21H
ERROR:
MOV DX, OFFSET ERRINFO
JMP SHOO
CODE ENDS
END BEGIN