我写了一个将字符串输出到dos屏中的程序,但是总是无法显示出来。后来我查了一些资料,应该是系统刷屏的原因。
但是我后来想了一下,如果用debug一步一步的走的话,每走一步,系统都会弹出命令提示符,这样就会被系统刷屏掉。如果不debug的话,那样同样也会被清掉,也显示不出来。
我可能理解得有问题,还望各位指教
其实说白了,我就想知道怎么能看到,我写入的结果,请各位大神指教,初学。
------解决方案--------------------------------------------------------
在 dos 下的话,应该使用段:偏移这样的地址形式,也就是 B800:0000 这样的。两个字节一组,低字节是字符,高字节是属性。绝对能显示出来!万一显示不出来的话,你去打 Intel 老板。至于你说的刷屏的问题,实在无法理解。
------解决方案--------------------------------------------------------
不要用debug调试,用olldbg等工具
------解决方案--------------------------------------------------------
你只要检查地址b8000到b9000这段内存即可,没显示出来应该你写入有问题
------解决方案--------------------------------------------------------
用个虚拟机吧
------解决方案--------------------------------------------------------
你说的刷屏是指屏幕刷新么?如果指的是屏幕刷新的话,每次刷新都是根据显存来刷新的,刷新本身不会改变显存。
------解决方案--------------------------------------------------------
debug改变了显存,但也不是完全无法显示,某些时候可以显示出来,只不过格式会乱一些。比如如果是用int 21h中断显示字符串的话,只要用P命令基本上就可以把要显示的东西完整地显示出来。但是直接操作显存的会有比较麻烦的问题,因为debug在执行过程中会滚屏,就是将显示屏上的所有字符顺次向上移动。这个好像是通过直接操作显存来实现的,我记得有对应的中断的,楼主说的刷屏可能应该是滚屏吧?这个好像还叫卷动,具体的学名我也不知道。根据滚屏的原理,其实直接操作显存的显示也是可以显示出来的,只要你将显示的位置下下挪五六行就行了,具体的行数是debug显示寄存器信息的那个东西的行数。并且用G命令执行,因为通过直接操作显存显示字符的方法都不是能一次完成的,如果用T或者P的话,不能将结果一次全部显示出来,而滚屏会将你要显示的东西破坏掉。