请问在纯DOS汇编,如何才能显示汉字?
.model small
.stack 200h
.data
szMsg db 'Hello World!我是李生',13,10,'$'
.CODE
START:
mov ax,@data
mov ds,ax
lea dx,szMsg
mov ah,9
int 21h
;暂停,任意键关闭
mov ah,1
int 21h
mov ah,4ch ;结束,可以修改al设置返回码
int 21h
END START
编译之后,这个“我是李生”是乱码,请教如何才能显示汉字?
谢谢先
------解决方案--------------------------------------------------------
系统中断提供的是ascii,要用第三方的库,如c的dos16运行库
------解决方案--------------------------------------------------------
可以使用UCDOS
------解决方案--------------------------------------------------------
C的是有,汇编的没见过
适用于C语言编程中汉字显示程序。以下是使用范例:
http://download.csdn.net/source/604747
------解决方案--------------------------------------------------------
我以前一个同事用turboc在没有中文DOS的情形下显示出有限个的汉字,应该是硬画出来的。
------解决方案--------------------------------------------------------
两种方法:
1. 使用图形模式,逐点画出来。缺点是有点麻烦,但可以显示任意多的汉字。
2. 文本模式,修改EGA/VGA字模,INT 10h Ax=1110h。优点是简单,而且兼容INT 21h、INT 10h的字符输出功能,但是只能(同屏)显示很少的汉字,最多256个吧(实际不可能,因为用单个8x16/9x16的字模显示汉字有点勉强,至少要16x16才能看,这样就只剩下128个,还要保留一部分常用的ASCII符号)。
------解决方案--------------------------------------------------------
你把源程序贴出来看看。
------解决方案--------------------------------------------------------
中文DOS下 (比如CCDOS, TWAY32, UCDOS等), 直接输出字符串(含汉字)即可。
如果你不用中文系统,有两种方式:
一种是文本模式显示汉字,有点复杂,将一个汉字拆分成两个字符并将其字模写入显卡的字符发生器;
另一种简单点,是图形模式下在屏幕上画出汉字的每一点。
------解决方案--------------------------------------------------------
学习了~~~