dos图像显存C语言,请问如何在DOS模式下直接写屏幕显存?C语言 最好举例子个 谢谢!...

直接写屏技术在DOS下面很容易实现,调用BIOS的10h中断的00h功能即可进入视频模式,对于VGA、VESA的显示模式,显存的起始地址都是A000:0000H(是一个16位地址的段址+偏移形式)

进入视频模式,并且用一个far指针指向视频显存的首地址,然后你就可以在显存里面为所欲为了,比如画点什么的

例子:

#define MODE_VGA13H  0x13

#define MODE_TEXT    0x03

void setmode(char mode)    //设置视频模式的函数

{

asm mov ah,0x00    //调用00h功能设置视频模式

asm mov al,mode    //AL寄存器放欲设置的视频模式号,这里以13h视频模式为例

asm int    0x10    //调用10h中断

}

char far * vediobuf=(char far*)0xa0000000L;    //指向显存地址的指针

void putpixel(int x,int y,int c)    //画点的函数

{

*(vediobuf+x+320*y)=c;

}

int getpixel(int x,int y)    //取点的函数

{

return *(vediobuf+x+320*y);

}

void main(void)

{

int i;

int j;

//设置VGA13H视频模式

setmode(MODE_VGA13H);

//用一个二重循环画满屏幕

for(i=0;i<20;i++)

for(j=0;j<320;j++)

putpixel(j,i,j);

getch();

//返回DOS文本模式

setmode(MODE_TEXT);

}

以上只是给出了很简单的实现直接写屏的代码,VGA13H视频模式是320*200*256的,即320*200的现实分辨率256色的最大颜色数。这个模式已经很落后了……当然你也可以设置其它的显示模式,在VESA标准中能支持多种高分辨率高色彩的视频模式,编程的原理都差不多,要注意的就是对分页的处理

网上有不少相关资料,找找看吧,比如有关中文DOS显示系统都有讲解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值