c语言经典编程282例咋样,C语言经典编程282例

附录D

时间延迟函数

函数名: 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;

**数值8.9.10和13可以分别转换为退格符、制表符、换行符和回车符。这些字符都没有图形表示,但是对于不同的应用程序,这些字符可能会影响文本的显示效果。

ASCII字符集(128 - 255)

代码

字符

代码

字符

代码

字符

代码

字符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值