学习纪录---库函数

学习纪录---库函数

ID:39639275

大小:112.00 KB

页数:32页

时间:2019-07-08

学习纪录---库函数_第1页
学习纪录---库函数_第2页
学习纪录---库函数_第3页
学习纪录---库函数_第4页
学习纪录---库函数_第5页
资源描述:

《学习纪录---库函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.C语言库函数2007-06-0422: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.modelsmall,c  

2、  ;表示使用小模式并使用C语言函数调用函数,如果只定义.modelsmall,那么调;用的C函数前要加下划线,如调用printf就要改成_printf.extrnprintf:near    ;用extrn伪指令声明要调用的库函数datasegmentwordpublic'DATA'  ;数据段必须定义成这样,定义类型为word,组合类型为public,段类别为DATA;这样是为了后面连接程序文件,否则程序无法定位数据msgdb'helloword!',0     ;C语言中字符串是以零结尾的.dataendsDGROUPgroupDATA  ;这句也是必须的,将数据段声明为DGROUP

3、组中codesegmentwordpublic'CODE'  ;同上数据段声明一样,这样是为了连接程序    assumecs:code,ds:DGROUPmainprocnear                        ;你的程序主过程必须为main,这是为了和C语言保持一致start:    ;大家注意这里,不要再自己设置数据段地址,movax,data   movds,ax这就不要了        leaax,msg    ;取得字符串偏移地址        pushax        ;将字符串地址压栈,相当于在C语言中传送字符指针        callprintf    

4、    ;调用库函数        addsp,2      ;清除参数,保持堆栈平衡        ret            ;返回c0s的代码中,程序做些清理工作才退出mainendp     codeendsend     start    先成masm编译aboil.asm成aboil.obj,然后用link文件连接c0x.obj和aboil.obj,调用方法如下:linkc0s+aboil  回车注意文件名顺序不要搞错了,是c0s在前然后link提示要连接的库,输入cs.libLibraries[.LIB]:cs.lib回车  得到c0s.exe,运行,就能看到显示hello

5、world!,这时调试下你的程序就知道,生成的程序先是运行一些初始化的指令,然后调用你的程序,然后你的程序调用库函数  2.如果我要调用abs()函数  就一定要在开头加上#include   编译器就会把math.h,替换到我的文件中。。。  假如我只想用abs()函数,而不用其他的。那不是浪费了好多空间???  还有,c语言是如何保证源代码封装的呢??把函数库加密吗????对于问题1:  不会的。  只有用到的函数才会链接到你的程序中。  只要你愿意,不加头文件,直接申明函数原型也是可以的。  问题2:  源代码封装怎么会和加密联系起来?就你自己写的c程序,别人是不可能

6、通过反编译得到你的源码的。Top2楼coldwindtang(风)回复于2006-08-2100:32:51得分0编译器在编译时,只会编译你用到的函数,如果你把math.h包含到程序中,但没有用一个相关的数学库函数,那么你的程序大小是不会改变的。    你可以做一个小小的实验就可以证明。先写一个程序,编译好记下大小,然后加上一个头文件,比如什么的,然后再编译,只要没有用到头文件中的函数大小是一样的!    至于你的第二个问题:c语言是如何保证源代码封装。我记得我以后打开过头文件看过,都是明码没有加密过的,所以我认为C语言并没有保证源代码封装。不过这一点

7、我并不确信。希望其他人能解决你的这个问题。3.常用库函数absread()读磁盘绝对扇区函数原形:intabsread(intdrive,intnum,intsectnum,void*buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:drive=0对应A盘,drive=1对应B盘。返回值:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。