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

[复制链接]
查看11 | 回复1 | 2009-1-1 13:51:49 | 显示全部楼层 |阅读模式
#ifndef mybios
#define mybios
#include
typedefunsigned charBYTE;
typedefunsigned int WORD;
typedefunsigned longDWORD;
/*
* ReadChar:读键盘键值,如果没有按键,将等待
* 输入参数:asc 和 scan 是 char 变量的地址
* 输出参数:*asc: ASCII码 和 *scan:扫描码
*/
void ReadChar(BYTE * asc, BYTE * scan)
{
union REGS regs;
regs.h.ah = 0;
int86(0x16,&regs,&regs);
*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,&regs,&regs);
return (regs.x.flags & 0x40) ? 0 : 1;
}
/*
* Sleepp18_2等待1/18.2个时钟
* 输入参数
count: 等待次数
*/
void Sleepp18_2( DWORD count )
{
DWORDfar * 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,&regs,&regs);
*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,&regs,&regs);
}
/*
* 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,&regs,&regs);
}
/*
* SetCursorOn
设置光标可见
*/
void SetCursorOn()
{
union REGS regs;
regs.h.ch = 11;
regs.h.cl = 12;
regs.h.ah = 0x01;
int86(0x10,&regs,&regs);
}
/*
* SetCursorOff
隐藏光标
*/
void SetCursorOff()
{
union REGS regs;
regs.h.ch = 0x20;
regs.h.cl = 0x00;
regs.h.ah = 0x01;
int86(0x10,&regs,&regs);
}
/*
* 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,&regs,&regs);
}
/*
* 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么?我看不懂他要干啥。。
谁要是能说明白这个我追分!!!!!!!(我主要要这个!!)

回复

使用道具 举报

千问 | 2009-1-1 13:51:49 | 显示全部楼层
首先,你先去看下这个联合变量REGS里面是什么东西。这个涉及到dos的中断向量调用。例如int86(0x10,&regs,&regs); 你可以现把它当成一个函数。学汇编的时候会学到中断向量这里。#ifndef mybios#define mybios...#endif这句代码的作用是防止省略号的内容重复定义...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行