win7向显存写入数据没显示?

走神的指针 2011-11-03 12:15:36
有几个疑问想请教一下前辈们

1.在目前的电脑里,b800h还是显存的开始地址么?

2.王爽老师书里面的偏移地址为:160*12+40*2 意思应该是在屏幕中间显示吧?假设b800h还是显存的开始地址,那在win7里同样的位置却显示不了?是不是跑到其他位置去了屏幕显示不到?

3.我查过了网上一些资料,说win7因为使用了透明效果,禁止第三方软件直接写屏。
所以键盘输入字符的程序如果直接运行的话,就一闪而过了,但在cmd下运行就可以了。字符和字符串的显示如果是调用中断的话,就可以显示出来,但是采用直接往显存写的方式就显示不了。想请问为什么?

谢谢~
...全文
361 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
it_xiong 2013-05-13
  • 打赏
  • 举报
回复
果然还是csdn大牛多啊。。
大熊猫侯佩 2011-11-15
  • 打赏
  • 举报
回复
v8086只是一个模拟8086的环境,真实情况上虚拟机。
tracylambert 2011-11-13
  • 打赏
  • 举报
回复
遇到同样的问题,经过反复试验基本找到解决办法:
在DEBUG模式下使用G命令
即命令行界面中输入(假设程序名abc.exe)
debug abc.exe
跟踪运行,输入G,回车即可看到字符、色彩。
zara 2011-11-03
  • 打赏
  • 举报
回复
B800h 段的说法,只是实模式下,彩色文本的显示缓冲区段址。早在 dos 环境下的汉字系统里,这个就已经虚拟化了,别说后面的 Windows 了,更何况是 Win7。
这类程序,先试试命令行窗口全屏化;还不行的话,就安装个虚拟机,在虚拟机的纯 dos 下做。
shucheng36 2011-11-03
  • 打赏
  • 举报
回复
windows肯定不会让你直接写的,在windows下,cmd只是一个程序,一台机器的资源是一定的,如果每个程序都自己向显存里写东西,那屏幕上不是乱套了?因此在用到系统资源的时候,比如说文件读写,输入输出等,都是通过系统功能调用来实现的。如楼上几位所说,要实现,得用到纯正的DOS
liangfei1983 2011-11-03
  • 打赏
  • 举报
回复
我发生过跟你类似的情况,你可以尝试一下,在win7的dos,直接运行你的程序,你会发现,最左上角的windows****会变成乱码,我后面直接放弃了,最后选择下了一个dosbox,能是能显示,但显示的效果完全达不到你想要的要求~~~最后痛定思痛,下了个linux,直接在里面编译了!

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