标题:SVGA的模式设置后无法写屏
只看楼主
Aoudsk
Rank: 1
来 自:江西
等 级:新手上路
帖 子:11
专家分:6
注 册:2009-11-5
结帖率:100%
已结贴  问题点数:30 回复次数:3 
SVGA的模式设置后无法写屏
我编了一个通用的写象素的函数,以下程序是安照记忆中编写的有可能有错误,但源程序没有太大的问题!
#include "stdio.h"
unsigned page=0; /*页                                  XM为模式的水平分辨率      */           
void setpixe(unsigned x,unsigned y,unsigned color,unsigned XM)
{
    asm push es;
    _AX=y;
    _DX=XM;
    _CX=color;
    asm mul dx;
    asm add ax,x;/*计算偏移量*/
    asm adc dx,0000;/*计算页*/
    asm mov si,ax;/*偏移量给SI*/
    asm mov ax,0a000h;/*段->ES*/
    asm mov es,ax;
    asm cmp dx,page;
    asm je next;
    asm mov page,dx;
    asm mov ax,4f05h;
    asm xor bx,bx;
    asm int 10h;/*换页*/
next:;
    asm mov es:[si],cl;/*写*/
    asm pop es;
}
/*设置模式*/
int InitSvgaMode(unsigned Mode)
{
    _BX=Mode;
    asm mov ax,4f02h;
    asm int 10h;
    return _AX;
}
/*设置为3号文本模式*/
void Exit()
{
    asm mov ax,13h;
    asm int 10h;
}
void main()
{
    unsigned i=0;*给DI赋值   其实 for(i=0;i<10;i++)里的i一是DI寄存器*/
    InitSvgaMode(x120);
    getchar();/* 等显示器切换模式好后再写屏*/
    for(i=0;i<1600;i++)setpixe(i,0,0x4,1600);
    for(i=0;i<1200;i++)setpixe(0,i,0x4,1600);
    getchar();/*查看结果*/
    Exit();
}

但这个程序从来没显示过0x120模式我不知道什么问题,但在100-101模式则有用
搜索更多相关主题的帖子: 模式 SVGA 
2009-11-05 12:20
尐傑哭嘞
Rank: 4
来 自:苏州
等 级:业余侠客
帖 子:81
专家分:257
注 册:2009-10-26
得分:21 
分辨率有没有问题?????

为什么我永远那么倒霉!!!!!!
2009-11-05 12:55
Aoudsk
Rank: 1
来 自:江西
等 级:新手上路
帖 子:11
专家分:6
注 册:2009-11-5
得分:0 
120H的分辨率大概是1600*1200 256色!没问题!
2009-11-05 17:10
Aoudsk
Rank: 1
来 自:江西
等 级:新手上路
帖 子:11
专家分:6
注 册:2009-11-5
得分:0 
我意思是上述程序在模式设置完后,并不能显示所画图形!所以来问是什么问题!
2009-11-05 17:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-291106-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.424137 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved