将标准的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 FORMATEXTRN FOPEN:FAR, FCREATE:FAR, FREAD:FAR, FWRITE:FAREXTRN FSIZE:FAR, FPOS:FAR CODE SEGMENTASSUME 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 0DW 0BEGIN: MOV AX, CSMOV DS, AXMOV ES, AXMOV DX, OFFSET SOURCEMOV AL, 00CALL FOPENJNC NETTEJMP ERROR NETTE:MOV SFINO, AXMOV DX, OFFSET DESTMOV AL, 01CALL FCREATEJC ERRORMOV DFINO, AXMOV AX, SFINOCALL FSIZEJC ERRORMOV TSIZE, AXMOV TSIZE+2, DXMOV AL, 00XOR CX, CXMOV DX, CXMOV BX, SFINOCALL FPOS CONTI:MOV AX, SFINOMOV DX, OFFSET SBUFFMOV CX, 32CALL FREADJC ERRORMOV DI, OFFSET DBUFFCLDMOV CX, 16MOV SI, OFFSET SBUFF REPEA1:MOVSBINC SILOOP REPEA1MOV CX, 16MOV SI, OFFSET SBUFF+1 REPEA2:MOVSBINC SILOOP REPEA2MOV DX, OFFSET DBUFFMOV AX, DFINOMOV CX, 32CALL FWRITEJC ERRORDB 66HMOV AX, 32DW 0DB 66HSUB TSIZE, AXJZ OVERJMP CONTIOVER:MOV DX, OFFSET GOODINFO SHOO:MOV AH, 09INT 21HMOV AH, 4CHINT 21HERROR:MOV DX, OFFSET ERRINFOJMP SHOO CODE ENDSEND BEGIN