- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 过程 5.2 与外部库链接 链接库是指包含了标准库函数的文件,这些库函数已经编译成机器码的形式。 链接库可以由一个或多个源文件构成,这些文件被汇编成目标文件并以链接器能够识别的特定格式插入到一个文件中构成链接库。 例如:程序要调用WriteString过程在控制台上显示字符串 WriteString PROTO ; PROTO伪指令声明要调用的外部过程, 该语句可以在Irvine32.inc中找到。 Call WriteString ;使用CALL指令调用writestring过程 Call WriteString 指令的处理过程: 汇编器汇编到该指令时,为CALL指令的目的地址留出空白,该地址要等到链接阶段再填入。 链接器在链接库中查找WriteString过程,将其相应的机器指令复制到程序的可执行文件中,并将该过程在可执行文件中的实际地址补入到CALL指令中为目的地址留出的空白处。 如果试图调用的过程不在链接库中,链接器会产生一条链接错误消息,并拒绝生成可执行文件。 链接器的命令行选项 链接程序将程序的目标文件和库文件合并起来,格式为: link32 hello.obj irvine32.lib kernel32.lib irvine32.lib:链接到kernel32.lib库文件。 kernel32.lib:MS-Windows platform SDK(平台软件开发包)的一部分,链接到kernel32.dll中的操作系统函数。 kernel32.dll:动态链接库,MS-Windows的一个基本组件,包含了字符输入输出等功能的可执行函数。 5.3 本书附带的链接库 控制台窗口:MS-Windows创建的文本窗口,运行于MS-Windows的彩色文本模式下,默认尺寸为80列25行。通过“开始|运行”,“cmd”(for Windows 2000/XP)或”command”(Windows95/98)打开。 标准输入:键盘,也可以重定向到从文件或串口读取。 标准输出:控制台输出,也可以重定向到向文件、打印机或串口输出。 重定向输入输出: 可以在命令行提示符下使用重定向输入输出命令,将标准输入或输出重定向到其他文件或串口。 重定向输入输出命令: 重定向输出 重定向输入 | 管道符 例如:sample output.txt sample input.txt sample input.txt output.txt prog1 | prog2 ;将prog1.exe的输出送到prog2.exe的输入 prog1 input.txt | prog2 output.txt ;prog1.exe从input.txt中读取输入,然后将输出送prog2.exe,prog2.exe再将自己的输出重定向到output.exe. Irvine32.lib链接库中包含的常用过程 P105 表5.1 5.3.2 过程的描述 屏幕显示和光标的变换 Clrscr:用于清除控制台窗口内容 Crlf:将光标定位到控制台窗口下一行的开始 Gotoxy:将光标定位在控制台窗口中指定的行列位置上。 默认情况下,X坐标范围(列坐标):0~79,设置在DL中;Y坐标范围(行坐标):0~24,设置在DH中 例如: mov dh, 10 mov dl, 20 call gotoxy 关于时间 Delay:以指定的毫秒数暂停程序;EAX设置为预期时间间隔,单位是毫秒。例如: mov eax, 1000 call delay GetMseconds:从午夜开始计算的逝去的毫秒数;返回值在EAX中。 .data startTime DWORD ? .code call
文档评论(0)