![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-26 01:12 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,275 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » int 10h的问题 |
| 可打印版本 1,963 / 8 |
| 第1楼 gemfield | 发表于 2009-04-10 11:59 |
| 初级用户 发帖 13 积分 33 | |
|
int 10h的问题 (纯dos下)程序调用int 10h后,屏幕输出英文字符,那么这个字符库的位置在哪里?在bios里吗?
假如现在加载了ucdos中文程序,屏幕输出汉字的时候,调用int10h和前面的纯dos英文输出调用int 10h有什么不一样吗? 谢谢! |
|
| 第2楼 zyl910 | 发表于 2009-04-10 23:07 |
| 中级用户 发帖 126 积分 282 | |
|
int 10h的‘1101h功能可以读取显卡的字库地址
|
|
| 第3楼 zyl910 | 发表于 2009-04-10 23:10 |
| 中级用户 发帖 126 积分 282 | |
|
ucdos会替换掉int 10h的中断例程
当程序调用int 10h输出文字时,实际上调用的是ucdos的例程,ucdos分析文本中的中文字符,并在屏幕上画出 |
|
| 第4楼 gemfield | 发表于 2009-04-12 09:35 |
| 初级用户 发帖 13 积分 33 | |
|
谢谢zyl910,看来int10h调用的字库位于显卡,那么dos在屏幕上输出字符一定是要调用int10h吗?比如pcdos 2000
|
|
| 第5楼 zyl910 | 发表于 2009-04-12 10:33 |
| 中级用户 发帖 126 积分 282 | |
|
有两种方法可以在屏幕上输出文本——
1.int 10h 2.直接写文本区的显存 ucdos等中文平台不仅会替换int 10h,还会检测文本区的显存的变化,根据变化输出汉字 |
|
| 第6楼 netwinxp | 发表于 2009-04-12 14:09 |
| 高级用户 发帖 366 积分 741 | |
|
简单地说UCDOS对调用INT 10H写屏和直接往显存(BXXX段)均有效,因为它会用定时中断监控文本模式显存,正因为酱紫所以UCDOS不适宜用在需要用定时中断的自控系统和时间要求严格的实时系统(UCDOS已经占用了比较长的定时中断时间,容易出现定时中断重入的问题)。
|
|
| 第7楼 gemfield | 发表于 2009-04-13 01:47 |
| 初级用户 发帖 13 积分 33 | |
|
再次谢谢zyl910,你说的第二点“直接写文本区的显存”,意思是字库在文本区显存里吗?能不能将详细点,我不懂。pcdos 2000加载ucdos后,输出英文字符和汉字分别是使用哪一个功能?
netwinxp说的实时系统不适宜用ucdos,那么一般用什么?我的pcdos 2000上装了一个实时系统软件,我加载ucdos后在autoexec.bat里面echo汉字,汉字可以显示在屏幕上,但是实时软件里的文本字符(我把每两个英文字母的ascii码改成一个汉字的ascii码,比如4546改为b2be),但是屏幕上对应的都是乱码。(每个汉字位置都是一个L,那么四个汉字就是LLLL),这是为什么呢? 谢谢 |
|
| 第8楼 zyl910 | 发表于 2009-04-13 08:53 |
| 中级用户 发帖 126 积分 282 | |
|
为了使CPU操作方便,显存(RAM) 及 显卡的BIOS(ROM) 会映射到系统内存空间,一般为——
(系统内存空间的)A0000h~AFFFFh:图像显存(RAM) (系统内存空间的)B0000h~BFFFFh:文本显存(RAM) (系统内存空间的)C0000h~C7FFFFh:显卡的BIOS(ROM) 显卡的字库一般放在显卡BIOS中,但是具体的地址只有显卡BIOS知道,所以应该使用int 10h的1101h功能得到显卡的字库地址 加载ucdos后,所有文本输出都由ucdos捕获,而不论英文、汉字 |
|
| 第9楼 netwinxp | 发表于 2009-04-13 09:47 |
| 高级用户 发帖 366 积分 741 | |
|
显卡的字库放在显卡的BIOS里面,不过这部分空间并不会映射到主内存的BIOS段(很多插卡的BIOS会一部分映射到内存ROM段),详细技术你可以参考长城0520H硬汉字库的技术。
***其实主板BIOS不仅会映射一部分到1M的ROM段,而且还会映射一部分到接近1G的内存段(主要是ACPI相关表),PCI板卡也是如此*** 图形显存被映射到A0000H段仅对应于VGA模式(和少量早期SVGA,主要是TVGA),高分辨率模式一般被映射到D0000000~EFFFFFFF里面的1个到多个小分段并且每段具有多个页面深度(具体地址可以看显卡占用的资源),具体占多少看BIOS的AGPURE SIZE的值(这个设得越小,4G的可用RAM空间就会越多,不过显存页面深度就越深,会稍微影响显示性能)。 简单地说就是UCDOS的汉字捕获仅对于VGA的文本(和少量早期SVGA文本模式)有效,对于SVGA的文本模式无效;另外UCDOS里面的文本模式其实是UCDOS控制的伪文本模式,其实真正的模式已经是图形模式,所以退出UCDOS后很容易出现一堆乱闪的字符,需CLS一下才清静。 [ Last edited by netwinxp on 2009-4-13 at 09:52 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |