asm汇编源代码之-字库转换程序

发布于:2025-04-14 ⋅ 阅读:(21) ⋅ 点赞:(0)

将标准的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

 


网站公告

今日签到

点亮在社区的每一天
去签到