在dos下显示汉字 必须要读取rom中的字符 也就是说必须要获得ROM字符集首址 可以通过以下函数来读取
char far* get_ascii_rom(unsigned int reg_bx)/*获得ROM字符集首址*/ {struct REGPACK reg; reg.r_ax=0x1130; reg.r_bx=reg_bx; intr(0x10,®); return MK_FP(reg.r_es,reg.r_bp); }
写输出汉字的程序 一般来说都是自带中文字库的 也就是hzk16 下面这个程序就是演示输出中文汉字的 hzk16字库必须跟此程序在同一目录下 我用的是win-tc 里面的ccdos下有hzk16字库
#include<stdio.h>
#include<graphics.h>
main()
{
FILE *f;
unsigned char word[13]="ºº×ÖÏÔʾ³ÌÐò",buff[16][2];
int gd=DETECT,gm=0,i,j,k,n=0,x=50,y=50;
if((f=fopen("hzk16","rb"))==NULL)
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,"");
while(n!=12)
{
i=word[n++]-0xa0;
j=word[n++]-0xa0;
fseek(f,(94*(i-1)+(j-1))*32l,SEEK_SET);
fread(buff,32,1,f);
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if(buff[i][j]&(0x80>>k))putpixel(j*8+k+x,i,RED);
x+=20;
}
getch();
closegraph();
}