|
时间延迟函数
函数名: delay
功 能: 将程序的执行暂停一段时间(毫秒)
用 法: void delay(unsigned milliseconds);
重画屏幕区域的函数
函数名:getimage
功 能:将指定区域的一个位图存到主存中
用 法:void far getimage( int left, int top, int right, int bottom, void far *bitmap);
函数名:putimage
功 能:在屏幕上输出一个位图
用 法:void far putimage( int x, int y, void far *bitmap, int op );
图像大小函数
函数名: imagesize
功 能: 返回保存位图像所需的字节数
用 法: unsigned far imagesize( int left, int top, int right, int bottom );
异或模式函数
函数名: setwritemode
功 能: 设置图形方式下画线的输出模式
用 法: void far setwritemode(int mode);
参数MODE可以被设置位COPY_PUT或者XOR_PUT两种模式。当mode被设置为XOR_PUT,其后的图形操作将都采用异或方式。此外之前提到的putimage()函数也可以采用异或模式向屏幕复制图像。
检测键盘输入函数
函数名: kbhit
功 能: 检查当前按下的键
用 法: int kbhit(void);
键盘接口函数
函数名: bioskey
功 能: 直接使用BIOS服务的键盘接口
用 法: int bioskey(int cmd);
该函数通过bois中断0x16执行键盘操作,由参数cmd来决定具体的操作。
Cmd |
具体操作 |
0 |
读取按键的ascii码 |
1 |
测试是否有按键 如果没有按键 返回0 如果按键为ctrl+brk 返回-1 如果是其他按键 返回按键本身键值(直到此按键被取出后恢复0) |
2 |
返回shift key 状态 |
以下是当cmd为2的时候,返回值的具体含义
cmd返回值 |
触发特殊键 |
0X01 |
Left ctrl |
0X02 |
Left alt |
0X04 |
Right ctrl |
0X08 |
Right alt |
0X10 |
Scroll lock |
0X20 |
Num lock |
0X40 |
Caps lock |
0X80 |
Sys rq |
bioskey()函数的优点在于:
1.和kbhit()函数一样可以在不影响主程序运行的情况下检测是否有按键;
2.可以方便地检测普通键具体ASCII码和扫描码;
3.可以方便地检测功能键具体扫描码;
4.可以检测特殊按键;
5.只需要一个函数就能解决检测按键和读入按键的任务。
声音与延迟函数
函数名: sound
功 能: 以指定频率打开PC扬声器
用 法: void sound(unsigned frequency);
函数名: nosound
功 能: 关闭PC扬声器
用 法: void nosound(void);
函数名: delay
功 能: 将程序的执行暂停一段时间(毫秒)
用 法: void delay(unsigned milliseconds);
sound()函数用于让pc喇叭发声,nosound()函数用于使正在发声的pc喇叭静音。要使程序中的发声的具体方法,是调用sound()函数并延迟一定时间,然后使用nosound()函数静音,具体语句实现方法如下:
sound(100);
delay(100);
nosound();
产生随即数函数
函数名: rand
功 能: 随机数发生器
用 法: void rand(void);
函数名: random
功 能: 随机数发生器
用 法: int random(int num);
初始化随机数函数
函数名: randomize
功 能: 初始化随机数发生器
用 法: void randomize(void);
in86()函数
函数名: int86
功 能: 通用8086软中断接口
用 法: int int86( int intr_num, union REGS *inregs, union REGS *outregs );
其中intr_num为软中断号,函数通过inregs寄存器向中断发出具体功能命令,函数将中断调用结果返回寄存器outregs。
memset()函数
函数名: memset
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
用 法: void *memset(void *s, char ch, unsigned n);
标准VGA显示模式表
模式(16进制) |
适配器 |
显示类型 |
颜色 |
字符格式 |
屏幕大小 |
字符大小 |
缓冲区首址 |
属性类型 |
0/1 |
CGA |
文本 |
16/16 |
40*25 |
320*200 |
8*8 |
B8000 |
彩色 |
|
EGA |
文本 |
16/64 |
40*25 |
320*350 |
8*14 |
B8000 |
彩色 |
|
VGA |
文本 |
16/256K |
40*25 |
360*400 |
9*16 |
B8000 |
彩色 |
|
CGA |
文本 |
16/16 |
80*25 |
640*200 |
8*8 |
B8000 |
彩色 |
2/3 |
EGA |
文本 |
16/64 |
80*25 |
640*350 |
8*14 |
B8000 |
彩色 |
|
VGA(3+) |
文本 |
16/256K |
80*25 |
720*400 |
9*16 |
B8000 |
彩色 |
|
CGA |
图形 |
4/16 |
40*25 |
320*200 |
8*8 |
B8000 |
彩色 |
4/5 |
EGA |
图形 |
4/64 |
40*25 |
320*200 |
8*8 |
B8000 |
彩色 |
|
VGA |
图形 |
4/256K |
40*25 |
320*200 |
8*8 |
B8000 |
彩色 |
|
CGA |
图形 |
2/16 |
40*25 |
640*200 |
8*8 |
B8000 |
单色 |
6 |
EGA |
图形 |
2/64 |
40*25 |
640*200 |
8*8 |
B8000 |
单色 |
|
VGA |
图形 |
2/256K |
40*25 |
640*200 |
8*8 |
B8000 |
单色 |
7 |
MDA/EGA |
文本 |
单色 |
80*25 |
720*350 |
9*14 |
B0000 |
单色 |
|
VGA(7+) |
文本 |
单色 |
80*25 |
720*400 |
9*16 |
B0000 |
单色 |
D |
EGA |
图形 |
16/64 |
40*25 |
320*200 |
8*8 |
A0000 |
彩色 |
|
VGA |
图形 |
16/256K |
40*25 |
320*200 |
8*8 |
A0000 |
彩色 |
E |
EGA |
图形 |
16/64 |
80*25 |
640*200 |
8*8 |
A0000 |
彩色 |
|
VGA |
图形 |
16/256K |
80*25 |
640*200 |
8*8 |
A0000 |
彩色 |
F |
EGA/VGA |
图形 |
单色 |
80*25 |
640*350 |
8*14 |
A0000 |
单色 |
10 |
EGA |
图形 |
16/64 |
80*25 |
640*350 |
8*14 |
A0000 |
彩色 |
|
VGA |
图形 |
16/256K |
80*25 |
640*350 |
8*14 |
A0000 |
彩色 |
11 |
VGA |
图形 |
2/256K |
80*30 |
640*480 |
8*16 |
A0000 |
彩色 |
12 |
VGA |
图形 |
16/256K |
80*30 |
640*480 |
8*16 |
A0000 |
彩色 |
13 |
VGA |
图形 |
256/256K |
40*25 |
320*200 |
8*8 |
A000 |
彩色 |
常规内存函数
申请函数:malloc(),farmalloc(),calloc(),farcalloc(),realloc(),farealloc()
函数名: malloc
功 能: 内存分配函数
用 法: void *malloc(unsigned size);
函数名: farmalloc
功 能: 从远堆中分配存储块
用 法: void far *farmalloc(unsigned long size);
函数名: calloc
功 能: 分配主存储器
用 法: void *calloc(size_t nelem, size_t elsize);
函数名: farcalloc
功 能: 从远堆栈中申请空间
用 法: void far *farcalloc( unsigned long units, unsigned ling unitsz );
函数名: realloc
功 能: 重新分配主存
用 法: void *realloc(void *ptr, unsigned newsize);
函数名: farrealloc
功 能: 调整远堆中的分配块
用 法: void far *farrealloc( void far *block, unsigned long newsize );
使用函数:memcpy(),memset(),memmove(),movedata()
函数名: memcpy
功 能: 从源source中拷贝n个字节到目标destin中
用 法: void *memcpy(void *destin,void *source,unsigned n);
函数名: memset
功 能: 设置s中的所有字节为ch, s数组的大小由n给定
用 法: void *memset(void *s, char ch, unsigned n);
函数名: memmove
功 能: 移动一块字节
用 法: void *memmove(void *destin,void *source,unsigned n);
函数名: movedata
功 能: 拷贝字节
用 法: void movedata(int segsrc, int offsrc, int segdest, int offdest, unsigned numbytes);
释放函数:free(),farfree()
函数名: free
功 能: 释放已分配的块
用 法: void free(void *ptr);
函数名: farfree
功 能: 从远堆中释放一块
用 法: void farfree(void);
指针操作函数:MK_FP(),FP_OFF(),FP_SEG()
函数名: MK_FP
功 能: 设置一个远指针
用 法: void far *MK_FP(unsigned seg, unsigned off);
函数名: FP_OFF
功 能: 获取远地址偏移量
用 法: unsigned FP_OFF(void far *farptr);
函数名: FP_SEG
功 能: 获取远地址段值
用 法: unsigned FP_SEG(void far *farptr);
XMS功能调用索引表:
功能号 |
功能 |
版本 |
功能00H 功能01H 功能02H 功能03H 功能04H 功能05H 功能06H 功能07H 功能08H 功能09H 功能0AH 功能0BH 功能0CH 功能0DH 功能0EH 功能0FH 功能10H 功能11H |
取XMS版本号 请求高内存区HMA 释放高内存区HMA 全程启用A20 全程停用A20 局部启用A20 局部停用A20 查询A20状态 查询自由扩展内存 分配扩展内存块 释放扩展内存块 移动扩展内存块 锁住扩展内存块 扩展内存块解锁 取EMB句柄信息 重新分配扩展内存块 请求上位存储块UMB 释放上位存储块UMB |
XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 XMS规范V2.0 |
EMS功能调用索引:
功能号 |
功能 |
功能40H 功能41H 功能42H 功能43H 功能44H 功能45H 功能46H 功能47H 功能48H 功能4BH 功能4CH 功能4DH |
取得EMS程序状态 取得物理映射页面的段地址 获取逻辑页页数信息 分配句柄和内存 内存映射 释放句柄和内存 获取EMM的版本号 保存指定句柄映射关系 恢复指定句柄映射关系 获取EMM的句柄数 获取指定句柄所分配的逻辑页页数 取所有句柄分配情况 |
键盘扫描码表:
键名 |
扫描码 |
键名 |
扫描码 |
键名 |
扫描码 |
Esc |
1 |
A |
30 |
F1 |
59 |
! or 1 |
2 |
S |
31 |
F2 |
60 |
@ or 2 |
3 |
D |
32 |
F3 |
61 |
# or 3 |
4 |
F |
33 |
F4 |
62 |
$ or 4 |
5 |
G |
34 |
F5 |
63 |
% or 5 |
6 |
H |
35 |
F6 |
64 |
^ or 6 |
7 |
J |
36 |
F7 |
65 |
& or 7 |
8 |
K |
37 |
F8 |
66 |
* or 8 |
9 |
L |
38 |
F9 |
67 |
( or 9 |
10 |
: or ; |
39 |
F10 |
68 |
) or 0 |
11 |
“ or ‘ |
40 |
F11 |
133 |
- |
12 |
~ or ` |
41 |
F12 |
134 |
= |
13 |
Left shift |
42 |
Numlock |
69 |
Bksp |
14 |
\ |
43 |
Scroll lock |
70 |
Tab |
15 |
Z |
44 |
Home or 7 |
71 |
Q |
16 |
X |
45 |
Up or 8 |
72 |
W |
17 |
C |
46 |
Pgup or 9 |
73 |
E |
18 |
V |
47 |
Gray - |
74 |
R |
19 |
B |
48 |
Left or 4 |
75 |
T |
20 |
N |
49 |
Center or 5 |
76 |
Y |
21 |
M |
50 |
Right or 6 |
77 |
U |
22 |
< or , |
51 |
Gray + |
78 |
I |
23 |
> or . |
52 |
End or 1 |
79 |
O |
24 |
? or / |
53 |
Down or 2 |
80 |
P |
25 |
Right shift |
54 |
Pgdn or 3 |
81 |
{ or [ |
26 |
Prt sc or * |
55 |
Ins or 0 |
82 |
} or ] |
27 |
Alt |
56 |
Del or . |
83 |
enter |
28 |
Space bar |
57 |
|
|
ctrl |
29 |
Caps lock |
58 |
|
|
键盘ASCII码表
ASCII字符集 (0 - 127)
代码 |
字符 |
代码 |
字符 |
代码 |
字符 |
代码 |
字符 |
0 |
|
32 |
[空格] |
64 |
@ |
96 |
` |
1 |
|
33 |
! |
65 |
A |
97 |
a |
2 |
|
34 |
" |
66 |
B |
98 |
b |
3 |
|
35 |
# |
67 |
C |
99 |
c |
4 |
|
36 |
$ |
68 |
D |
100 |
d |
5 |
|
37 |
% |
69 |
E |
101 |
e |
6 |
|
38 |
& |
70 |
F |
102 |
f |
7 |
|
39 |
' |
71 |
G |
103 |
g |
8 |
** |
40 |
( |
72 |
H |
104 |
h |
9 |
** |
41 |
) |
73 |
I |
105 |
i |
10 |
** |
42 |
* |
74 |
J |
106 |
j |
11 |
|
43 |
+ |
75 |
K |
107 |
k |
12 |
|
44 |
, |
76 |
L |
108 |
l |
13 |
** |
45 |
- |
77 |
M |
109 |
m |
14 |
46 |
. |
78 |
N |
110 |
n | |
15 |
|
47 |
/ |
79 |
O |
111 |
o |
16 |
|
48 |
0 |
80 |
P |
112 |
p |
17 |
|
49 |
1 |
81 |
Q |
113 |
q |
18 |
|
50 |
2 |
82 |
R |
114 |
r |
19 |
|
51 |
3 |
83 |
S |
115 |
s |
20 |
|
52 |
4 |
84 |
T |
116 |
t |
21 |
|
53 |
5 |
85 |
U |
117 |
u |
22 |
|
54 |
6 |
86 |
V |
118 |
v |
23 |
|
55 |
7 |
87 |
W |
119 |
w |
24 |
|
56 |
8 |
88 |
X |
120 |
x |
25 |
|
57 |
9 |
89 |
Y |
121 |
y |
26 |
|
58 |
: |
90 |
Z |
122 |
z |
27 |
|
59 |
; |
91 |
[ |
123 |
{ |
28 |
|
60 |
< |
92 |
\ |
124 |
| |
29 |
|
61 |
= |
93 |
] |
125 |
} |
30 |
‑ |
62 |
> |
94 |
^ |
126 |
~ |
31 |
|
63 |
? |
95 |
_ |
127 |
&127; |
** 数值
ASCII字符集 (128 - 255)
代码 |
字符 |
代码 |
字符 |
代码 |
字符 |
代码 |
字符 |
128 |
|