rudolf
驱动小牛
驱动小牛
  • 注册日期2002-10-09
  • 最后登录2006-04-25
  • 粉丝0
  • 关注0
  • 积分81分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1454回复:5

请教:关于在C里面嵌套汇编语言关闭显示的问题。

楼主#
更多 发布于:2002-11-11 13:27
我用BC写了一段代码,里面嵌套了一些汇编,用于关闭显示的输出,有点类似与WINDOWS的黑屏屏保。
代码如下:
void LCD_OFF()
{
   static int flag=-1;

   if(LCD_flag==flag)return;
   flag=LCD_flag;
   if(LCD_flag==1)
      asm{

mov ah,0x4f    //;使用VESA
mov al,0x10    //;选择节能子功能号
mov bl,0x01    //;设置显示器的电源状态
mov bh,0x00    //;选择节能方式(挂起)
int 0x10       //;调用VESA程序
}
     else

       asm{
 mov ah,0x4f    //;使用VESA
 mov al,0x10    //;选择节能子功能号
 mov bl,0x01    //;设置显示器的电源状态
 mov bh,0x00    //;选择节能方式(挂起)
 int 0x10       //;调用VESA程序
}

/*        开启: BH=0x00;
挂起: BH=0x01;
睡眠: BH=0x02;
关闭: BH=0x04;
     LCD OFF: BH=0x08;
    BL=0x01 设置显示器的电源状态
    BL=0x02 获得显示器当前电源状态*/
}

但是我发现这段代码不具有同用性。在PC上运行一切正常,在PC104板(工控386主板)DOS6.22环境下经常会发生屏保几个小时后不能唤醒,在一个小时左右的时间内唤醒没有问题。
请问,该问题该如何解决?望指点!
 :( :( :( :( :(
靠天靠地靠父母,不如靠自己。
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-11 13:36
是否与PC104有关?
生命驱动,活力无限!
rudolf
驱动小牛
驱动小牛
  • 注册日期2002-10-09
  • 最后登录2006-04-25
  • 粉丝0
  • 关注0
  • 积分81分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-11 14:12
是否与PC104有关?


我想WIN98在写屏保时不会去考虑每一款显卡吧?

PC104板采用的是F65545显示芯片。

芯片上印有如下文字:
CHIPS
F65545   B2
W65545AE3  0105-W
KOREA
IQ06E
-5

我上面的代码在CRT显示器上工作正常,对LCD显示器(如笔记本)者不太正常。

有没有谁写过类似功能的代码,拿出来分享一下啊。 :D
靠天靠地靠父母,不如靠自己。
minsoft
驱动小牛
驱动小牛
  • 注册日期2001-07-30
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-11 17:47
在Win98中不要去调用int 10直接写寄存器好了,可以用来关闭显示的,可以参考VESA标准。显卡都支持的。
还有一种办法可以使用APM/ACPI的功能调用可以用来关设备电源如IDE硬盘、显示设备等。找到它们的标准规范都可以操作的。
少了e,就少了全部
rudolf
驱动小牛
驱动小牛
  • 注册日期2002-10-09
  • 最后登录2006-04-25
  • 粉丝0
  • 关注0
  • 积分81分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-13 09:00
在Win98中不要去调用int 10直接写寄存器好了,可以用来关闭显示的,可以参考VESA标准。显卡都支持的。
还有一种办法可以使用APM/ACPI的功能调用可以用来关设备电源如IDE硬盘、显示设备等。找到它们的标准规范都可以操作的。


那么好心的 minsoft 不知你能否提供一些关于VESA的标准或APM/ACPI方面的资料呢?

找了一下没找着。
 :)  :D :) :D
靠天靠地靠父母,不如靠自己。
minsoft
驱动小牛
驱动小牛
  • 注册日期2001-07-30
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-13 09:40
VESA specification用 google应该可以搜索得到。
APM的调用可以在中断调用大全(interrupt.hlp)中查到,好象本站有。它有16b/32b两种调用接口,DOS用16,WIN用32
ACPI/APM的调用可看MSDN中power manager部分。
少了e,就少了全部
游客

返回顶部