PC汇编语言程序设计_第11章.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《PC汇编语言程序设计_第11章.pdf》由会员分享,可在线阅读,更多相关《PC汇编语言程序设计_第11章.pdf(39页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第十一章 模块化程序设计技术第十一章 模块化程序设计技术11.1 模块化程序设计模块化程序设计11.2 汇编语言与高级语言的连接汇编语言与高级语言的连接习题十一习题十一第十一章 模块化程序设计技术11.1 模块化程序设计模块化程序设计11.1.1 与模块化程序设计有关的伪指令与模块化程序设计有关的伪指令进行模块化程序设计时,各程序模块间的连接信息由程序段伪指令进行说明,这些伪指令有:1 公用标号说明伪指令 公用标号说明伪指令PUBLICPUBLIC 伪 指 令 的 格 式 为:PUBLIC LABEL1 ,LABEL2,LABEL3其中,LABEL1、LABEL2、LABEL3是在本模块内定义
2、的、可被连接在一起的其它程序模块使用。第十一章 模块化程序设计技术2 外部标号说明伪指令 外部标号说明伪指令EXTRNEXTRN伪指令的格式为:EXTRN LABEL1:TYPE,LABEL2:TYPE,LABEL3:TYPE其中,LABEL1、LABEL2、LABEL3是在与本模块连接在一起的其它模块中已经用PUBLIC伪指令说明过的标识符,TYPE是标识符的类型。如果为符号变量,则TYPE的取值应为byte、word或dword;如果为标号或过程名,则其取值应为near或far。要想在本模块中使用其它模块中定义的标识符,必须在本模块中使用EXTRN伪指令进行说明,而且,这些标识符还必须在其
3、它模块中用PUBLIC伪指令说明过,否则就会产生错误。PUBLIC与EXTRN伪指令必须放在各模块源程序的最前面。第十一章 模块化程序设计技术3 包含伪指令 包含伪指令INCLUDEINCLUDE伪指令格式:INCLUDE pathfilename其中,filename是其它源程序模块的文件名,它可以放在源文件的任何位置,汇编时,此源文件所产生的目标代码就放在此位置。如果INCLUDE后的文件名不在当前缺省目录下,则可由path给出此文件的路径。第十一章 模块化程序设计技术11.1.2 程序模块的生成程序模块的生成(1)程序功能描述:正确描述整个程序需要完成的功能。(2)任务模块划分:根据程序
4、的总体功能将程序分成若干功能相对独立的任务模块,确切定义各模块应完成的任务及各任务之间进行通信的方法,写出详细的模块说明。(3)编程调试:根据各任务模块的功能要求编写程序模块,并进行功能调试。(4)总体调试:将各任务模块的目标代码连接在一起形成一个程序并进行总体调试。(5)形成设计文档:将各模块的源程序及其说明合在一起形成设计文档。第十一章 模块化程序设计技术1 多模块程序的汇编 多模块程序的汇编进行模块化程序设计时,模块的汇编、连接分两种情况。第一,各模块独立编制源程序,然后用INCLUDE语句将要连在一起的源程序文件插入到主程序模块中,再由汇编程序将各模块汇编成一个完整的目标代码程序(.O
5、BJ),此后,由连接程序(LINK)进行连接,形成可执行文件。严格来讲,这种情况并不是真正的模块化程序设计,而仅仅是将一个大的源文件分成若干功能相对独立的小的源文件,程序的汇编、连接与普通程序设计的过程相同。第二,各模块独立编制源程序、独立汇编和调试,待调试正确后,再生成目标代码文件,而后由连接程序将各目标代码文件连接在一起,形成可执行文件。随后我们讨论这种情况的多模块程序设计。第十一章 模块化程序设计技术2 多模块程序的连接 多模块程序的连接进行模块化程序设计时,在规定了各模块功能以及各模块相互之间的连接约定后,就可以独立编写、调试各模块源程序。多个程序模块相连接时,并不需要将所有的代码段和
6、数据段等连接在一起构成一个大的代码段或数据段。在大多数情况下,各程序模块仍然使用自己的分段,通过模块之间的相互调用来进行工作。若有些程序模块需要连接在同一段内,则需要程序设计人员在编制源程序模块时设定。编制源程序模块应注意:各源程序模块要设置的段基址,至少要设置一个代码段(其它段根据需要设置)。根据对各段在内存中存放的具体要求,给出SEGMENT伪指令后的组合类型和类别,详见SEGMENT伪指令。第十一章 模块化程序设计技术3 多个模块间的变量传送问题 多个模块间的变量传送问题在模块化程序设计中,各模块之间的变量传送可通过公共数据段和外部符号两种方法进行,下面分别举例说明:(1)使用公共数据段
7、。在数据段中利用COMMOM类型将所有变量合并成一个覆盖段,这样所有模块使用的实际上是本模块中的变量,不需要做特殊处理。在例111中采用公共数据段的方法来传递变量,要注意由于子程序与主程序不在同一程序模块内,对子程序的调用和定义必须使用FAR类型,并且对子程序名要用PUBLIC、EXTRN宏指令加以说明。第十一章 模块化程序设计技术例例 11.1 十进制数到十六进制数转换程序。从键盘输入一个十进制数(最大数为65 535),然后把该数以十六进制数形式在屏幕上显示出来。本例采用多模块程序设计,一个子程序模块DECTOBIN实现从键盘输入十进制数并转换成二进制数;另一个子程序模块BINTOHEX在
8、把二进制数以十六进制数的形式在屏幕上显示出来。源程序清单如下:;主程序模块 原文件名为:BIN.ASMEXTRN DECTOBIN:FAR EXTRN BINTOHEX:FAR DATA SEGMENT COMMON 第十一章 模块化程序设计技术MAXLENDB 5ACTLENDB?STRING5DUP(?)HEX DW 0DATA ENDSSATCKSEG SEGMENT STACKSTK1 DW 100 DUP(0)STACKSEGENDSCODESEG SEGMENTASSUME CS:CODESEG,DS:DATASEG,SS:STACKSEGMAIN:MOV AX,DATASEG M
9、OV DS,AX ;设置数据段段寄存器CALL FAR PTR DECTOBIN 第十一章 模块化程序设计技术;调键盘输入及二进制数转换程序MOV DL,0AHMOV AH,02H INT 21H ;调DOS中断显示换行MOV DL,0DHMOV AH,02H INT 21H ;调DOS中断显示回车CALL FAR PRTR BINTOHEXMOV AH,4CHINT 21H ;返回DOSCODESEG ENDSEND MAIN 第十一章 模块化程序设计技术;模块1 原文件名为:BIN1.ASMPUBLIC DECTOBINDATA SEGMENT COMMONMAXLEN DB 5ACTLE
10、NDB?STRING5 DUP(?)HEX DW 0DATA ENDSCODE1 SEGMENTDECTOBIN PROC FARASSUM CS:CODE1,DS:DATALEA DX,MAXLEN 第十一章 模块化程序设计技术MOV AH,0AHINT 21HLEA SI,STRINGMOV CX,ACTLENXOR DX,DXGETA:MOV AL,SICMP AL,0JB RETURNCMP AL,9JA RETURNSUB AL,0;转换成对应的数字XOR AH,AHMOV BX,DX 第十一章 模块化程序设计技术SHL DX,1SHL DX,1ADD DX,BXSHL DX,1AD
11、D DX,AXINC SILOOP GETARETURN:MOV HEX,DXRETDECTOBINENDPCODE1 ENDSEND;模块2 原文件名为:BIN2.ASM第十一章 模块化程序设计技术PUBLICBINTOHEXDATA SEGMENT COMMONMAXLENDB 5ACTLENDB?STRING5DUP(?)HEX DW 0DATA ENDSCODE2 SEGMENTBINTOHEX PROC FARASSUMECS:CODE2,DS:DATA MOV CH,4MOV BX,BIN 第十一章 模块化程序设计技术CONV1:MOV CL,4ROL BX,CLMOV BL,AL
12、AND AL,0FHCMP AL,9JLE ASCIADD AL,07HASCI:ADD AL,30HMOV AH,02HMOV DL,ALINT 21HDEC CHJNE CONV1BINTOHEX ENDPCODE2 ENDSEND 第十一章 模块化程序设计技术上述源程序分别汇编后,通过连接程序可以生成可执行文件,连接方法为:LINK BIN.OBJ+BIN1.OBJ+BIN2.OBJ生成的可执行文件为BIN.EXE。第十一章 模块化程序设计技术(2)使用外部符号。把变量作为外部符号同样可以实现各模块间的变量传送,但要注意当使用作为外部符号的变量时,数据段以及附加段的段基址要修改,以保证对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PC 汇编语言 程序设计 11
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内