|
|
小弟今天看到下面的程序,功能是调用10H中断在屏幕上描绘一个点
#define VGA256 0x13
#define TEXT_MODE 0x03
#include<dos.h>
#include<conio.h>
unsigned char far *video_buffer=(char far *)0xA0000000L;
void Set_Video_Mode(int mode)
{
union REGS inregs,outregs;
inregs.h.ah=0;
inregs.h.al=(unsigned char)mode;
int86(0x10,&inregs,&outregs);
}
void main(void)
{
int x,y,color;
Set_Video_Mode(VGA256);
x=100;
y=100;
color=WHITE;
video_buffer[((y<<8)+(y<<6))+x]=color;
/*(y<<8)+(y<<6)暨第一步
//((y<<8)+(y<<6))+x为第二步
//video_buffer[((y<<8)+(y<<6))+x]为第三步
//video_buffer[((y<<8)+(y<<6))+x]=color和color=0为第四步*/
getch();
Set_Video_Mode(TEXT_MODE);
}
有几处不明白的地方:
1.unsigned char far中的far是个什么关键字,起什么作用?
2.0xA0000000L是个什么地址?
3.video_buffer[((y<<8)+(y<<6))+x]是怎么回事?
望各位指教,谢谢!!! |
|