请教C语言高手!!高手进

#ifndefmybios#definemybios#include<dos.h>typedefunsignedcharBYTE;typedefunsignedintWO... #ifndef mybios
#define mybios

#include <dos.h>

typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long DWORD;

/*
* ReadChar: 读键盘键值,如果没有按键,将等待
* 输入参数: asc 和 scan 是 char 变量的地址
* 输出参数: *asc: ASCII码 和 *scan:扫描码
*/
void ReadChar(BYTE * asc, BYTE * scan)
{
union REGS regs;

regs.h.ah = 0;
int86(0x16,®s,®s);
*asc=regs.h.al;
*scan=regs.h.ah;
}

/*
* CheckKeyboard 检查键盘缓冲区,是否有按键
* return rc = 0; 没有按键; rc = 1 有按键
*/
int CheckKeyBoard(void)
{
union REGS regs;

regs.h.ah = 1;
int86(0x16,®s,®s);
return (regs.x.flags & 0x40) ? 0 : 1;
}

/*
* Sleepp18_2 等待1/18.2个时钟
* 输入参数 count: 等待次数
*/
void Sleepp18_2( DWORD count )
{
DWORD far * long_ptr;
DWORD timer_vaule, timer_count;

long_ptr = (DWORD far *)0x0000046c;

timer_vaule = *long_ptr;
timer_count = timer_vaule + count;
while( 1 ) {
timer_vaule = *long_ptr;
if( timer_vaule > timer_count )
break;
}
}

/*
* GetCursor 得到光标位置
* 输出参数 row 行0-24;col:列0-79
*/
void GetCursor( BYTE *row, BYTE *col)
{
union REGS regs;

regs.h.bh = 0x00;
regs.h.ah = 0x03;
int86(0x10,®s,®s);

*row=regs.h.dh;
*col=regs.h.dl;
}

/*
* SetCursor 设置光标位置
* 输入参数 row 行0-24;col:列0-79
*/
void SetCursor(BYTE row, BYTE col)
{
union REGS regs;

regs.h.dh = row;
regs.h.dl = col;
regs.x.bx = 0;
regs.h.ah = 0x02;
int86(0x10,®s,®s);
}

/*
* SetCursorShape 设置光标形状
* 输入参数 top--boot (0-12)
*/
void SetCursorShape(BYTE top, BYTE bott)
{
union REGS regs;

regs.h.ch = top;
regs.h.cl = bott;
regs.h.ah = 0x01;
int86(0x10,®s,®s);
}

/*
* SetCursorOn 设置光标可见
*/
void SetCursorOn()
{
union REGS regs;

regs.h.ch = 11;
regs.h.cl = 12;
regs.h.ah = 0x01;
int86(0x10,®s,®s);
}

/*
* SetCursorOff 隐藏光标
*/
void SetCursorOff()
{
union REGS regs;

regs.h.ch = 0x20;
regs.h.cl = 0x00;
regs.h.ah = 0x01;
int86(0x10,®s,®s);
}

/*
* ClsScr 清屏
*/
void ClsScr()
{
union REGS regs;

regs.h.ch = 0;
regs.h.cl = 0;
regs.h.dh = 24;
regs.h.dl = 79;
regs.h.al = 0x00;
regs.h.bh = 0x07;
regs.h.ah = 0x06;
int86(0x10,®s,®s);
}

/*
* ClsWin 清一个窗口(左上、右下的行列坐标)
* NOTE: The function(0x06) is scrool up; function(0x07) is scrool down
* attr: bit7-bit4 背景颜色 bit3-bit0 字符颜色
* bit0和bit4--兰色; bit1和bit5--绿色; bit2和bit6--红色; bit3和bit7--灰色;
*/
这是一个头文件的一部分,头文件太长了,谁能给逐句翻译一下,另外我C语言已经会了,但是我看不懂这个,我想知道我要看啥书才能看懂他写的啥?这个是用的BOIS么?我看不懂他要干啥。。
谁要是能说明白这个我追分!!!!!!!(我主要要这个!!)
展开
 我来答
flyyyyyyyyyyy
2009-01-01 · 超过18用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:0
展开全部
首先,你先去看下这个联合变量REGS里面是什么东西。
这个涉及到dos的中断向量调用。例如int86(0x10,®s,®s);
你可以现把它当成一个函数。学汇编的时候会学到中断向量这里。
#ifndef mybios
#define mybios
...
#endif
这句代码的作用是防止省略号的内容重复定义
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式