中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 妙用“DEBUG”挑选效果良好显示器[转帖]
English/Chinese Fix Translation
作者:
标题: 妙用“DEBUG”挑选效果良好显示器[转帖] 上一主题 | 下一主题
ko20010214
版主




积分 7296
发帖 1628
注册 2002-10-16
状态 离线
『楼 主』:  妙用“DEBUG”挑选效果良好显示器[转帖] [已使用 LLM 解释]


妙用“DEBUG”挑选效果良好显示器

--------------------------------------------------------------------------------

http://www.sina.com.cn 2002/10/09 13:29 赛迪网--中国电脑教育报

  文/李贝

  很多DIY用户在攒机时都把目光集中在主机的配件上,如CPU、显卡……却忽视了一个重要的外设——显示器。现在显示器的品牌种类繁多,不同的显像管显示的效果各有千秋,令选购者眼花缭乱。但究竟如何直观地检验显示器的色彩是否纯正、黑白是否平衡和汇聚是否准确?虽然我们可以利用一些软件的帮助,如Nokia Monitor Test 1.0a。但是在购买时,却极少人会随身携带,这时只有凭用户的慧眼目测。


  其实,操作系统本身就自带了一个方便的工具,它就是DOS下的DEBUG。下面我就向大家介绍如何使用。

  开机后进入DOS模式(建议在DOS实模式下,不加载任何其它的系统和软件,不过在Windows 9X的DOS窗口模式中也能通过;如果用户用的是Windows Me或Windows XP,可以点击任务栏的“开始”,选择“运行”,键入“DEBUG”,然后点击“确定”),键入DEBUG,回车。出现DEBUG横线提示符,我们即可使用“F”命令,直接对显示缓存进行操作,使显示器显示我们所需要的“图形”。具体操作命令如图表。

debug操作命令一览表
序号
命令
图形

1
-f b800:00 f9f 20 70
满屏白光栅

2
-f b800:00 f9f 20 40
满屏红光栅

3
-f b800:00 f9f 20 20
满屏绿光栅

4
-f b800:00 f9f 20 10
满屏蓝光栅

5
-f b800:00 f9f c5 07 c4 07
满屏白色十字

6
-f b800:00 f9f c5 04 c4 04
满屏红色十字

7
-f b800:00 f9f c5 02 c4 02
满屏绿色十字

8
-f b800:00 f9f c5 01 c4 01
满屏蓝色十字

9
-f b800:00 f9f c5 05 c4 05
满屏紫色十字

10
-f b800:00 f9f c4 07
满屏白色横线

11
-f b800:00 f9f b3 07 20 07
满屏白色竖线

12
-f b800:00 f9f 20 70 20 70 20 70 20 70 20 70 20 70 20 70 20 70 20 70 20 70
满屏黑白相间


  怎么样,都看到了吧,比彩电信号发生器提供的信号更纯、更全、更直观。大家通过对自己心仪的显示器的测试,尽量发现它的“不足之处”,尽可能地吹毛求疵,这样就可以多掌握一些向商家讨价还价的“砝码”。

  上面方法的作用是配合显像管的偏转线圈、色纯磁环、六级磁环等可调整部件,帮助用户调整和修复显像管的红、绿、蓝静汇聚,动汇聚,白、暗平衡,色纯等“面子”错误,让我们的彩显时刻展露“真我”色彩。

  毕竟显示器是整台电脑中服役时间最长的部件之一,所以精挑细选一台好的显示器是购买电脑的一个关键所在。





   此帖被 +1 点积分    点击查看详情   
评分人:【 shifengl 分数: +1  时间:2009-5-23 23:19
LLM 解释

技术背景与原理分析

本帖讨论的通过 DEBUG 命令测试显示器的方法,实质上是利用了 IBM PC 兼容机在 CGA/EGA/VGA 文本模式(Mode 03h) 下的显存映射机制。

在标准 80x25 文本模式下,显存的起始物理地址为 B800:0000。每一屏由 2000 个字符组成(80 列 × 25 行),每个字符占用 2 个字节:

  1. 低字节(Byte 0):存储字符的 ASCII 码。
  2. 高字节(Byte 1):存储字符的属性(颜色)。属性字节的高 4 位通常控制背景色,低 4 位控制前景色。

命令逻辑解析

  • 满屏色块(如命令 1-4)f b800:00 f9f 20 70 f (Fill) 命令将从 B800:0000B800:0F9F(共 4000 字节,即一整屏)的内存填充为 20(空格字符)和 70(背景色 7/白色,前景色 0/黑色)。由于字符是空格,屏幕上呈现的是纯粹的背景色块。
  • 满屏线条/十字(如命令 5-11): 利用了扩展 ASCII 码中的制表符(如 C4 为横线 B3 为竖线 C5 为十字 )填充显存。
  • 黑白相间(命令 12): 通过循环填充不同的颜色属性,产生条纹或棋盘格效果,用于观察显示器的聚焦(Focus)和呼吸效应(Blooming)。

技术纠正与补充

1. 关于“软件是否能损坏硬件”的讨论(针对 Post #3, #4, #12)

帖中关于“软件不可能损坏硬件”的观点在 2000 年代初非常流行,但从严谨的工程角度看,这具有特定的时代局限性

  • 显示器端:在 1980 年代,某些老式显示器(如 IBM MDA)如果接收到超出其水平/垂直频率范围的同步信号,确实可能导致行输出管过热烧毁。但对于 2002 年(原帖时间)主流的 多频同步(Multisync) 模拟显示器和后来的数字显示器,内部均设有保护电路。如果信号超出范围,通常会黑屏并提示 "Out of Range",不会发生物理损坏。
  • 主板与 BIOS:Post #4 提到的 CIH 病毒通过修改 Flash ROM 中的固件使机器无法启动。虽然硬件本身没坏,但在当时缺乏外部烧录手段的情况下,对于普通用户等同于“硬件损坏”。

2. 关于 Post #9 和 #10 的代码逻辑

Post #9 和 #10 提到的代码包含 out 21, ahint 10 的调用,其逻辑存在明显误导和错误:

  • 端口操作out 21, al 操作的是可编程中断控制器(8259A PIC)的屏蔽寄存器(IMR)。向端口 21h 写入 FF 会屏蔽所有外部硬件中断(如键盘、时钟),但这只会导致系统失去响应(死机),并不会物理损坏显示器。
  • BIOS 调用:代码中的 mov ah, 12h; mov bl, 36h; int 10 是 VGA 视频子系统的一个特定调用,用于“启用/禁用视频刷新”。这会导致显示器失去同步信号进入黑屏省电模式,同样属于正常的显示控制,而非“损坏”操作。
  • 结论:这些代码段更像是当年论坛中常见的“恶作剧脚本”或“伪黑客代码”,它们可能导致 DOS 系统死锁或显示异常,但不具备损坏 CRT 或 LCD 硬件的能力。

3. 显存地址的依赖性

本帖的方法高度依赖于 VGA 的文本模式。如果系统当前处于图形模式(如使用了 VESA 高分辨率模式),向 B800:0000 写入数据可能不会在屏幕上产生预期效果,甚至会被显卡驱动程序或硬件层重定向。

历史语境说明

在 2002 年左右,CRT 显示器(大头显示器)仍是主流。帖中提到的“色纯”、“汇聚”、“白平衡”是 CRT 特有的物理参数。通过 DEBUG 填充纯色和格线图,可以有效地观察显像管的偏转线圈是否存在老化、磁化或由于运输震动导致的电子束对准偏差。对于现代 LCD 显示器,这些测试更多用于检测“坏点”或“背光均匀度”。





ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2002-11-6 00:00
查看资料  发送邮件  发短消息  网志  OICQ (16959102)  编辑帖子  回复  引用回复
MYS
元老会员




积分 5170
发帖 1637
注册 2002-10-16
来自 广东佛山
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

精彩,收藏了




我的网志
http://hzmys.blog.163.com/
我的网盘
firststep.qjwm.com
fsmys.ys168.com
ssmys.ys168.com
www.brsbox.com/fsmys
www.brsbox.com/ssmys
www.brsbox.com/ccdos
2002-11-6 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (2664429)  编辑帖子  回复  引用回复
g307
初级用户




积分 102
发帖 1
注册 2002-11-10
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

这是直接对硬件进行操作呀,有可能会损坏显示器吧??




我爱dos
2002-11-10 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ko20010214
版主




积分 7296
发帖 1628
注册 2002-10-16
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

软件不可能损坏硬件。如果能的话,那就能造出损坏硬件的病毒了。
传说中能损坏主板的CIH也只是损坏存在BIOS里的一段程序代码而不能损坏BIOS。就象是损坏硬盘里的文件(程序)而不能损坏硬盘一样。损坏是指物理的不能恢复的损坏!!!




ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2002-11-10 00:00
查看资料  发送邮件  发短消息  网志  OICQ (16959102)  编辑帖子  回复  引用回复
柳飘逸
初级用户




积分 119
发帖 11
注册 2002-12-14
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

经典。




ぁ拒签ぁ!!!!!!!!!!!!!
2002-12-14 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
wolfwood
初级用户

wolfwood


积分 158
发帖 14
注册 2003-2-14
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

不錯
應用的直接寫屏的技術,很多中文系統都用的這個技術,還有當年的pctools。我曾經寫程序時不用int10而用直接寫屏,結果並沒有明顯的覺出快多少,倒是源碼寫的巨長(用宏替換後)。




我不能偷也不能搶
2003-2-21 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
wang6-6
初级用户




积分 148
发帖 20
注册 2003-3-24
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

好东西,不过用这个测试显示器,老板会吓坏的阿:)




=================================
爱dos,难道需要理由吗?
=================================
我不是高手,希望与大家成为朋友。QQ:33408659
2003-3-26 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
Dark-Destroy
元老会员





积分 8312
发帖 3551
注册 2003-3-22
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

好ㄚ,值得珍藏




MSN:tiqit2@hotmail.com
2003-3-29 00:00
查看资料  发送邮件  访问主页  发短消息  网志   编辑帖子  回复  引用回复
defrag
中级用户

痴迷DOS者


积分 456
发帖 570
注册 2004-10-9
状态 离线
『第 9 楼』:   [已使用 LLM 解释]

mov al,ff
out 21,ah
mov ah,12h
mov bl,36h
mov al,1
int 10
mov ah,12h
mov bl,36h
mov al,0
int 10
.............................
mov al,00
out 21h,al
g
q
LLM 解释

此贴讨论的技术核心在于通过 DOS 的 DEBUG 工具直接操作视频缓冲区(Video Buffer)来生成简单的显示器测试信号。这种方法利用了 IBM PC 架构下 CGA/EGA/VGA 兼容显卡在文本模式(Text Mode)下的内存映射机制。

1. 技术原理解析

在标准的 DOS 文本模式(Mode 03h,80x25 字符)下,显存地址起始于 B800:0000。该模式下,显示器上的每个字符占据 2 个字节:

  • 低位字节(Even Address):存储字符的 ASCII 码。
  • 高位字节(Odd Address):存储字符的属性(Attribute),控制前景色、背景色及闪烁。

属性字节的结构通常为:7 (闪烁) | 6 5 4 (背景色) | 3 (高亮度) | 2 1 0 (前景色)。 颜色对应关系:0-黑, 1-蓝, 2-绿, 3-青, 4-红, 5-紫, 6-棕, 7-白。

对原帖中命令的分析:

  • -f b800:00 f9f 20 7020 是空格符(ASCII 32),70 表示黑字白底。由于整个区域填满带颜色的空格,显示器会呈现出纯白色块。
  • -f b800:00 f9f c5 07c5 是扩展 ASCII 码中的十字型制表符(┼),07 是白字黑底。这会在屏幕上布满白色网格,用于检查显示器的汇聚(Convergence)几何失真

2. 关于 defrag 所提代码的补充说明

defrag 提供的汇编指令片段逻辑如下:

  • out 21, ah:这在 DOS 环境下是不规范且具有潜在风险的操作。21h 端口是主中断控制器(PIC 8259A)的操作屏蔽寄存器(IMR)。在没有初始化 ah 的情况下向此端口写入,会导致硬件中断(如键盘、时钟)被意外屏蔽,造成系统死机或无响应。
  • int 10ah=12h, bl=36h:这是 VGA 视频子系统的一个特定调用,用于启用/禁用视频输出(Screen Off/On)。
    • AL=1 时关闭显示输出。
    • AL=0 时开启显示输出。
  • 此代码片段并非生成测试图案,而是演示了如何通过 BIOS 调用控制屏幕的开启与关闭。在 2004 年前后的硬件环境下,这种操作常见于早期的屏幕保护程序或隐藏显示内容的技巧,但与主帖讨论的“显示器挑选测试”关系较远。

3. 历史背景与环境局限性

  • 适用范围:此类 DEBUG 命令仅适用于 CRT 显示器占主流的时代。由于 CRT 是通过电子束扫描荧光粉成像,纯色光栅(红、绿、蓝、白)对于检查**色纯(Color Purity)**和是否存在由于阴极射线管老化、磁化导致的偏色至关重要。
  • 局限性:在进入 LCD(液晶显示器)时代后,这些方法的作用有限。虽然仍可用于检测坏点(Dead/Stuck Pixels),但 LCD 的成像原理(固定像素点阵)不存在 CRT 的几何变形或汇聚不准问题。
  • 安全性说明:Post #4 提到的“软件损坏硬件”在当年是热门话题。虽然 CIH 病毒通过擦写 Flash BIOS 物理破坏了主板的启动能力,但主帖中通过 DEBUG 修改显存的操作纯粹属于数据写入,不会对显示器或显卡造成物理损伤。

