注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
415851641的个人空间 https://home.eeworld.com.cn/space-uid-514235.html [收藏] [复制] [分享] [RSS]
日志

C语言经典编程282例

已有 407 次阅读2013-11-15 16:46 |

附录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 状态

 

    以下是当cmd2的时候,返回值的具体含义

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)

代码

字符

代码

字符

代码

字符

代码

字符

128

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册