就是这些代码:
- 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=模式号 查询一下该模式信息,即便支持分页模式,窗口映射位置、窗口大小、单窗口还是双窗口、窗口粒度,在不同的显卡,甚至同一显卡的不同模式下,都可能不一样,你不能简单地假设它一定符合你的使用方式。