- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编4.4剖析
多模块程序设计相关伪指令 声明本模块定义的共享符号伪指令PUBLIC 告诉汇编程序,本模块定义的哪些符号可供其他模块引用。格式如下: PUBLIC 符号1[,符号2,…] 这里的符号是本模块定义的符号常量、变量、标号或过程名。 PUBLIC伪指令一般放在模块开始处,便于阅读。 例: PUBLIC SQRT,DATA1,LOOP1,DATA2 SQRT PROC FAR … SQRT ENDP LOOP1: MOV AX, BP … DATA1 DW 100 DUP(?) DATA2 EQU END 伪指令PUBLIC使用注意事项: 符号表中的符号在该模块中必须有定义 寄存器、值为实数和值超过双字范围的符号常量不能出现在符号表中 例: PUBLIC AX, EDX, DATA1 … DATA1 EQU 781234569H 声明本模块引用的共享符号伪指令 告诉汇编程序,本模块可引用在其他模块定义的符号。这些符号必须在其他模块用PUBLIC指明为公开引用的符号。使用格式: EXTERN 符号1:类型[,符号2:类型…] 类型 变量类型:BYTE,WORD,DWORD,FWORD,QWORD 标号、过程名类型:NEAR、FAR 符号常量类型:ABS 例: EXTERN SQRT:FAR, DIV1:FAR, DATA1:DWROD , DATA2:ABS … CALL SQRT … ADD EBX, DATA1 … END EXTERN使用注意事项: EXTERN后面申明的符号不能再在本模块定义 EXTERN后面申明的符号只能单独引用,不能出现在表达式中(新版汇编已不限制) 例: EXTERN sqrt:far, data2:abs … add ax, data2+100h ;非法,data2出现在了表达式中 sqrt: mov bx, 1000h;非法, sqrt在其他模块中已经定义 END 系统功能调用 计算机系统层次结构 磁盘 打印机 键盘 显示器 …… 操作系统内核 应用程序接口 硬件驱动 SHELL 应用程序 用户 操作系统的作用是管理软、硬件。系统功能调用就是应用程序通过操作系统提供的接口来访问软硬件系统。 应用程序接口给程序员(或应用程序)提供了调用系统功能的接口。 DOS系统的应用程序接口形式是软中断,而Windows系统是通过系统动态链接库里的API函数调用来实现系统功能调用 使用系统调用的优点: 使用系统调用的好处是程序员不需要了解硬件系统结构就能访问外部硬件; 系统调用对底层硬件系统进行了抽象,应用程序通过系统调访问硬件系统,因此不需要因为硬件的改变而改变应用程序. 链接方式 静态链接——在源程序编译后,把库(lib)文件里的被调用的子程序部分和我们自己写的源程序生成的obj文件合并生成可执行文件的过程就是静态链接。 静态链接缺点:同样的子程序会被不同的可执行程序拷贝多份。 动态链接——在程序运行时才链接,称为动态链接。装载程序首先在系统中查找要链接的动态链接库是否已经在内存当中。如果在内存中,只需要找到调用的函数的入口地址,并把可执行的程序调用地址改为改入口地址即可。否则,要先把相应动态链接库装入内存,再修改调用地址。 Windows系统中,承担对底层软硬件系统访问功能的子程序都存在于kernel.dll、GDI.dll等动态链接库中。而且这些库文件在系统启动时就装入了内存。所以动态链接到这些库文件里的子程序给一般程序提供了一种调用系统功能的方式。 实模式下的DOS系统没有提供动态链接方式。 中断简介 当CPU正在执行某程序时,由于外界临时事件的发生,向CPU发出请求处理信号, CPU暂停现行程序的执行转去处理临时发生的事件,处理完后返回到被中断程序的断点处继续执行,这个过程就是中断。 中断信号可由外部硬件发出,也可由程序通过INT指令产生。向CPU发出请求信号的设备或部件、软件程序 ,称为中断源。 中断过程中,执行的事件处理程序称为中断服务程序。相对于它来说,被中断了的程序就是主程序。 有了中断,计算机就能够自动而及时地处理随机发生的事件,并且可使高速的CPU与低速的I/O设备以中断方式传递数据, CPU不必查询I/O的状态,从而使计算机提高了工作效率。 中断向量表 中断向量表是一个特殊的线性表,它保存着系统中所有中断服务程序的入口地址(偏移量和段地址)。在DOS系统中,该向量表有256个元素,每个元素占4个字节,总共占1K个字节。 右图中的“偏移量”和“段地址”是指该中断服务程序入口单元的“偏移量”和“段地址”。从图中不难看出:若中断号为n,则在中断向量表中存储该中断服务程序入口地址的单元地址为:4n。 在DOS系统中21H号中断专门用于访问DOS系统的功
文档评论(0)