| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4089 人关注过本帖, 1 人收藏
标题:[求助]关于显示汉字
取消只看楼主 加入收藏
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:3 
[求助]关于显示汉字
程序代码:
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    'D:\HZK16',0    ;字库文件名,用 UCDOS 的16点阵汉字库
 HANDLE        DW    ?            ;file handle
 DISP_DATA    DB    '罗云彬'        ;要显示的汉字
 DISP_DATA_END    EQU    THIS BYTE

 D_OPEN_ERROR    DB    'File D:\HZK16 not found !',0dh,0ah,24h

 
data ends
;

;
code segment
main proc far
assume cs:code,ds:data
start:

 push ds

 sub ax,ax

 push ax

 mov ax,data

 mov ds,ax


 mov    ax,3d00h        ;打开汉字库
 mov    dx,offset cc_file

 int    21h

 jnb    open_ok
        

 mov    ah,9

 mov    dx,offset d_open_error

 int    21h

open_ok:

 mov    handle,ax

 mov    si,offset disp_data

 mov    di,offset zi_buffer

 mov    cx,chars

 cld
ins2:

 lodsb

 mov    ah,al

 lodsb

 call    get_dots        ;读出汉字点针
 loop    ins2

 call    disp_cc            ;显示到屏幕
 MOV AX,4C00H

 INT 21H 
GET_DOTS    PROC

 push ax

 sub    ax,0a1a1h    ;汉字的内码从 A1区开始
 cwd

 mov    dl,al        ;所以绝对开始区是内码-A1
 mov    al,ah        ;点阵在字库中的位置为    
 cbw

 mov    bl,94        ;((汉字码1-A1)* 94 + 汉字码2 - A1)* 32
 mul    bl

 add    ax,dx

 mov    bx,32

 mul    bx

 mov    cx,dx

 mov    dx,ax

 mov    ax,4200h    ;移动读写指针到点阵数据位置
 mov    bx,handle

 int    21h

 mov    ah,3fh

 mov    cx,32

 mov    dx,di

 int    21h

 pop ax

 add    di,32

 ret
GET_DOTS    ENDP
DISP_CC        PROC

 mov    ax,12h        ;640*480 mode
 int    10h        ;设置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            ;16 dots/line
 mov    ah,al

 lodsb

 mov    cx,16
dh_lop2:

 shl    ax,1

 push    ax

 push    bx

 push    cx

 jc    db_color

 xor    al,al        ;back color is 0
 jmp    short db_draw
db_color:

 mov    al,color_char
db_draw:

 mov    ah,0ch

 mov    cx,bx

 xor    bh,bh

 int    10h

 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

 int    16h

 mov    ax,3

 int    10h

 ret
DISP_CC        ENDP
ZI_BUFFER    EQU    THIS BYTE

main endp
code ends

 end start


我这个程序,HZK16在,为什么一直提示File D:\HZK16 not found !
搜索更多相关主题的帖子: 汉字 
2016-12-01 09:37
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
有的
图片附件: 游客没有浏览图片的权限,请 登录注册

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-12-02 09:18
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
放在同一个目录下可以找到,谢谢了

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-12-03 10:43
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
你那程序写的很好

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-12-03 10:44
快速回复:[求助]关于显示汉字
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018059 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved