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

将标准的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
相关推荐
dw.z14 天前
VSCode+EIDE通过KeilC51编译,使VSCode+EIDE“支持”C和ASM混编
c语言·ide·vscode·混编·asm
ok0602 个月前
汇编(六)——汇编语言程序格式及MASM
汇编·asm
好记忆不如烂笔头abc5 个月前
一体机cell服务器更换内存步骤
asm
施嘉伟5 个月前
Oracle添加ASM磁盘故障
数据库·oracle·asm
莳花微语6 个月前
Oracle ASM存储学习和相关视图
数据库·oracle·asm
charlie1145141917 个月前
简单汇编教程10 数组
汇编·学习·nasm·asm·ia32
charlie1145141918 个月前
基于x86_64汇编语言简单教程6: 变量,常量,与运算
汇编·学习·教程·asm
hcgeng1 年前
Android网络性能监控方案 android线上性能监测
前端·asm
zengk5621 年前
一、认识 JVM 规范(JVM 概述、字节码指令集、Class文件解析、ASM)
java·jvm·asm·class字节码