文本模式下图形字符的显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文本模式下图形字符的显示


| 首页 >> 编程详解 >> DOS汇编编程 | Win32ASM 论坛 | 联系站长 |


文本模式下图形字符的显示
作者:罗云彬·发布日期:1998-3-1·阅读次数:4924


概述:

在文本显示模式下,常常可以见到一些字符集里没有的字符,如几个汉字,一个电话符号,还有如 Norton 的 NDD,SPEEDISK 内的窗口边框等等。这些字符是用改变系统的显示字符集的办法实现的。具体来说,就是将一些暂时不用的字符的显示点阵换成自己定义的点阵,然后在显示这些字符时,屏幕上出来的就是自己定义的图像。当然,原来的字符将无法显示,所以,被替换的字符往往是一些不常用的制表符等字符。被替换掉的字符集将一直使用到下次用 INT 10H 的 AH=00H 功能重新设置显示模式时。

有关资料:

1.BIOS 中断 10H 的 11H 入口参数: AH = 11H

功能号入口参数出口参数
AL=00H或10H
装用户规定的字模ES:BP=指定的字符点阵
CX=装入的字符数目
DX=从哪个字符开始装入
BL=要装入的模式
BH=每个字符点阵的数据字节数


汇编编程示例:
;定义字符点阵,下面是一个电话的符号,因为用一个字符的位置显示一个电话是不够的,所以下面是两个字符点阵的数据,要注意前16字节是电话的左半边,后16字节是电话的右半边,你把下面的数据化成二进制一看便知,不过就这32字节可花了我半小时在纸上画框框,打叉叉...
;比如以下的数据是这样得到的

; ........ 0000 0000 00h
; ..xxxxxx 0011 1111 3fh
; .x...... 0100 0000 40h
; .x.xxxxx 0101 1111 5fh
; .x.x..x. 0101 0010 52h
; .xxx.x.. 0111 0100 74h
; ....x.xx 0000 1011 0bh
; ...x.x.. 0001 0100 14h
; ..x.x..x 0010 1001 29h
; .x..x.x. 0100 1010 4ah
; .x..x..x 0100 1001 49h
; .x...x.. 0100 0100 44h
; .x....xx 0100 0011 43h
; ..xxxxxx 0011 1111 3fh
; ........ 0000 0000 00h
; ........ 0000 0000 00h

CHAR db 00h,3fh,40h,5fh,52h,74h,0bh,14h ;left part of phone
db 29h,4ah,49h,44h,43h,3fh,00h,00h

db 00h,0f8h,04h,0f4h,094h,5ch,0a0h,50h ;right part of phone
db 28h,0a4h,24h,44h,84h,0f8h,00h,00h

STR db 'This is a phone:',0ceh,0cfh,'$'

...

mov ax,1100h ;功能号
mov bx,1000h ;BH=10H,每字符点阵为16字节
mov cx,2 ;共要装入2字节
mov dx,00ceh ;从00CEH开始(00CEH,00CFH)
mov es,data_segment
mov bp,offset char ;ES:BP为字符点阵数据地址
int 10h

mov ah,9

;把字符 ce,cf显示出来看看,是什么!
mov dx,offset str
int 21h





【关闭本窗口】




Copyright? 1998-2008 by 罗云彬,All Rights Reserved,所有文章版权各属于其作者,如转载请务必注明作者!

相关文档
最新文档