漢字顯示程式設計示例

2021-04-12 23:14:11 字數 3387 閱讀 3733

data            segment

line_char    equ    

210;在螢幕上第幾行顯示

col_char    equ    

230;在螢幕上第幾列顯示

color_char    equ    0eh    ;顯示顏色

chars        equ    (offset disp_data_end 

-offset disp_data)/2

cc_file        db    

'a:hzk16',

0;字型檔檔案名,用 ucdos 的16點陣漢字型檔

handle        dw    

?;file handle

disp_data    db    

'北京博電新力

';要顯示的漢字

disp_data_end    equ    this byte

d_open_error    db    

'file a:hzk16 not found !

',0dh,0ah,24h

zi_buffer    equ    this byte

db      

320dup (?)

data            ends

code        segment

assume cs:code,ds:data

start:

mov     ax,data

mov     ds,ax

mov    ax,3d00h        ;開啟漢字型檔

mov    dx,offset cc_file

int21h

jnb    open_ok

mov    ah,

9mov    dx,offset d_open_error

int21h

mov     ax,4c00h

int21h

open_ok:

mov    handle,ax

mov    si,offset disp_data

mov    di,offset zi_buffer

mov    cx,chars

cldins2:

lodsb

mov    ah,al

lodsb

call    get_dots            ;讀出漢字點針

loop    ins2

call    disp_cc            ;顯示到螢幕

mov     ax,4c00h

int21h

get_dots    proc

push    ax

push    bx

push    cx

push    dx

sub    ax,0a1a1h            ;漢字的內碼從 a1區開始

cwdmov    dl,al                ;所以絕對開始區是內碼-a1

mov    al,ah                ;點陣在字型檔中的位置為    

cbwmov    bl,

94;((漢字碼1

-a1)*94

+漢字碼2 

-a1)*32

mul    bl

add    ax,dx

mov    bx,

32mul    bx

mov    cx,dx

mov    dx,ax

mov    ax,4200h            ;移動讀寫指標到點陣資料位置

mov    bx,handle

int21h

mov    ah,3fh

mov    cx,

32mov    dx,di

int21h

pop     dx

pop     cx

pop     bx

pop     ax

add    di,

32ret

get_dots    endp

disp_cc        proc

mov    ax,12h        ;

640*

480mode

int10h        ;設定640

*480

/16色顯示模式

mov    cx,chars

mov    si,offset zi_buffer

mov    bx,col_char-20

;bx 

=column

dh_lop0:

add    bx,

20;every 

char

column+20

push    cx

mov    cx,

16;l6 lines

/char

mov    dx,line_char    ;dx 

=start line

dh_lop1:

push    bx

push    cx

lodsb            ;

16dots

/line

mov    ah,al

lodsb

mov    cx,

16dh_lop2:

shl    ax,

1push    ax

push    bx

push    cx

jc    db_color

xor    al,al        ;back color is0

jmp    

short

db_draw

db_color:

mov    al,color_char

db_draw:

mov    ah,0ch

mov    cx,bx

xor    bh,bh

int10h

pop    cx

pop    bx

pop    ax

inc    bx        ;inc column

loop    dh_lop2

inc    dx        ;next line

pop    cx

pop    bx

loop    dh_lop1

pop    cx

loop    dh_lop0

xor    ah,ah

int16h

mov    ax,

3int

10hret

disp_cc        endp

code        ends

end start

點陣漢字顯示

由於turbo c應用於dos作業系統下,在使用turbo c進行程式設計時,一般情況下只好使用英文進行人機互動。要是想直接用中文介面,就需要另想他法了。如果使用中文dos系統 如ucdos 則可以解決在字元介面下的漢字顯示問題。也就是說,可以用printf或其他字串函式來輸出漢字。但是,這樣仍然有...

陣漢字顯示

見http dev.gameres.com program control fontdos.htm 文件內容 你是否碰到過用啟動盤啟動系統後用dir命令得到一串串莫名其妙的字元?有經驗的朋友會告訴你 那是漢字。漢字?你不禁會問 怎麼乙個我乙個也不認識。但那確確實實是漢字,如果你啟動ucdos或其他的...

點陣漢字顯示

陣漢字顯示 目錄 dos下的點陣漢字 漢字的內碼 漢字字模 漢字型檔檔案 列印字型檔檔案和hzk12 文件內容 dos下的點陣漢字 你是否碰到過用啟動盤啟動系統後用dir命令得到一串串莫名其妙的字元?有經驗的朋友會告訴你 那是漢字。漢字?你不禁會問 怎麼乙個我乙個也不認識。但那確確實實是漢字,如果你...