4. 纠正与注意事项

  • 显存范围:命令中使用 f9f(即十进制 3999)作为结束地址,这是因为 80x25 模式下共有 2000 个字符位,每位 2 字节,共计 4000 字节。
  • 现代环境差异:如果在现代 Windows 的虚拟 DOS 机(NTVDM)或 DOSBox 中运行这些命令,由于显示层经过了层层抽象和模拟,其“色彩纯度”取决于物理显示器当前的调校和系统的颜色配置,不再能直接反映底层显像管的物理特性。




DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
2005-1-1 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
defrag
中级用户

痴迷DOS者


积分 456
发帖 570
注册 2004-10-9
状态 离线
『第 10 楼』:   [已使用 LLM 解释]

用于损坏显示器:

f b800:00 f9f 20 70
mov al,ff
out 21,ah
mov ah,12h
mov bl,36h
mov al,1
int 10
mov ah,12h
mov bl,36h
mov al,0
int 10
.............................
mov al,00
out 21h,al
g
q
LLM 解释

技术背景说明

该讨论涉及 DOS 环境下对显示硬件的底层控制。原贴探讨了利用 DEBUG 直接操作显存(文本模式)来生成特定图案,以检测 CRT 显示器的偏色、汇聚和色纯度。随后 defrag 的回复提供了一段带有误导性描述的汇编代码,声称用于“损坏显示器”。

从技术角度分析,这段代码的核心逻辑与显示器的物理损坏并无直接关联,而是反映了早期编程中对中断调用和硬件端口操作的常见误解。


技术实现分析

1. 显存填充指令

f b800:00 f9f 20 70

这是 DEBUGFill 命令。B800:0000 是 CGA/EGA/VGA 标准文本模式(Mode 03h)的显存起始地址。该指令向 80x25 文本模式的显存区域填充空格(ASCII 20)和背景属性(70 代表灰色背景,黑色文字)。这仅能实现屏幕涂色,不会对硬件造成损害。

2. 中断屏蔽寄存器操作

mov al,ff
out 21,ah
...
mov al,00
out 21h,al
  • 端口 21h:这是 8259A 可编程中断控制器(PIC)的操作掩码寄存器(IMR)。
  • 逻辑错误:代码尝试通过 out 21, ah 屏蔽所有硬件中断(此时 ah 往往是之前指令残留的未知值),并在结束时通过 al, 00 恢复中断。
  • 后果:在 DOS 环境下屏蔽所有硬件中断会导致系统失去对键盘、定时器(时钟)和磁盘动作的响应,造成系统假死(Hang)。但这属于软件层面的锁定,重启即可恢复,无法损坏显示器。

3. 中断 10h 的特定调用

mov ah,12h
mov bl,36h
mov al,1  (或 0)
int 10
  • INT 10h, AH=12h, BL=36h:这是 VGA BIOS 的特定扩展功能,用于“视频屏幕开关控制”(Video Screen On/Off)。
  • AL=1:关闭视频输出。
  • AL=0:开启视频输出。
  • 实际效果:该功能通过设置 VGA 控制器的某些寄存器来切断信号输出,使屏幕变黑。这在当时常用于在切换显示模式或大量更新显存数据时避免屏幕闪烁。连续切换该开关只会产生屏幕闪烁效果,不会烧毁行场输出电路。

关于“损坏显示器”的技术澄清

在 1980s–1990s 的 PC 环境中,能够物理损坏显示器的行为通常与非法刷新率有关:

  1. 超频陷阱:早期的固定频率显示器(如某些 MDA 或早期 TTL 规格显示器)无法自动适应非标准同步信号。如果程序员通过直接读写显卡 CRTC(阴极射线管控制器)寄存器(端口 3D4h/3D5h),强行设定了超出偏转线圈物理极限的水平或垂直同步频率,理论上可能导致行输出管过热击穿。
  2. 代码局限性:本帖中提供的代码均基于标准的 BIOS 中断调用(INT 10h)。BIOS 功能内置了安全限制,仅会在显卡支持的标准模式间切换,不会产生足以损毁硬件的非法同步信号。

总结

该回复中的代码实际上是一段无效的系统干扰尝试。它利用 BIOS 调用关闭了显示输出,并尝试通过屏蔽中断来锁死系统。在当时的讨论语境中,这种“损坏”更多是指导致系统死机或屏幕黑屏带来的心理威慑,而非实际的工程层面破坏。由于其调用的均是标准的 VGA BIOS 功能,并不会对显示器硬件产生物理损伤。





DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
2005-1-1 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ttimber
初级用户




积分 198
发帖 43
注册 2004-11-2
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

好东西,不过用这个测试显示器,老板会吓坏的阿:)





我爱电脑,更爱软件,最爱的是我的父母和老婆!
2005-1-6 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
wangfangjian
中级用户





积分 274
发帖 192
注册 2009-1-7
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

就是 弄坏就不好了


2010-9-9 21:49
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: