当前位置: 代码迷 >> 汇编语言 >> 为什么使用SuperVGA会让显示器出有关问题
  详细解决方案

为什么使用SuperVGA会让显示器出有关问题

热度:4084   发布时间:2013-02-26 00:00:00.0
为什么使用SuperVGA会让显示器出问题?
就是这些代码:
Assembly code
    assume    cs:code,ds:datadata    segmentdata    endscode    segmentstart:    mov    ax,4F02H    mov    bx,118H    int    10H    and    ah,-1    jnz    exit    mov    ax,4F05H    mov    bx,0    mov    dx,42    int    10H    mov    ax,0A000H    mov    ds,ax    mov    ax,0    mov    cx,100    mov    bx,4circle:    push    ax    mul    bx    mov    si,ax    pop    ax    mov    byte ptr [si+0],0FFH    mov    byte ptr [si+1],000H    mov    byte ptr [si+2],0FFH    inc    ax    loop    circle    mov    ah,07H    int    21Hexit:    mov    ax,4C00H    int    21Hcode    ends    end    start


某人(不是我,我的电脑运行这个没有问题)说他运行之后桌面变形了
另外他说他运行那个97 4K的程序总蓝屏,我一次没蓝屏过
我怀疑是他的电脑有问题

------解决方案--------------------------------------------------------
有可能是监视器比例的问题
------解决方案--------------------------------------------------------
桌面变形,多数是CRT显示器的刷新率调得太高,我这两个显示器,厦华没问题,福中总出问题.
不同显示模式时,图像变形,要刷新率调在70HZ以下好一点.

------解决方案--------------------------------------------------------
在winNT下会蓝屏么???你说的不是系统蓝屏吧?
------解决方案--------------------------------------------------------
如果是EXE文件,貌似没啥问题,如果是COM文件,要么桌面变形(拉长看不到开始栏了,调分辨率都没用,只能靠重启动恢复),要么蓝屏,机器自动重启
------解决方案--------------------------------------------------------
编译了一下,SAMSUNG CRT彩显,运行效果为黑屏,改为12H模式,在顶部看到一条斑马线.
------解决方案--------------------------------------------------------
你这边调用到的是INt10 是用VBIOS提供的函数实现功能,不同家的VGA会有不一样的VBIOS,还有集成和独立也有区别,先确定下你们是否是一样的VGA
------解决方案--------------------------------------------------------
记错了,不好意思,Int15 才VBIOS的中断
------解决方案--------------------------------------------------------
估计是不同显卡的VBE模式支持上的差异造成的。
比如你设置的这个模式118h,很两个显卡都支持,但是细节上有差异,有些显卡的VBE对真彩色模式就不支持分页方式(bank-switched)访问显存(只对VGA兼容模式才支持),只支持LFB方式,这样你通过A000段读写显存是不起作用的。
你要先用INT 10h ax=4f01h cx=模式号 查询一下该模式信息,即便支持分页模式,窗口映射位置、窗口大小、单窗口还是双窗口、窗口粒度,在不同的显卡,甚至同一显卡的不同模式下,都可能不一样,你不能简单地假设它一定符合你的使用方式。
  相关解决方案