




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.C语言库函数2007-06-04 22:12C语言库函数,调用C库函数,需要c0x.obj和cx.lib,其中x表示编译模式的首字符,如果是小模式samll,这两个文件就是c0s.boj和cs.lib,注意c0s.obj中间是数字 调用C库函数,需要c0x.obj和cx.lib,其中x表示编译模式的首字符,如果是小模式samll,这两个文件就是c0s.boj和cs.lib,注意c0s.obj中间是数字零不是字母,c0x.obj是调用库函数前做些初始化工作的,cs.lib是库函数所在的库文件.下面这个程序使用的是小模式samll ;汇编源程序aboil.asm .model small,c;表示使用小模式并使用C语言函数调用函数,如果只定义.model small,那么调 ;用的C函数前要加下划线,如调用printf就要改成_printf. extrn printf:near ;用extrn伪指令声明要调用的库函数 data segment word public DATA;数据段必须定义成这样,定义类型为word,组合类型为public,段类别为DATA ;这样是为了后面连接程序文件,否则程序无法定位数据 msg db hello word!,0 ;C语言中字符串是以零结尾的. data ends DGROUP group DATA;这句也是必须的,将数据段声明为DGROUP组中 code segment word public CODE ;同上数据段声明一样,这样是为了连接程序 assume cs:code,ds:DGROUP main proc near ;你的程序主过程必须为main,这是为了和C语言保持一致 start: ;大家注意这里,不要再自己设置数据段地址,mov ax,data mov ds,ax这就不要了 lea ax,msg ;取得字符串偏移地址 push ax ;将字符串地址压栈,相当于在C语言中传送字符指针 call printf ;调用库函数 add sp,2 ;清除参数,保持堆栈平衡 ret ;返回c0s的代码中,程序做些清理工作才退出 main endpcode ends end start 先成masm编译aboil.asm成aboil.obj,然后用link文件连接c0x.obj和aboil.obj,调用方法如下: link c0s+aboil 回车 注意文件名顺序不要搞错了,是c0s在前 然后link提示要连接的库,输入cs.lib Libraries .LIB:cs.lib 回车得到c0s.exe,运行,就能看到显示hello world!,这时调试下你的程序就知道,生成的程序先是运行一些初始化的指令,然后调用你的程序,然后你的程序调用库函数2. 如果我要调用abs()函数 就一定要在开头加上#include 编译器就会把math.h,替换到我的文件中。 假如我只想用abs()函数,而不用其他的。那不是浪费了好多空间? 还有,c语言是如何保证源代码封装的呢?把函数库加密吗?对于问题1: 不会的。 只有用到的函数才会链接到你的程序中。 只要你愿意,不加头文件,直接申明函数原型也是可以的。 问题2: 源代码封装怎么会和加密联系起来?就你自己写的c程序,别人是不可能通过反编译得到你的源码的。Top2 楼coldwindtang(风)回复于 2006-08-21 00:32:51 得分 0 编译器在编译时,只会编译你用到的函数,如果你把math.h包含到程序中,但没有用一个相关的数学库函数,那么你的程序大小是不会改变的。 你可以做一个小小的实验就可以证明。先写一个程序,编译好记下大小,然后加上一个头文件,比如或什么的,然后再编译,只要没有用到头文件中的函数大小是一样的! 至于你的第二个问题:c语言是如何保证源代码封装。我记得我以后打开过头文件看过,都是明码没有加密过的,所以我认为C语言并没有保证源代码封装。不过这一点我并不确信。希望其他人能解决你的这个问题。3.常用库函数 absread()读磁盘绝对扇区函数原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:drive=0对应A盘,drive=1对应B盘。返回值:0:成功;-1:失败。头文件:dos.habswrite()写磁盘绝对扇区函数原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址。功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。返回值:0:成功;-1:失败。头文件:dos.hatof()将字符串转换成浮点数的函数原形:double atof(const char *s)功能:把s所指向的字符串转换成double类型。s格式为:符号数字.数字E符号数字返回值:字符串的转换值。头文件:math.h、stdlib.hatoi()将字符串转换成整型数的函数原形:int atoi(const char *s)功能:把s所指向的字符串转换成int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.hatol()将字符串转换成长整型数的函数原形:long atol(const char *s)功能:把s所指向的字符串转换成long int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.hbcd()把一个数转换成对应的BCD码的函数原形:bcd bcd(int x)bcd bcd(double x)bcd bcd(double x,int decimals)注意:BCD码的精度可达17位。参数decimals是可选的,用来指定转换后小数点后的位数。头文件:bcd.hbdos()原形int bdos(int fnum,unsigned dx,unsigned al)其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;功能DOS系统调用(INT21H)返回值AX中的值biosdisk()调用BIOS磁盘驱动程序函数原形:char biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)功能:使用中断0x13,直接调用BIOS进行磁盘操作参数:(1)cmd:2-数据以每扇区512字节的格式读入buffer,起始扇区由head、track和sector定,扇区数由nsects定。3-将buffer中的数据按每扇区512字节写入磁盘。4-对扇区进行数据校验。6-格式化一个磁盘并对化扇区设置化标志。8-返回当前驱动器参数在buffer的前4个字节中。10-长读,每扇区读入512字节加上额外的4个字节。11-长写,每扇区写入512字节加上额外的4个字节。(2)drive:0-第一个软驱;1-第二个软驱;0x80-第一个硬驱(3)head:磁头(4)track:磁道(5)sector:扇区(6)nsects:扇区数(7)buffer:数据缓冲区,定义为unsigned char buffer;返回值:0x00-操作成功0x01-错误命令0x03-企图写具有写保护的磁盘0x07-驱动器参数设置错误0x10-磁盘读/CRC/ECC错误头文件:bios.h注:对于硬盘主引导记录扇区head=0,track=0,sector=1biosprint()调用BIOS打印机I/O接口的函数原形:int biosprint(int cmd,int abyte,int port)功能:通过BIOS中断0x17在由参数port指定的打印机上完成各种打印机功能。port=0(LPT1)=1(LPT2);cmd=0(打印字符abyte)1(初始化打印机端口)2(读打印机状态);abyte=0-255;返回值:打印机状态位0(设备超时);位3(I/O出错);位4(打印机已选择);位5(没纸);位6(打印机确认);位7(不忙)头文件:bios.hcalloc()分配内存函数原形:void *calloc(size_t nitems,size_t size)功能:在堆中分配一块内存,将该内存的内容全部清。返回值:返回指向新分配内存的指针。空间不够则返回NULL。头文件:stdlib.h、calloc.hceil()原形double ceil(double num)功能求不小于num的最小双精度整数头文件math.hcgets()读字符串函数原形:char *cgets(char *str)功能:从控制台读入一个字符串,并将该字符串(和字符串长度)存入有str所指向的地址中。注意:在调用cgets之前,必须将要读入的字符串最大长度存入str0中,返回时str1被设置为实际读入的字符数。实际字符串内容从str2开始,以空字符(0)结尾。返回值:指向str2的指针。头文件:conio.hchdir()改变当前目录的函数原形:int chdir(const char *path)功能:把由path指定的目录改为当前目录。path参数中可以指定驱动器号,如a:ddd, 但只是改变该驱动器上的当前目录,对当前活动驱动器上的当前目录无影响。返回值:0(成功);-1(失败)头文件:dir.h_chmod()改变文件存取权限的函数原形:int _chmod(const char *path,int func,int attrib)功能:读取(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.hchmod()改变文件存取权限的函数原形:int chmod(const char *path,int amode)功能:根据amode的值,设置由path所指文件的存取权限。amode的值存取权限S_IWRITE 允许写S_IREAD允许读(只读)S_IREAD|S_IWRITE 可读可写 返回值:0(成功);-1(失败)头文件:io.h、sysstat.hclock()原形long clock(void)功能测得从程序开始到调用处处理机所用的时间头文件time.hclose()关闭文件函数原形:int close(int handle)功能:关闭由文件句柄所指向的文件,句柄是调用_creat、creat、creatnew、creattemp、dup、dup2、_open或open时得到的。该函数并不在文件末尾写一个Ctrl-Z字符,如果想用该字符结束文件,必须显式地给出该字符。返回值:0(成功);-1(失败)头文件:io.hclosegraph()关闭图形函数原形:void far closegraph(void)功能:释放图形系统分配的所有内存,将屏幕恢复到调用initgraph之前的模式。头文件:graphics.hcos()原形double cos(double arg)功能计算arg(弧度)的余弦值头文件math.hctrlbrk()设置ctrl-break处理程序的函数原形:void ctrlbrk(int(*handle)(void)功能:修改中断向量0x23,使用新的ctrl-break中断处理函数。用法:ctrlbrk(函数名);先定义函数:int 函数名(void).头文件:dos.hdelay()暂停函数原形:void delay(unsigned milliseconds)功能:暂停当前所执行的程序milliseconds毫秒。头文件:dos.hdisable()屏蔽中断的宏原形:void disble(void)功能:屏蔽中断,只允许从外部设备来的不可屏蔽中断(NMI)。头文件:dos.henable()开硬件中断的宏原形:void enable(void)功能:开放中断,允许接受任何设备产生的中断。头文件:dos.hexec()加载并运行其它程序的函数族execl(),execle(),execlp(),execlpe(),execv(),execve(),execvp(),execvpe()原形 int execl(char *path,char *arg0,*arg1,.,*argn,NULL)int execle(char *path,char *arg0,*arg1,.,*argn,NULL,char *env)int execlp(char *path,char *arg0,*arg1,.,*argn,NULL)int execlpe(char *path,char *arg0,*arg1,.,*argn,NULL,char *env)int execv(char *path,char *argv)int execve(char *path,char *argv,char *env)int execvp(char *path,char *argv)int execvpe(char *path,char *argv,char *env)其中,path是调用的子程序的文件名,在exec后面的后缀具有某种功能:p表示函数能够在由DOS环境变量PATH的目录中搜索子进程文件,如果path中未指明文件所在目录,函数将首先在当前目录中找,然后在DOS环境变量指定的目录中找。l表示参数指针(arg0,.,argn)按单独参数传送。当预先知道要传送的参数个数时,通常用带后缀l的函数。v表示参数指针(arg0,.,argn)按指针数组传送。当要传送的参数可变时,使用带后缀v的函数。e表示参数env可以传送到子进程,该函数可用来修改子进程的环境。若无e后缀,子进程将继承父进程的环境。注意:arg0+.+argn,或arg0+.+argn的总长度必需小于128字节。当调用exec函数时,原先已经打开的文件在子进程中仍然是打开的。功能:加载并运行其它程序,调用时必须有足够的内存空间用于加载和执行子程序,子程序将覆盖父程序。头文件:process.h farcalloc()从远堆中分配内存的函数原形:void far *farcalloc(unsigned long nunits,unsigned long unitsz)功能:从远堆中为包含nunits个元素的数组分配内存,每一区unitsz字节长。用法:fptr=farcalloc(数目,sizeof(char);先定义:char far *fptr;注意:所有可用RAM能被分配;大于64的块能被分配;用远指针存取该块。微模式不能用。返回值:返回指向新分配块的指针,若内存不够,则返回NULL。头文件:alloc.hfarfree()从远堆中释放一块已分配内存的函数原形:void farfree(void far *block)头文件:alloc.hfarmalloc()从远堆中分配内存的函数原形:void far *farmalloc(unsigned long nbytes)使用方式:fptr=farmalloc(字节数);先定义char far *fptr;功能:从远堆中分配长nbytes字节的内存。注意:所有可用RAM能被分配;大于64的块能被分配;用远指针存取该块。微模式不能用。返回值:返回指向新分配内存的指针,若内存不够,则返回NULL。头文件:alloc.hfarrealloc()调整远堆中已分配块的函数原形:void far *farrealloc(void far *oldblock,unsigned long nbytes)返回值:返回调整后的新内存地址。若不能重新分配,则返回NULL。头文件:alloc.hfclose()关闭一个流函数原形:int fclose(FILE *stream)使用方式:fclose(文件指针名);其中文件指针名=fopen();功能:关闭指定的流,关闭前清除所有与stream相联的缓冲区,释放系统分配的缓冲区,但由setbuf设置的缓冲区不能自动释放。返回值:0(成功);EOF(失败)头文件:stdio.hfcloseall()关闭打开的流的函数原形:int fcloseall(void)功能:关闭所有打开的流,由stdin、stdout、stdprn、stderr和stdaux设置的流除外。返回值:关闭流的总数。如果发现错误则返回EOF。头文件:stdio.h feof()检查文件是否结束的函数原形int feof(FILE *fp)返回值文件结束返回非0值,否则返回0。头文件stdio.hfgets()从流中读取一字符串的函数原形:char *fgets(char s,int n,FILE *stream)使用格式:fgets(字符串指针,字符个数,文件指针)功能:从输入流stream中读入字符存到s串中。当读了n-1个字符或遇到换行符时,函数停止读过程。fgets在s串尾保留换行字符。读入的最后一个字符后面加一个空字符。返回值:成功时返回字符串参数s,出错或遇到文件结束时,返回NULL。头文件:stdio.hfindfirst()函数和findnext()函数调用方式:整形数=findfirst(文件名,&结构变量名,属性常数组合(如0x26);其中定义struct ffblk 结构变量名;原形:int findfirst(path,buffer,attr)和int findnext(buffer)char *path;/要检索的文件名struct ffblkchar ff_reserved21;char ff_attrib;/被检索的文件属性unsigned ff_ftime;/最后修改的时间/(0-4位:秒数/2;5-10位:分数;11-15位:小时数)unsigned ff_fdate;/最后修改的日期/(0-4位:日;5-8位:月;9-15位:年减1980)long ff_fsize;/文件大小char ff_name13;/组名*buffer;int attr;/要检索的文件属性功能:检索由path和attr指定的文件,把结果返回到buffer。findfirst返回关于第一个指定文件的信息,findnext继续检索。返回值:0(检索成功),-1(没有找到指定的文件)属性常数:FA_NORMAL(0x00)含意:Normal file, no attributes FA_RDONLY(0x01)含意:只读FA_HIDDEN(0x02)含意:隐含文件FA_SYSTEM(0x04)含意:系统文件FA_LABEL(0x08) 含意:卷标FA_DIREC(0x10) 含意:子目录FA_ARCH(0x20)含意:修改的文件Archive头文件:dir.h(dos.h)floodfill()填充区域的函数原形:void far floodfill(int x,int y,int border)功能:在图形设备上用颜色border围起来的区域将用当前填充颜色填充。(x,y)是待填充区域的起点,若起点在封闭区域内,则区域内被填充;若起点在封闭区域外,则区域外被填充。头文件:graphics.hfloor()原形double floor(double num)功能求不大于num的最大双精度整数头文件math.hfnmerge()建立文件路径函数原形:void fnmerge(char *path,const char *drive,const char *dir, const char *name,const char *ext)功能:合成drive:dirname.ext,放在path头文件:dir.hfnsplit()分解完整的路径名函数原形:int fnsplit(char *path,const char *drive,const char *dir,const char *name,const char *ext)功能:把文件名路径path分成4个部分存放。其中drive中有冒号;dir中有开始和结尾的反斜杠;ext包括开始圆点返回值:如果有扩展名,则返回值&EXTENSION!=0如果有文件名,则返回值&FILENAME!=0如果有目录名,则返回值&DIRECTORY!=0如果有驱动器号,则返回值&DIRVE!=0头文件:dir.h fopen()打开一个流函数原形:FILE *fopen(const char *filename,const char *mode)功能:打开用filename指定的文件,并使其与一个流相联。使用方式:文件指针名fopen(文件名,处理方式)处理方式取:rt打开一个文本文件,只能读。wt生成一个文本文件,只能写。若文件存在则被重写。at打开一个文本文件,只能在文件尾部添加。rb打开一个二进制文件,只能读。wb生成一个二进制文件,只能写。ab打开一个二进制文件,只能在文件尾部添加。rt+ 打开一个文本文件,可读可写。wt+ 生成一个文本文件,可读可写。at+ 打开一个文本文件,可读可添加。rb+ 打开一个二进制文件,可读可写。wb+ 生成一个二进制文件,可读可写。ab+ 打开一个二进制文件,可读可添加。返回值:指明流的指针(成功时)或NULL(失败时)注:需先定义 FILE *文件指针名;文件名若用 argv1代替,则可使用命令行形式指定文件名FP_OFF()获取远地址偏移量的宏原形:unsigned FP_OFF(void far *p)功能:取得和设置远指针*p的偏移量返回值:偏移量头文件:dos.h fprintf()传送输出到一个流中的函数原形:int fprintf(FILE *stream,const char *format,argument,.)功能:向文件指针指向的文件输出ASC代码向显示器输出错误信息 使用形式:fprintf(文件指针,输出格式,输出项系列);fprintf(stderr,错误信息);使用实例:fprintf(stream,%d %c %f,i,c,f);其中定义FILE *stream;int i;char c;float f;返回值:成功则返回输出的字节数,错误则返回EOF。头文件:stdio.hFP_SEG()获取远地址段值的宏原形:unsigned FP_SEG(void far *p)功能:取得和设置远指针*p段地址值返回值:段地址值头文件:dos.hfree()释放已分配内存的函数原形:void free(void *block)功能:释放由calloc、malloc、realloc函数调用所分配的内存。头文件:stdlib.h、alloc.hfscanf()格式化输入函数原形:int fscanf(FILE *stream,const char *format,address,.)功能:从一个流中扫描输入字段,一次扫描一个字符,每个输入字段根据format所指格式指示符格式化后,把输入字段存在format后面由地址参数给出的位置上。使用格式:fscanf(文件指针,输入格式,输入项系列);使用实例:fscanf(fp,%d,&b);从fp指向的文件中读取十进制整数 (ASC形式)赋予变量b注:当文件指针是stdin时,与scanf功能完全相同头文件:stdio.hfseek()移动文件指针函数原形:int fseek(FILE *stream,long offset,int whence)作用:强制一个文件的位置指针指向某个特定的位置(甚至超出文件的尾部)。使用格式:fseek(*文件指针,偏移(长整型),起点)定义 FILE *文件指针名;起点取值:0或SEEK_SET(表示文件开头)1或SEEK_CUR(表示当前位置)2或SEEK_END(表示文件尾端)返回值:0表示成功,非0值表示失败头文件:stdio.hfwrite()把参数写入流中的函数原形:size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream)功能:附加n个数据项(每个数据项长度为size个字节)到指定的输出文件后,数据从ptr处开始添加。ptr是指向任意对象的指针。返回值:调用成功时返回实际写的数据项数,出错时返回一短整形数值。头文件:stdio.h例:fwrite(&s,sizeof(s),1,stream);其中s是一结构变量,stream=fopen();gcvt()把双精度数转化成字符串的函数原形char*gcvt(value,ndigit,buf)其中double value是待转化数int ndigit是转化长度char *buf保存转化后的地址头文件stdlib.hgeninterrupt()执行中断函数原形:void geninterrupt(int n)调用方式:geninterrupt(软中断号)功能:产生一个8086软中断注:需先向寄存器传递入口信息(用伪变量)例如伪变量=要赋的值(入口信息);调用geninterrupt()函数后得接受出口信息例如变量名=伪变量伪变量Turbo C 允许使用伪变量直接访问相应的8086寄存器。伪变量的类型有两种。 unsigned int : _AX、 _BX、 _CX、 _DX、 _CS、 _DS、 _SS、 _ES、_SP、 _BP、 _DI、 _SI unsigned char: _AL、 _AH、 _BL、 _BH、 _CL、 _CH、 _DL、 _DHgetc()从流中取字符的宏原形:int getc(FILE *stream)功能:返回输入流stream中一个字符,移动文件指针使之指向下一个字符。使用格式:字符变量getc(文件指针)(正常情况下读取到代码值,读到文件尾或出错时返回EOF)注:需定义 char 字符变量;FILE *文件指针;头文件:stdio.hgetch()从键盘无回显地读取一字符的函数功能:将键盘上输入的单个字符的值(ASC 码)立刻赋给字符型变量调用方式:字符形变量getch()注:需先定义 char 字符形变量;头文件:conio.hgetchar()从stdin流中读取一个字符的函数功能:将键盘上输入的单个字符的值(ASC 码)回车后赋给字符型变量调用方式:字符型变量getchar()注:需先定义 char 字符型变量;头文件:stdio.hgetcurdir()读取指定驱动器的当前目录的函数原形:int getcurdir(int drive,char directory)drive=0(缺省);1(A驱动器);.directory用来存放目录名,不包括驱动器名,不以反斜杠开始。返回值:0(调用成功);1(出错)头文件:dir.hgetcwd()读取当前目录的函数原形:char *getcwd(char *buf,int buflen)功能:读取当前目录的完整路径名(包括驱动器名),最长为buflen个字节,存放在buf中。如果buf为NULL,函数将分配一个buflen字节长的缓冲区,以后可将本函数的返回值作为free函数的参数来释放该缓冲区。返回值:若buf非空,调用成功返回buf,出错返回NULL;若buf为NULL,返回指向已经分配的内存缓冲区地址。头文件:dir.hgetdate()读取系统日期函数原形:void getdate(pdate)struct dateint da_year;int da_day;int da_mon;struct date *pdate;头文件:dos.hgetdfree()读取磁盘空闲空间的函数原形:void getdfree(drive,dtable)unsigned char drive;驱动器号(0-当前;1-A;2-B;.)struct dfreeunsigned df_avail;/可使用的簇数unsigned df_total;/每个驱动器的簇数unsigned df_bsec;/每个扇区的字节数unsigned df_sclus;/每个簇的扇区数(出错时返回0xffff)*dtable;功能:把由drive指定的关于驱动器的信息返回到dtablegetdisk()读取当前磁盘驱动器号函数原形:int getdisk(void)功能:取得当前驱动器号(0=A;1=B;.)头文件:dir.hgetenv()读取环境变量的当前值的函数原形:char *getenv(const char *name)用法:s=getenv(环境变量名);需先定义char *s;功能:返回一给定的环境变量值,环境变量名可大写或小写。如果指定的变量在环境中未定义,则返回一空串。 头文件:stdlib.hgetimage()将指定区域的位图象存入内存的函数原形:void far getimage(int left,int top,int right,int bottom,void far *bitmap)功能:将图像(矩形区域)从屏幕拷贝到内存,*bitmap指向内存中存放图像的区域。该区域的前两个字节用于存放矩形的高和宽。头文件:graphics.hgetmaxx()返回屏幕上最大的坐标值的函数原形:int far getmaxx(void)功能:返回当前图形驱动程序和图形模式下最大的X坐标值。头文件:graphics.hgetmaxy()返回屏幕上最大的Y坐标值的函数原形:int far getmaxy(void)功能:返回当前图形驱动程序和图形模式下最大的Y坐标值。头文件:graphics.hgetpixel()读取像素颜色的函数原形:unsigned far getpixel(int x,int y)头文件:graphics.hgetpsp()原形unsigned getpsp(void)功能使用DOS系统调用0x62,返回程序段前缀(PSP)的段地址头文件dos.hgets()从标准输入流stdio中读取一字符串的函数功能:将键盘上输入的字符串立刻赋予字符串变量并显示出来调用方式:gets(字符串变量名)注:需定义 char *字符串变量名;gettime()读取系统时间的函数原形:void gettime(ptime)struct timeunsigned char ti_min;unsigned char ti_hour;unsigned char ti_hund;/百分之一秒unsigned char ti_sec;struct time *ptime;getvect()读取中断向量函数原形:void interrupt(*getvect(int interruptno)功能:读入由interruptno(0-255之间)所指定的中断向量值,并把该中断向量值作为中断函数的远指针返回。返回值:指定中断向量的当前4字节值。头文件:dos.h使用实例:oldfunc=getvect(5);先定义void interrupt(*oldfunc)();用后恢复setvect(5,oldfunc);getx()返回当前图形方式下位置的X坐标值的函数原形:int far getx(void);头文件:graphics.hgety()返回当前图形方式下位置的Y坐标值的函数原形:int far gety(void);头文件:graphics.himagesize()返回保存图像缓冲区大小的函数原形:unsigned far imagesize(int left,int top,int right,int bottom)功能:确定保存图像所需的存储区大小。返回值:返回存储区的大小(字节),若所需内存大于等于64K-1字节,则返回0xffff(-1)。头文件:graphics.hinitgraph()显示模式控制函数(初始化图形系统函数)功能:把图形适配器设置为一种图形模式,将选择的图形驱动程序(在BGI文件中)装入到内存。调用方式:void far initgraph(int far *driver,int far *mode,char far*path)其中: *driver可以是数值(0-10),也可是符号值(DETECT、CGA、MCGA、EGA、EGA64、EGAMONO、RESERVED、HERCMONO、ATT400、VGA、 PC3270)。*mode参数从图形系统为各种常用的图形适配器设置的图形模式中(CGAC0、.、IBM8514HI-见头文件graphics.h)选取。常用的有:VGAMED或1(640350)(等效于BIOS的模式15)、EGAHI或1(640350)等。path指向的字符串为装入驱动程序的路径。如果缺省路径,驱动程序在当前目录。结束方法:void far closegraph()函数用于当程序还要继续在字符模下运行时。它释放由图形函数所占用的内存,同时把屏幕模式恢复为调用initgraph()之前的模式。void far restorecrtmode()函数用于结束运行。将图形适配器设置到原来的模式。任何分配的内存都将自动释放。头文件:graphics.hinport()从端口中读入一个字的函数原形:int inport(int portid)调用方式:整型变量=inport(0x端口号);功能:从指定端口地址读一个字。头文件:dos.hinportb()从端口读入一个字节的函数原形:unsigned char inportb(int portid)调用方式:字符变量=inportb(0x端口号);功能:从指定端口地址读一个字节。头文件:dos.hint86()执行中断函数(调用8086软中断函数)原形:int int86(int intno,union REGS *inregs,union REGS *outregs)调用方式:int86(中断号,&输入指针名,&输出指针名)返回值:中断处理结束时的AX寄存器的值,错误时outregs-x.cflag!=0功能:函数int86() 用来执行指定的8086软中断。首先把输入指针所指的共用体中的内容拷贝到CPU 的寄存器中,随即产生对应的中断,返回后将CPU寄存器(AX)的内容拷贝到输出指针指向的共用体中。在使用int86() 函数进行BIOS接口的系统调用时,有的中断调用设有若干选择项,这些选择项可以根据调用时AH寄存器中的值来进行访问。注:1.需先定义 union REGS 输入指针名,输出指针名;2.向寄存器传递入口信息输入指针名.x.寄存器名=要赋的值(入口信息);3.调用int86后得接受出口信息变量名=输出指针名.x.寄存器名4.REGS的定义(在dos.h中):struct WORDREGSunsigned int ax, bx, cx, dx, si, di, cflag, flags;struct BYTEREGSunsigned char al, ah, bl, bh, cl, ch, dl, dh;union REGSstruct WORDREGS x;struct BYTEREGS h;头文件:dos.hint86x()执行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025秋统编版三年级语文上册(2024)新教材第七单元20 古诗三首《望天门山》练习题附答案
- 柠檬酸充填封装工入职考核试卷及答案
- 纤维板压机润滑工艺考核试卷及答案
- 灯具组装自动化设备安全防护工艺考核试卷及答案
- 刑事技术考试题目及答案
- 银行营销活动试题及答案
- 地质专业试题及答案
- 计量专业试题及答案
- 汽车类专业试题及答案
- 小学语文人教部编版六年级上册《21文言文二则-2书戴嵩画牛》课件
- 2025版校园食堂日管控、周排查、月调度记录表
- 康养中心项目可行性研究报告
- 《城乡规划管理与法规系列讲座课件-建设项目规划与审批》
- 工业废水处理工初级复习题+答案
- 监狱防病知识培训课件
- 2025届广东省广州市高三上学期12月调研英语试题及答案
- 医院购置设备论证报告格式
- GB/T 32151.27-2024温室气体排放核算与报告要求第27部分:陆上交通运输企业
- 教学教学(以往培训课件)农村集体经济审计问题
- 医疗建筑施工要点
- 石油化工建设工程总承包招标文件示范文本
评论
0/150
提交评论