您的位置:首页 > 编程语言 > C语言/C++

C语言的常用库函数使用方法分析及用途(9)

2012-04-16 16:28 639 查看
│  │       │      │
  │  │  flags   │      │

  │  │       │      │

  └  └───────┴──────┘

  │   x 两个结构变量 h  │

  └──  共享同一存储域 ──┘

  其中字段flags对应于标志寄存器。字段cflag仅对应于进位标志位,函数在调用时不用该字段,只在返回时设置这个字段,因为许多BIOS服务都是通过进位标置为0还是1来表示成功还是失败。

  注2:需先定义 struct SREGS 段寄存器指针名;

  结构SREGS定义如下

  struct SREGS {unsigned int es,cs,ss,ds}

  函数只用了该结构中的段寄存器DS和ES。调用时根据它们的值设置DS和ES,同时把DS和ES原来的值保存在这个结构中,返回时再恢复DS和ES为原来的值,这就允许程序使用远指针或大数据编译模式。

  该函数置全局变量_doserrno等于寄存器AX中的值,其返回值也等于AX中的值。

  注3:向寄存器传递入口信息

  输入指针名.x.寄存器名=要赋的值(入口信息);

  注4:调用int86x后得接受出口信息

  变量名=输出指针名.x.寄存器名

  intdos()通用dos中断接口函数

  原形:int intdos(inregs,outregs)

  union REGS *inregs;//调用时的各寄存器的值

  union REGS *outregs;//返回寄存器的值

  功能:产生DOS软中断

  注意:如果需要功能号,则装入AH;如果需要子功能号,则装入AL。

  头文件:dos.h

  intdosx()通用dos中断接口函数

  原形:int intdosx(inregs,outregs,segregs)

  union REGS *inregs;调用时的各寄存器的值

  union REGS *outregs;返回寄存器的值

  struct SREGS *seregs;调用时的段寄存器的值(还设置返回时的值)

  功能:产生DOS软中断

  头文件:dos.h

  intr()执行8086软中断函数(改变软中断接口函数)

  原形:void intr(int intno,struct REGPACK *preg)

  调用方式:intr(中断号,&结构变量名)

  注1:结构REGPACK定义如下

  struct REGPACK

  {

  unsigned r_ax,r_bx,r_cx,r_dx;

  unsigned r_bp,r_si,r_di,r_ds,r_es,r_flag;}

  注2:使用时先定义一个结构变量

  struct REGPACK 结构变量名;

  注3:入口和出口用同一个结构变量来传递寄存器的值。

  结构变量名.r_ax=要赋的值;

  ......

  intr(中断号,&结构变量名);

  某变量=结构变量名.r_ax;

  头文件:dos.h

  itoa()把整形数转换为字符串的函数

  原形:char *itoa(int value,char *string,int radix)

  功能:把value的值转换为以NULL结束的字符串,并把结果存在string中。radix是转换的基数值,在2到36之间。分配给string的空间必须可容纳返回的所有字节(最多17字节)。

  返回值:指向string的指针

  头文件:stdlib.h

  kbhit()检查当前按下的键的函数

  原形:int kbhit(void)

  功能:检查按下的键是否有效,若有效则可用getch()或getche()读取。

  返回值:如果按键有效,返回一非零值,否则返回0。

  头文件:conio.h

  keep()驻留并退出函数

  原形:void keep(unsigned char status,unsigned size)

  功能:用于安装一个TSR程序(使用DOS功能调用0x31)。出口状态设置为在status中的值,程序占用存储空间为size,并释放内存的其余部分。

  头文件:dos.h

  log()

  原形∶double log(double num)

  功能∶求num的自然对数值

  头文件∶math.h

  log10()

  原形∶double log10(double num)

  功能∶求num以10为底的对数值

  头文件∶math.h

  _lrotl()将一个无符号长整形数左循环移位的函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: