目录 上一页 下一页 下一章

第9章 图形显示 -247-

表9-1 汉字库中部分字符与汉字的内码
区位内码字符区位内码字符区位内码字符区位内码字符
0102A2A10401A1A41601A1B08785F5F7
0103A3A10402A2A41602A2B08786F6F7
0104A4A1·0403A3A41603A3B08787F7F7
0105A5A1ˉ0404A4A41604A4B08788F8F7
0106A6A1ˇ0405A5A41605A5B08789F9F7
0107A7A1¨0406A6A41606A6B08790FAF7
0108A8A10407A7A41607A7B08791FBF7
0109A9A10408A8A41608A8B08792FCF7
0110AAA10409A9A41609A9B08793FDF7
0111ABA1~0410AAA41610AAB08794FEF7
  知道了某个汉字在字库中的偏移量,又知道一个16 16点的汉字其字模数据为32个字节,就能计算出这个汉字的字模数据在字模库文件中的偏移量,从而可以利用DOS提供的移动文件读写指针的功能定位文件指针并读出字模数据。DOTMAP程序显示的第一个汉字是"文",它的内码是"0C4CEH",根据刚刚给出的公式,可以计算出它的字模数据在字模库文件HZK16中的偏移位置为"[(0CEH-0A1H) 94+(0C4H-0A1H)] 32=21520H",这就是程序中"OFF"数组中定义的第一个数据。下面这个程序就是由DOTMAP程序改进而得,用以验证上述的算法:
DOTMAP2.
data
assume
fname
buffer
hanzi
msg
data
code
assume
main











ASM
segment
ds:data
db
db
db
db
ends
segment
cs: code
proc
mov
mov

mov
mov
int
jc

mov
mov
mov



'hzk16',0
32 dup(0)
'文化,中国'
'Press any key to d



far
ax,data
ds,ax

dx,offset fname
ax,3d00h
21h
exit

cx,5
bx,ax
si,offset hanzi



;UCDOS的显示字模库文件
;文件缓冲区
;待显示的5个汉字字符
isplay the next font.',0dh,0ah,24h




;初始化DS寄存器


;打开字模库文件


;若文件操作出错,转EXIT结束进程

;显示5个汉字字符
;文件读写指针送入BX寄存器
;SI寄存器指向汉字串

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章