版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c语言的常用库函数函数1。absread()读磁盘绝对扇区函数原形:intabsread(intdrive,intnum,intsectnum,void*buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0 x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:drive=0对应A盘,drive=1对应B盘。返回值:0:成功;-1:失败。头文件:dos.h函数2。abswrite()写磁盘绝对扇区函数原形:intabswrite(intdrive,intnsects,intlsect,void*buffer)driv
2、e=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址。功能:将指定内容写入(调用DOS中断0 x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。返回值:0:成功;-1:失败。头文件:dos.h函数3。atof()将字符串转换成浮点数的函数原形:doubleatof(constchar*s)功能:把s所指向的字符串转换成double类型。s格式为:符号数字数字E符号数字返回值:字符串的转换值。头文件:math.h、stdlib.h函数4。atoi(
3、)将字符串转换成整型数的函数原形:intatoi(constchar*s)功能:把s所指向的字符串转换成int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.h函数5。atol()将字符串转换成长整型数的函数原形:longatol(constchar*s)功能:把s所指向的字符串转换成longint类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.h函数6。bcd()把一个数转换成对应的BCD码的函数原形:bcdbcd(intx)bcdbcd(doublex)bcdbcd(doublex,intdecimals)注意:B
4、CD码的精度可达17位。参数decimals是可选的,用来指定转换后小数点后的位数。头文件:bcd.h函数7。bdos()原形:intbdos(intfnum,unsigneddx,unsignedal)其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;功能:DOS系统调用(INT21H)返回值:AX中的值函数8。biosdisk()调用BIOS磁盘驱动程序函数原形:charbiosdisk(intcmd,intdrive,inthead,inttrack,intsector,intnsects,void*buffer)功能:使用中断0 x13,直接调用BIOS进行
5、磁盘操作参数:(1)cmd:数据以每扇区512字节的格式读入buffer,起始扇区由head、track和sector定,扇区数由nsects定。将buffer中的数据按每扇区512字节写入磁盘。对扇区进行数据校验。6-格式化一个磁盘并对化扇区设置化标志。8-返回当前驱动器参数在buffer的前4个字节中。长读,每扇区读入512字节加上额外的4个字节。长写,每扇区写入512字节加上额外的4个字节。drive:0-第一个软驱;1-第二个软驱;0 x80-第一个硬驱head:磁头track:磁道sector:扇区nsects:扇区数buffer:数据缓冲区,定义为unsignedcharbuffe
6、r;返回值:0 x00-操作成功0 x01-错误命令0 x03-企图写具有写保护的磁盘0 x07-驱动器参数设置错误0 x10-磁盘读/CRC/ECC错误头文件:bios.h注:对于硬盘主引导记录扇区head=0,track=0,sector=1函数9。biosprint()调用BIOS打印机I/O接口的函数原形:intbiosprint(intcmd,intabyte,intport)功能:通过BIOS中断0 x17在由参数port指定的打印机上完成各种打印机功能。port=0(LPT1)=1(LPT2);cmd=0(打印字符abyte)1(初始化打印机端口)2(读打印机状态);abyte=
7、0-255;返回值:打印机状态位0(设备超时);位3(I/O出错);位4(打印机已选择);位5(没纸);位6(打印机确认);位7(不忙)头文件:bios.h函数10。calloc()分配内存函数原形:void*calloc(size_tnitems,size_tsize)功能:在堆中分配一块内存,将该内存的内容全部清0。返回值:返回指向新分配内存的指针。空间不够则返回NULL。头文件:stdlib.h、calloc.h函数11。ceil()原形:doubleceil(doublenum)功能:求不小于num的最小双精度整数头文件:math.h函数12。cgets()读字符串函数原形:char*
8、cgets(char*str)功能:从控制台读入一个字符串,并将该字符串(和字符串长度)存入有str所指向的地址中。注意:在调用cgets之前,必须将要读入的字符串最大长度存入str0中,返回时str1被设置为实际读入的字符数。实际字符串内容从str开始,以空字符(0)结尾。返回值:指向str2的指针。头文件:conio.h函数13。chdir()改变当前目录的函数原形:intchdir(constchar*path)功能:把由path指定的目录改为当前目录。path参数中可以指定驱动器号,如如a:ddd,但只是改变该驱动器上的当前目录,对当前活动驱动器上的当前目录无影响。返回值:0(成功);
9、-1(失败)头文件:dir.h函数14。_chmod()改变文件存取权限的函数原形:int_chmod(constchar*path,intfunc,intattrib)功能:读取(func=0时)或设置(func=1时)DOS文件属性。attrib=FA_RDONLY只读attrib=FA_HIDDEN隐藏文件attrib=FA_SYSTEM系统文件attrib=FA_LABLE卷标attrib=FA_DIREC目录attrib=FA_ARCH档案返回值:失败时返回-1。成功时返回文件的属性字节,如果返回值&FA_RDONLY不等于0,则文件是只读文件;头文件:io.h、dos.h函数15。
10、chmod()改变文件存取权限的函数原形:intchmod(constchar*path,intamode)功能:根据amode的值,设置由path所指文件的存取权限。amode的值存取权限S_IWRITE允许写S_IREAD允许读(只读)S_IREAD|S_IWRITE可读可写返回值:0(成功);-1(失败)头文件:io.h、sysstat.h函数16。clock()原形:longclock(void)功能:测得从程序开始到调用处处理机所用的时间头文件:time.h函数17。close()关闭文件函数原形:intclose(inthandle)功能:关闭由文件句柄所指向的文件,句柄是调用_c
11、reat、creat、creatnew、creattemp、dup、dup2、_open或open时得到的。该函数并不在文件末尾写一个Ctrl-Z字符,如果想用该字符结束文件,必须显式地给出该字符。返回值:0(成功);-1(失败)头文件:io.h函数18。closegraph()关闭图形函数原形:voidfarclosegraph(void)功能:释放图形系统分配的所有内存,将屏幕恢复到调用initgraph之前的模式。头文件:graphics.h函数19。cos()原形:doublecos(doublearg)功能:计算arg(弧度)的余弦值头文件:math.h函数20。ctrlbrk()设
12、置ctrl-break处理程序的函数原形:voidctrlbrk(int(*handle)(void)功能:修改中断向量0 x23,使用新的ctrl-break中断处理函数。用法:ctrlbrk(函数名);先定义函数:int函数名(void).头文件:dos.h函数21。delay()暂停函数原形:voiddelay(unsignedmilliseconds)功能:暂停当前所执行的程序milliseconds毫秒。头文件:dos.h函数22。disable()屏蔽中断的宏原形:voiddisble(void)功能:屏蔽中断,只允许从外部设备来的不可屏蔽中断(NMI)。头文件:dos.h函数23
13、。enable()开硬件中断的宏原形:voidenable(void)功能:开放中断,允许接受任何设备产生的中断。头文件:dos.h函数24。exec()加载并运行其它程序的函数族execl(),execle(),execlp(),execlpe(),execv(),execve(),execvp(),execvpe()原形:intexecl(char*path,char*arg0,*arg1,.,*argn,NULL)intexecle(char*path,char*arg0,*arg1,.,*argn,NULL,char*env)intexeclp(char*path,char*arg0,
14、*arg1,.,*argn,NULL)头文件:alloc.h头文件:alloc.hintexeclpe(char*path,char*arg0,*arg1,.,*argn,NULL,char*env)intexecv(char*path,char*argv)intexecve(char*path,char*argv,char*env)intexecvp(char*path,char*argv)intexecvpe(char*path,char*argv,char*env)其中,path是调用的子程序的文件名,在xec后面的后缀具有某种功能:p表示函数能够在由DOS环境变量PATH的目录中搜索子
15、进程文件,如果path中未指明文件所在目录,函数将首先在当前目录中找,然后在DOS环境变量指定的目录中找。l表示参数指针(argO,.,argn)按单独参数传送。当预先知道要传送的参数个数时,通常用带后缀l的函数。v表示参数指针(argO,.,argn)按指针数组传送。当要传送的参数可变时,使用带后缀v的函数。e表示参数env可以传送到子进程,该函数可用来修改子进程的环境。若无e后缀,子进程将继承父进程的环境。注意:argO+.+argn,或arg0+.+argn的总长度必需小于128字节。当调用exec函数时,原先已经打开的文件在子进程中仍然是打开的。功能:加载并运行其它程序,调用时必须有足
16、够的内存空间用于加载和执行子程序,子程序将覆盖父程序。头文件:process.h函数25。farcalloc()从远堆中分配内存的函数原形:voidfar*farcalloc(unsignedlongnunits,unsignedlongunitsz)功能:从远堆中为包含nunits个元素的数组分配内存,每一区unitsz字节长。用法:fptr=farcalloc(数目,sizeof(char);先定义:charfar*fptr;注意:所有可用RAM能被分配;大于64K的块能被分配;用远指针存取该块。微模式不能用。返回值:返回指向新分配块的指针,若内存不够,则返回NULL。头文件:alloc.
17、h函数26。farfree()从远堆中释放一块已分配内存的函数原形:voidfarfree(voidfar*block)头文件:alloc.h函数27。farmalloc()从远堆中分配内存的函数原形:voidfar*farmalloc(unsignedlongnbytes)使用方式:fptr=farmalloc(字节数);先定义charfar*fptr;功能:从远堆中分配长nbytes字节的内存。注意:所有可用RAM能被分配;大于64K的块能被分配;用远指针存取该块。微模式不能用。返回值:返回指向新分配内存的指针,若内存不够,则返回NULL。函数28。farrealloc()调整远堆中已分配
18、块的函数原形:voidfar*farrealloc(voidfar*oldblock,unsignedlongnbytes)返回值:返回调整后的新内存地址。若不能重新分配,则返回NULL。头文件:alloc.h函数29。fclose()关闭一个流函数原形:intfclose(FILE*stream)使用方式:fclose(文件指针名);其中文件指针名=fopen();功能:关闭指定的流,关闭前清除所有与stream相联的缓冲区,释放系统分配的缓冲区,但由setbuf设置的缓冲区不能自动释放。返回值:0(成功);EOF(失败)头文件:stdio.h函数30。fcloseall()关闭打开的流的函
19、数原形:intfcloseall(void)功能:关闭所有打开的流,由stdin、stdout、stdprn、stderr和stdaux设置的流除外。返回值:关闭流的总数。如果发现错误则返回EOF。头文件:stdio.h函数31。feof()检查文件是否结束的函数原形:intfeof(FILE*fp)返回值:文件结束返回非0值,否则返回0。头文件:stdio.h函数32。fgets()从流中读取一字符串的函数原形:char*fgets(chars,intn,FILE*stream)使用格式:fgets(字符串指针,字符个数,文件指针)功能:从输入流stream中读入字符存到s串中。当读了n-1
20、个字符或遇到换行符时,函数停止读过程。fgets在s串尾保留换行字符。读入的最后一个字符后面加一个空字符。返回值:成功时返回字符串参数s,出错或遇到文件结束时,返回NULL。头文件:stdio.h函数33。findfirst()函数和findnext()函数调用方式:整形数=findfirst(文件名,&结构变量名,属性常数组合(如0 x26);其中定义structffblk结构变量名;原形:intfindfirst(path,buffer,attr)和intfindnext(buffer)char*path;要检索的文件名structffblkcharff_reserved21;charff
21、_attrib;被检索的文件属性unsignedff_ftime;最后修改的时间/(0-4位:秒数/2;5-10位:分数;11-15位:小时数)unsignedff_fdate;最后修改的日期/(0-4位:日;5-8位:月;9-15位:年减1980)longff_fsize;文件大小charff_name13;组名*buffer;intattr;/要检索的文件属性功能:检索由path和attr指定的文件,把结果返回到buffer。findfirst返回关于第一个指定文件的信息,findnext继续检索。返回值:0(检索成功),-1(没有找到指定的文件)属性常数:FA_NORMAL(0 x00)
22、含意:Normalfile,noattributesFA_RDONLY(0 x01)含意:只读FA_HIDDEN(0 x02)含意:隐含文件FA_SYSTEM(0 x04)含意:系统文件FA_LABEL(0 x08)含意:卷标FA_DIREC(0 x10)含意:子目录FA_ARCH(0 x20)含意:修改的文件Archive头文件:dir.h(dos.h)函数34。floodfill()填充区域的函数原形:voidfarfloodfill(intx,inty,intborder)功能:在图形设备上用颜色border围起来的区域将用当前填充颜色填充。(x,y)是待填充区域的起点,若起点在封闭区域
23、内,则区域内被填充;若起点在封闭区域外,则区域外被填充。头文件:graphics.h函数35。floor()原形:doublefloor(doublenum)功能:求不大于num的最大双精度整数头文件:math.h函数36。fnmerge()建立文件路径函数原形:voidfnmerge(char*path,constchar*drive,constchar*dir,constchar*name,constchar*ext)功能:合成drive:dirname.ext,放在path头文件:dir.h函数37。fnsplit()分解完整的路径名函数原形:intfnsplit(char*path,c
24、onstchar*drive,constchar*dir,constchar*name,constchar*ext)功能:把文件名路径path分成4个部分存放。其中drive中有冒号;dir中有开始和结尾的反斜杠;ext包括开始圆点返回值:如果有扩展名,贝返回值&EXTENSIONS。如果有文件名,则返回值&FILENAME!=0如果有目录名,则返回值&DIRECTORY!=O如果有驱动器号,则返回值&DIRVE!=0头文件:dir.h函数38。fopen()打开一个流函数原形:FILE*fopen(constchar*filename,constchar*mode)功能:打开用filenam
25、e指定的文件,并使其与一个流相联。使用方式:文件指针名=fopen(文件名,”处理方式)处理方式取:rt打开一个文本文件,只能读。wt生成一个文本文件,只能写。若文件存在则被重写。at打开一个文本文件,只能在文件尾部添加。rb打开一个二进制文件,只能读。wb生成一个二进制文件,只能写。ab打开一个二进制文件,只能在文件尾部添加。rt+打开一个文本文件,可读可写。wt+生成一个文本文件,可读可写。at+打开一个文本文件,可读可添加。rb+打开一个二进制文件,可读可写。wb+生成一个二进制文件,可读可写。ab+打开一个二进制文件,可读可添加。返回值:指明流的指针(成功时)或NULL(失败时)注:需
26、先定义FILE*文件指针名;文件名若用argv1代替,则可使用命令行形式指定文件名函数39。FP_OFF()获取远地址偏移量的宏原形:unsignedFP_OFF(voidfar*p)功能:取得和设置远指针*p的偏移量返回值:偏移量头文件:dos.h函数40。fprintf()传送输出到一个流中的函数原形:intfprintf(FILE*stream,constchar*format,argument,.)功能:向文件指针指向的文件输出ASCII代码向显示器输出错误信息使用形式:使用形式:fprintf(文件指针,输出格式,输出项系列);fprintf(stderr,错误信息”);使用实例:f
27、printf(stream,%d%c%f,i,c,f);其中定义FILE*stream;inti;charc;floatf;返回值:成功则返回输出的字节数,错误则返回EOF。头文件:stdio.h函数41。FP_SEG()获取远地址段值的宏原形:unsignedFP_SEG(voidfar*p)功能:取得和设置远指针*p段地址值返回值:段地址值头文件:dos.hfree()释放已分配内存的函数原形:voidfree(void*block)功能:释放由calloc、malloc、realloc函数调用所分配的内存。头文件:stdlib.h、alloc.h函数42。fscanf()格式化输入函数原
28、形:intfscanf(FILE*stream,constchar*format,address,.)功能:从一个流中扫描输入字段,一次扫描一个字符,每个输入字段根据format所指格式指示符格式化后,把输入字段存在format后面由地址参数给出的位置上。使用格式:fscanf(文件指针,输入格式,输入项系列);使用实例:fscanf(fp,%d,&b);从fp指向的文件中读取十进制整数(ASCII形式)赋予变量b注:当文件指针是stdin时,与scanf功能完全相同头文件:stdio.h函数43。fseek()移动文件指针函数原形:intfseek(FILE*stream,longoffse
29、t,intwhence)作用:强制一个文件的位置指针指向某个特定的位置(甚至超出文件的尾部)。使用格式:fseek(*文件指针,偏移(长整型),起点)定义FILE*文件指针名;起点取值:0或SEEK_SET(表示文件开头)1或SEEK_CUR(表示当前位置)2或SEEK_END(表示文件尾端)返回值:0表示成功,非0值表示失败头文件:stdio.h函数44。fwrite()把参数写入流中的函数原形:size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*stream)功能:附加n个数据项(每个数据项长度为size个字节)到指定的输出文件后,数据从p
30、tr处开始添加。ptr是指向任意对象的指针。返回值:调用成功时返回实际写的数据项数,出错时返回一短整形数值。头文件:stdio.h例:fwrite(&s,sizeof(s),l,stream);其中s是一结构变量,stream=fopen();函数45。gcvt()把双精度数转化成字符串的函数原形:char*gcvt(value,ndigit,buf)其中:doublevalue是待转化数intndigit是转化长度char*buf保存转化后的地址头文件:stdlib.h函数46。geninterrupt()执行中断函数原形:voidgeninterrupt(intn)调用方式:geninte
31、rrupt(软中断号)功能:产生一个8086软中断注:需先向寄存器传递入口信息(用伪变量)例如伪变量=要赋的值(入口信息);调用geninterrupt()函数后得接受出口信息例如变量名=伪变量伪变量:TurboC允许使用伪变量直接访问相应的8086寄存器。伪变量的类型有两种。unsignedint:_AX、_BX、_CX、_DX、_CS、_DS、_SS、_ES、_SP、_BP、_DI、_SIunsignedchar:_AL、_AH、_BL、_BH、_CL、_CH、_DL、_DH函数47。getc()从流中取字符的宏原形:intgetc(FILE*stream)功能:返回输入流stream中一
32、个字符,移动文件指针使之指向下一个字符。使用格式:字符变量=getc(文件指针)(正常情况下读取到代码值,读到文件尾或出错时返回F)头文件:dos.h头文件:graphics.h注:需定义char字符变量;FILE*文件指针;头文件:stdio.h函数48。getch()从键盘无回显地读取一字符的函数功能:将键盘上输入的单个字符的值(ASCII码)立刻赋给字符型变量调用方式:字符形变量=getch()注:需先定义char字符形变量;头文件:conio.h函数49。getchar()从stdin流中读取一个字符的函数功能:将键盘上输入的单个字符的值(ASCII码)回车后赋给字符型变量调用方式:字
33、符型变量=getchar()注:需先定义char字符型变量;头文件:stdio.h函数50。getcurdir()读取指定驱动器的当前目录的函数原形:intgetcurdir(intdrive,chardirectory)drive=0(缺省);1(A驱动器);.directory用来存放目录名,不包括驱动器名,不以反斜杠开始。返回值:0(调用成功);1(出错)头文件:dir.h函数61ogetcwd()读取当前目录的函数原形:char*getcwd(char*buf,intbuflen)功能:读取当前目录的完整路径名(包括驱动器名),最长为buflen个字节,存放在buf中。如果buf为NU
34、LL,函数将分配一个buflen字节长的缓冲区,以后可将本函数的返回值作为free函数的参数来释放该缓冲区。返回值:若buf非空,调用成功返回buf,出错返回NULL;若buf为NULL,返回指向已经分配的内存缓冲区地址。头文件:dir.h函数62。getdate()读取系统日期函数原形:voidgetdate(pdate)structdateintda_year;intda_day;intda_mon;structdate*pdate;头文件:dos.h头文件:graphics.h函数63。getdfree()读取磁盘空闲空间的函数原形:voidgetdfree(drive,dtable)u
35、nsignedchardrive;驱动器号(0-当前;1-A;2-B;.)structdfreeunsigneddf_avail;可使用的簇数unsigneddf_total;每个驱动器的簇数unsigneddf_bsec;每个扇区的字节数unsigneddf_sclus;每个簇的扇区数(出错时返回0 xffff)*dtable;功能:把由drive指定的关于驱动器的信息返回到dtable函数64。getdisk()读取当前磁盘驱动器号函数原形:intgetdisk(void)功能:取得当前驱动器号(0=A;1=B;)头文件:dir.h函数65。getenv()读取环境变量的当前值的函数原形:
36、char*getenv(constchar*name)用法:s=getenv(环境变量名”);需先定义char*s;功能:返回一给定的环境变量值,环境变量名可大写或小写。如果指定的变量在环境中未定义,则返回一空串。头文件:stdlib.h函数66。getimage()将指定区域的位图象存入内存的函数原形:voidfargetimage(intleft,inttop,intright,intbottom,voidfar*bitmap)功能:将图像(矩形区域)从屏幕拷贝到内存,*bitmap指向内存中存放图像的区域。该区域的前两个字节用于存放矩形的高和宽。头文件:graphics.h函数67。ge
37、tmaxx()返回屏幕上最大的X坐标值的函数原形:intfargetmaxx(void)功能:返回当前图形驱动程序和图形模式下最大的X坐标值。头文件:dos.h头文件:graphics.h函数68。getmaxy()返回屏幕上最大的Y坐标值的函数原形:intfargetmaxy(void)功能:返回当前图形驱动程序和图形模式下最大的Y坐标值。头文件:graphics.h函数69。getpixel()读取像素颜色的函数原形:unsignedfargetpixel(intx,inty)头文件:graphics.h函数70。getpsp()原形:unsignedgetpsp(void)功能:使用DO
38、S系统调用0 x62,返回程序段前缀(PSP)的段地址头文件:dos.h函数71。gets()从标准输入流stdio中读取一字符串的函数功能:将键盘上输入的字符串立刻赋予字符串变量并显示出来调用方式:gets(字符串变量名)注:需定义char*字符串变量名;函数72。gettime()读取系统时间的函数原形:voidgettime(ptime)structtimeunsignedcharti_min;unsignedcharti_hour;unsignedcharti_hund;百分之一秒unsignedcharti_sec;structtime*ptime;函数73。getvect()读取中
39、断向量函数原形:voidinterrupt(*getvect(intinterruptno)功能:读入由interruptno(0-255之间)所指定的中断向量值,并把该中断向量值作为中断函数的远指针返回。返回值:指定中断向量的当前4字节值。使用实例:oldfunc=getvect(5);先定义voidinterrupt(*oldfunc)();用后恢复setvect(5,oldfunc);函数74。getx()返回当前图形方式下位置的X坐标值的函数原形:intfargetx(void);头文件:graphics.h函数75。gety()返回当前图形方式下位置的Y坐标值的函数原形:intfar
40、gety(void);头文件:graphics.h函数76。imagesize()返回保存图像缓冲区大小的函数原形:unsignedfarimagesize(intleft,inttop,intright,intbottom)功能:确定保存图像所需的存储区大小。返回值:返回存储区的大小(字节),若所需内存大于等于64K-1字节,则返回Oxffff(-1)。头文件:graphics.h函数77。initgraph()显示模式控制函数(初始化图形系统函数)功能:把图形适配器设置为一种图形模式,将选择的图形驱动程序(在BGI文件中)装入到内存。调用方式:voidfarinitgraph(intfar
41、*driver,intfar*mode,charfar*path)其中:*driver可以是数值(0-10),也可是符号值(DETECT、CGA、MCGA、EGA、EGA64、EGAMONO、RESERVED、HERCMONO、ATT400、VGA、PC3270)。*mode参数从图形系统为各种常用的图形适配器设置的图形模式中(CGAC0、IBM8514HI-见头文件graphics.h)选取。常用的有:VGAMED或1(640 x350)(等效于BIOS的模式15)、EGAHI或1(640 x350)等。path指向的字符串为装入驱动程序的路径。如果缺省路径,驱动程序在当前目录。结束方法:v
42、oidfarclosegraph()函数用于当程序还要继续在字符模下运行时。它释放由图形函数所占用的内存,同时把屏幕模式恢复为调用initgraph()之前的模式。voidfarrestorecrtmode()函数用于结束运行。将图形适配器设置到原来的模式。任何分配的内存都将自动释放。头文件:graphics.h函数78。inport()从端口中读入一个字的函数原形:intinport(intportid)调用方式:整型变量=inport(Ox端口号);功能:从指定端口地址读一个字。头文件:dos.h函数79。inportb()从端口读入一个字节的函数原形:unsignedcharinport
43、b(intportid)调用方式:字符变*=inportb(0 x端口号);功能:从指定端口地址读一个字节。头文件:dos.h函数80。int86()执行中断函数(调用8086软中断函数)原形:intint86(intintno,unionREGS*inregs,unionREGS*outregs)调用方式:int86(中断号,&输入指针名,&输出指针名)返回值:中断处理结束时的AX寄存器的值,错误时outregs-x.cflag!=0功能:函数int86()用来执行指定的8086软中断。首先把输入指针所指的共用体中的内容拷贝到CPU的寄存器中,随即产生对应的中断,返回后将CPU寄存器(AX)
44、的内容拷贝到输出指针指向的共用体中。在使用int86()函数进行BIOS接口的系统调用时,有的中断调用设有若干选择项,这些选择项可以根据调用时AH寄存器中的值来进行访问。注:1.需先定义unionREGS输入指针名,输出指针名;2.向寄存器传递入口信息输入指针名.x.寄存器名=要赋的值(入口信息);3调用int86后得接受出口信息变量名=输出指针名.x.寄存器名4.REGS的定义(在dos.h中):structWORDREGSunsignedintax,bx,cx,dx,si,di,cflag,flags;structBYTEREGSunsignedcharal,ah,bl,bh,cl,ch,
45、dl,dh;unionREGSstructWORDREGSx;structBYTEREGSh;头文件:dos.h函数81。int86x()执行中断函数(通用8086软中断接口函数)头文件:dos.h原形:intint86x(intintno,unionREGS*inregs,unionREGS*outregs,structSREGS*segregs)调用方式:int86x(中断号,&输入指针名,&输出指针名,&段寄存器指针名;注1:需先定义unionREGS输入指针名,输出指针名;unionREGS示意图structstructrrnirnIIIalI1byteIIIaxL1T12bytesI
46、IIahII1i1111LI1IblnIIbx1TIIbh1ILLI1Icl1TTIIIcxL1TTIIch1ILLI1IdlTTIIdx1TIIdhIWORDREGSBYTEREGSunionregssidiITOC o 1-5 h zIIIII卜TIIIIIIIcflagIIIIIII卜TIIIIIIIflagsIIIIIIx两个结构变量hIL共享同一存储域JL共享同一存储域J其中字段flags对应于标志寄存器。字段cflag仅对应于进位标志位,函数在调用时不用该字段,只在返回时设置这个字段,因为许多BIOS服务都是通过进位标置为0还是1来表示成功还是失败。注2:需先定义structSRE
47、GS段寄存器指针名;结构SREGS定义如下structSREGSunsignedintes,cs,ss,ds函数只用了该结构中的段寄存器DS和ES。调用时根据它们的值设置DS和ES,同时把DS和ES原来的值保存在这个结构中,返回时再恢复DS和ES为原来的值,这就允许程序使用远指针或大数据编译模式。该函数置全局变量_doserrno等于寄存器AX中的值,其返回值也等于AX中的值。注3:向寄存器传递入口信息输入指针名.x.寄存器名=要赋的值(入口信息);注4:调用int86x后得接受出口信息变量名=输出指针名.x.寄存器名函数82。intdos()通用dos中断接口函数原形:intintdos(i
48、nregs,outregs)unionREGS*inregs;调用时的各寄存器的值unionREGS*outregs;返回寄存器的值功能:产生DOS软中断注意:如果需要功能号,则装AAH;如果需要子功能号,则装入AL。头文件:dos.h函数83。intdosx()通用dos中断接口函数原形:intintdosx(inregs,outregs,segregs)unionREGS*inregs;调用时的各寄存器的值unionREGS*outregs;返回寄存器的值structSREGS*seregs;调用时的段寄存器的值(还设置返回时的值)功能:产生DOS软中断头文件:dos.h函数84。intr
49、()执行8086软中断函数(改变软中断接口函数)原形:voidintr(intintno,structREGPACK*preg)调用方式:intr(中断号,&结构变量名)注1:结构REGPACK定义如下structREGPACK头文件:math.h头文件:math.hunsignedr_ax,r_bx,r_cx,r_dx;unsignedr_bp,r_si,r_di,r_ds,r_es,r_flag;注2:使用时先定义一个结构变量structREGPACK结构变量名;注3:入口和出口用同一个结构变量来传递寄存器的值。结构变量名r_ax=要赋的值;intr(中断号,&结构变量名);某变量=结构变
50、量名.r_ax;头文件:dos.h函数85。itoa()把整形数转换为字符串的函数原形:char*itoa(intvalue,char*string,intradix)功能:把value的值转换为以NULL结束的字符串,并把结果存在string中。radix是转换的基数值,在2到36之间。分配给string的空间必须可容纳返回的所有字节(最多17字节)。返回值:指向string的指针头文件:stdlib.h函数86。kbhit()检查当前按下的键的函数原形:intkbhit(void)功能:检查按下的键是否有效,若有效则可用getch()或getche()读取。返回值:如果按键有效,返回一非零
51、值,否则返回0。头文件:conio.h函数87。keep()驻留并退出函数原形:voidkeep(unsignedcharstatus,unsignedsize)功能:用于安装一个TSR程序(使用DOS功能调用0 x31)。出口状态设置为在status中的值,程序占用存储空间为size,并释放内存的其余部分。头文件:dos.h函数88。log()原形:doublelog(doublenum)功能:求num的自然对数值函数89。iogio()原形:doublelog10(doublenum)功能:求num以10为底的对数值头文件:math.h函数90。_lrotl()将一个无符号长整形数左循环移
52、位的函数原形:unsignedlong_lrotl(unsignedlongvalue,intcount)功能:将value向左循环移动count位。返回值:将value向左循环移动count位后的值。头文件:stdlib.h函数91。_lrotr()将一个无符号长整形数右循环移位的函数原形:unsignedlong_lrotr(unsignedlongvalue,intcount)功能:将value向右循环移动count位。返回值:将value向右循环移动count位后的值。头文件:stdlib.h函数92。lseek()移动文件指针函数原形:longlseek(inthandle,long
53、offset,intfromwhere)handle=open()函数的返回值(文件句柄);fromwhere=文件位置(SEEK_SET(0)从文件头位置;SEEK_CUR(1)从当前文件指针位置;SEEK_END(2)从文件结尾位置)功能:把文件指针移动到fromwhere所指的地址加上offset新位置的偏移上。头文件:io.h返回值:指针新位置的偏移量(相对于文件开始处),出错时返回-1L。函数93。ltoa()把长整形数转换为字符串的函数原形:char*ltoa(longvalue,char*string,intradix)功能:把value的值转换为以NULL结束的字符串,并把结果
54、存在string中。radix是转换的基数值,在2到36之间。分配给string的空间必须可容纳返回的所有字节(最多33字节)。返回值:指向string的指针头文件:stdlib.h函数94。malloc()分配内存函数原形:void*malloc(size_tsize)功能:从堆中分配大小为size字节的块。Win32也适用。返回值:返回新分配内存的地址,若无足够内存,返回NULL。头文件:alloc.h、stdlib.h函数95。mkdir()创建目录函数原形:intmkdir(constchar*path)功能:按给定的路径建立一个新的目录头文件:dir.h返回值:0(成功);-1(失败
55、)函数96。mktemp()建立一个唯一的文件名的函数原形:char*mktemp(char*template)功能:使用一个唯一的文件名来替换字符串template,并返回template。头文件:dir.h函数97。MK_FP()设置一个远指针的宏原形:voidfar*MK_FP(unsignedseg,unsignedofs)功能:通过段值(seg)和偏移量(ofs)建立一个远指针返回值:远指针头文件:dos.h函数98。movedata()拷贝数据函数原形:voidmovedata(unsignedsrcseg,unsignedsrcoff,unsigneddstseg,unsigne
56、ddstoff,size_tn)功能:从原地址(srcseg:srcoff)拷贝n个字节的数据到目标地址(dstseg:dstoff)。头文件:mem.h、string.h函数99。_open()打开一个文件进行读写的函数原形:int_open(path,oflags)char*path;已建立文件的路径名intoflags;/方式功能:打开由path指定的文件,返回文件的句柄返回值:0(正常结束);-1(错误)头文件:fcntl.hio.h函数100。open()打开文件进行读写的函数原形:intopen(constchar*path,intaccess,unsignedmode)使用方法:
57、文件句柄=open(文件名,打开模式I打开模式);功能:打开path指定的文件,根据access指定的模式值读写。access模式:O_RDONLY以只读方式打开O_WRONLY以只写方式打开O_RDOWR以读写方式打开以上标志只能使用一个,以下可以用|组合使用O_NDELAYO_APPEND若置位,每次写操作前都使文件指针指到文件末尾O_CREAT若文件不存在则创建O_TRUNC若文件已存在,则将文件长度截为0O_EXCL只和O_CREAT一起使用,若文件已经存在,返回错误代码O_BINARY以二进制方式打开O_TEXT以文本方式打开如果使用了O_CREAT方式,则需要提供参数mode(S_
58、IWRITE可写;S_IREAD可读;S_IREADIS_IWRITE可读写)返回值:文件句柄(成功时)-;1(失败时)。成功时,文件指针指向文件头。头文件:fcntl.hio.h函数101。outport()输出一个字到端口中的函数原形:voidoutport(intportid,intvalue)调用方式:outport(0 x端口号,要输出的字);功能:往指定端口地址输出一个字。头文件:dos.h函数102。outportb()输出一个字节到端口中的函数原形:voidoutportb(intportid,unsignedcharvalue)调用方式:outportb(0 x端口号,要输出
59、的字节);功能:往指定端口地址输出一个字节。附:PCI/O地址分配PC只用了10位地址线(A0-A9)进行译码,其寻址的范围为0H-3FFH,共有1024个I/O地址。这1024个地址中前半段(A9=0,范围为0H-1FFH)是属于主机板I/O译码,后半段(A9=1,范围为200H-3FFH)则是用来扩展插槽上的I/O译码用。I/O端口功能表I/O地址功能、用途I/O地址功能、用途0DMA通道0,内存地址寄存器(DMA控制器1(8237)1DMA通道0,传输计数寄存器2DMA通道1,内存地址寄存器3DMA通道1,传输计数寄存器4DMA通道2,内存地址寄存器5DMA通道2,传输计数寄存器6DMA
60、通道3,内存地址寄存器7DMA通道3,传输计数寄存器8DMA通道0-3的状态寄存器AHDMA通道0-3的屏蔽寄存器BHDMA通道0-3的方式寄存器CHDMA清除字节指针DHDMA主清除字节EHDMA通道0-3的清屏蔽寄存器FHDMA通道0-3的写屏蔽寄存器19HDMA起始寄存器20H-3FH可编程中断控制器1(8259)使用40H可编程中断计时器(8253)使用,读/写计数器041H可编程中断计时器寄存器42H可编程中断计时器杂项寄存器43H可编程中断计时器,控制字寄存器44H可编程中断计时器,杂项寄存器(AT)47H可编程中断计时器,计数器0的控制字寄存器48H-5FH可编程中断计时器使用6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业管理保安年度个人工作总结
- 2024年海洋工程项目资金筹措计划书代可行性研究报告
- 【语文课件】壮丽的青春课件
- 函数课件教学
- 《FULLCORE电感选用》课件
- 《销售应用培训》课件
- 《会计核算报告上》课件
- 《水准测量基础教程》课件
- 湖南省湘潭市雨湖区2024-2025学年七年级上学期11月期中考试数学试题
- 《工业机器人新》课件
- 正多边形与圆1 详细版课件
- 2022深蓝色商务蓝大气时尚工作计划总结通用PPT模板
- 五年级上册数学课件 -《平行四边形的面积》 人教版(共15张PPT)
- 因果分析步骤和实例讲解
- 护理教育学第7章护理教学的组织形式2021课件
- 第8章材料的蠕变
- 工作循环分析JCA通用PPT课件
- 硬笔书法兴趣小组(社团)活动计划+教案
- 建设银行股份关联交易申报及信息披露系统操作手册新一代
- 水文信息采集与处理习题
- 2010国际贸易术语解释通则(中文完整版)
评论
0/150
提交评论