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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言的常用库函数使用方法分析及用途absread()读磁盘绝对扇区函数原形:intabsread(intdrive,intnum,intsectnum,void*buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:drive=0对应A盘,drive=1对应B盘。返回值:0:成功;-1:失败。头文件:dos.habswrite()写磁盘绝对扇区函数原形:intabswrite(intdrive,intnsects,intlsect,void*buffer)drive=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址。功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。返回值:0:成功;-1:失败。头文件:dos.hatof()将字符串转换成浮点数的函数原形:doubleatof(constchar*s)功能:把s所指向的字符串转换成double类型。s格式为:符号数字.数字E符号数字返回值:字符串的转换值。头文件:math.h、stdlib.hatoi()将字符串转换成整型数的函数原形:intatoi(constchar*s)功能:把s所指向的字符串转换成int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.hatol()将字符串转换成长整型数的函数原形:longatol(constchar*s)功能:把s所指向的字符串转换成longint类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.hbcd()把一个数转换成对应的BCD码的函数原形:bcdbcd(intx)bcdbcd(doublex)bcdbcd(doublex,intdecimals)注意:BCD码的精度可达17位。参数decimals是可选的,用来指定转换后小数点后的位数。头文件:bcd.hbdos()原形∶intbdos(intfnum,unsigneddx,unsignedal)其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;功能∶DOS系统调用(INT21H)返回值∶AX中的值biosdisk()调用BIOS磁盘驱动程序函数原形:charbiosdisk(intcmd,intdrive,inthead,inttrack,intsector,intnsects,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:数据缓冲区,定义为unsignedcharbuffer[];返回值:0x00-操作成功0x01-错误命令0x03-企图写具有写保护的磁盘0x07-驱动器参数设置错误0x10-磁盘读/CRC/ECC错误头文件:bios.h注:对于硬盘主引导记录扇区head=0,track=0,sector=1outport()输出一个字到端口中的函数原形:voidoutport(intportid,intvalue)调用方式:outport(0x端口号,要输出的字);功能:往指定端口地址输出一个字。头文件:dos.houtportb()输出一个字节到端口中的函数原形:voidoutportb(intportid,unsignedcharvalue)调用方式:outportb(0x端口号,要输出的字节);功能:往指定端口地址输出一个字节。附: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地址功能、用途———————————————————————————0DMA通道0,内存地址寄存器(DMA控制器1(8237))1DMA通道0,传输计数寄存器2DMA通道1,内存地址寄存器3DMA通道1,传输计数寄存器4DMA通道2,内存地址寄存器5DMA通道2,传输计数寄存器6DMA通道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可编程中断计时器使用60H-61H键盘输入数据缓冲区61HAT:8042键盘控制寄存器/XT:8255输出寄存器62H8255输入寄存器63H8255命令方式寄存器64H8042键盘输入缓冲区/8042状态65H-6FH8255/8042专用70HCMOSRAM地址寄存器71HCMOSRAM数据寄存器80H生产测试端口81HDMA通道2,页表地址寄存器82HDMA通道3,页表地址寄存器83HDMA通道1,页表地址寄存器87HDMA通道0,页表地址寄存器89HDMA通道6,页表地址寄存器8AHDMA通道7,页表地址寄存器8BHDMA通道5,页表地址寄存器8FHDMA通道4,页表地址寄存器93H-9FHDMA控制器专用A0HNM1屏蔽寄存器/可编程中断控制器2A1H可编程中断控制器2屏蔽C0HDMA通道0,内存地址寄存器(DMA控制器2(8237))C2HDMA通道0,传输计数寄存器C4HDMA通道1,内存地址寄存器C6HDMA通道1,传输计数寄存器C8HDMA通道2,内存地址寄存器CAHDMA通道2,传输计数寄存器CCHDMA通道3,内存地址寄存器CEHDMA通道3,传输计数寄存器D0HDMA状态寄存器D2HDMA写请求寄存器D4HDMA屏蔽寄存器D6HDMA方式寄存器D8HDMA清除字节指针DAHDMA主清DCHDMA清屏蔽寄存器DEHDMA写屏蔽寄存器DFH-EFH保留F0H-FFH协处理器使用100H-16FH保留170H1号硬盘数据寄存器171H1号硬盘错误寄存器172H1号硬盘数据扇区计数173H1号硬盘扇区数174H1号硬盘柱面(低字节)175H1号硬盘柱面(高字节)176H1号硬盘驱动器/磁头寄存器177H1号硬盘状态寄存器1F0H0号硬盘数据寄存器1F1H0号硬盘错误寄存器1F2H0号硬盘数据扇区计数1F3H0号硬盘扇区数1F4H0号硬盘柱面(低字节)1F5H0号硬盘柱面(高字节)1F6H0号硬盘驱动器/磁头寄存器1F7H0号硬盘状态寄存器1F9H-1FFH保留200H-20FH游戏控制端口210H-21FH扩展单元278H3号并行口,数据端口279H3号并行口,状态端口27AH3号并行口,控制端口2B0H-2DFH保留2E0HEGA/VGA使用2E1HGPIP(0号适配器)2E2H数据获取(0号适配器)2E3H数据获取(1号适配器)2E4H-2F7H保留2F8H2号串行口,发送/保持寄存器(RS232接口卡2)2F9H2号串行口,中断有效寄存器2FAH2号串行口,中断ID寄存器2FBH2号串行口,线控制寄存器2FCH2号串行口,调制解调控制寄存器2FDH2号串行口,线状态寄存器2FEH2号串行口,调制解调状态寄存器2FFH保留300H-31FH原形卡320H硬盘适配器寄存器322H硬盘适配器控制/状态寄存器324H硬盘适配器提示/中断状态寄存器325H-347H保留348H-357HDCA3278366H-36FHPC网络372H软盘适配器数据输出/状态寄存器375H-376H软盘适配器数据寄存器377H软盘适配器数据输入寄存器378H2号并行口,数据端口379H2号并行口,状态端口37AH2号并行口,控制端口380H-38FHSDLC及BSC通讯390H-393HCluster适配器03A0H-3AFHBSC通讯3B0H-3BHMDA视频寄存器3BCH1号并行口,数据端口3BDH1号并行口,状态端口3BEH1号并行口,控制端口3C0H-3CFHEGA/VGA视频寄存器3D0H-3D7HCGA视频寄存器3F0H-3F7H软盘控制器寄存器3F8H1号串行口,发送/保持寄存器(RS232接口卡1)3F9H1号串行口,中断有效寄存器3FAH1号串行口,中断ID寄存器3FBH1号串行口,线控制寄存器3FCH1号串行口,调制解调控制寄存器3FDH1号串行口,线状态寄存器3FEH1号串行口,调制解调状态寄存器3FFH保留—————————————————————————-outtextxy()在指定位置显示一字符串的函数原形:voidfarouttextxy(intx,inty,charfar*textstring)功能:按照当前对齐方式和当前字体、方向、大小在视区中给定位置显示一文本字符串。注意:用textwidth和textheight函数决定字符串的尺寸大小。头文件:graphics.hpeek()返回指定内存中字的函数原形:intpeek(intseg,unsignedoffset)功能:返回地址为seg:offset的字单元的值头文件:dos.hpeekb()返回指定内存中字节的函数原形:charpeekb(intseg,unsignedoffset)功能:返回地址为seg:offset的字节单元的值poke()在指定的内存中存储一个字的函数原形:voidpoke(intseg,unsignedoffset,intword)功能:把word的16位值放到地址为seg:offset的字单元中pokeb()在指定的内存中存储一个字节的函数原形:voidpokeb(intseg,unsignedoffset,intbyte)功能:把byte的8位值放到地址为seg:offset的字节单元中pow()原形∶doublepow(doubleb,doubleexp)功能∶求以b为底的exp次幂的值头文件∶math.hprintf()写格式化输出到stdout的函数使用方式:例①printf(%f,实型变量);②printf(%f,(*函数指针名)(参数));③printf(%c,字符变量);④printf(%c,*字符串变量名即字符串地址);只显示字符串的第一个字符。⑤printf(%s,字符串数组名即字符串数组地址);⑥printf(%-10s,字符串变量名);显示字符串时限定十位(不足则补空格),并靠左端对齐。⑦printf(%s,*二级指针变量);⑧printf(字符串%05d\n,整型变量);先显示字符串,然后显示整型变量的值(限五位,不足则补零),最后换行。注:1.①需先定义float

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功