第11章模块化程序设计

第11章模块化程序设计

ID:38515024

大小:387.50 KB

页数:38页

时间:2019-06-14

第11章模块化程序设计_第1页
第11章模块化程序设计_第2页
第11章模块化程序设计_第3页
第11章模块化程序设计_第4页
第11章模块化程序设计_第5页
资源描述:

《第11章模块化程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、教学重点第11章介绍实际应用当中,常见的混合编程问题,重点是参数传递方法混合编程的两种方式模块连接的约定规则模块连接的参数传递方法模块化程序设计将程序分段、采用子程序或宏结构都是进行模块化程序设计本节介绍开发大型程序时采用的方法:源程序文件的包含目标模块连接把源程序分放在几个文本文件中,在汇编时通过包含伪指令INCLUDE结合成一体INCLUDE文件名源文件包含的操作步骤:①分别编辑生成各个文件②汇编、连接主程序文件把常用子程序写成独立的源程序文件,单独汇编,形成子程序的目标文件.OBJ主程序也

2、经过独立汇编之后形成目标文件连接程序将所有目标文件连接起来,最终产生可执行文件需要遵循的原则:①声明共用的变量、过程等②实现正确的段组合③处理好参数传递问题目标代码文件的连接2声明共用的变量、过程各个模块间共用的变量、过程等要说明PUBLIC标识符[,标识符...];定义标识符的模块使用EXTERN标识符:类型[,标识符:类型...];调用标识符的模块使用标识符是变量名、过程名等类型是byte/word/dword(变量)或near/far(过程)在一个源程序中,public/extern语句可

3、以有多条各模块间的public/extern伪指令要互相配对,并且指明的类型互相一致第9章实现正确的段组合子程序文件必须定义在代码段中,也可以具有局部的数据变量采用简化段定义格式,只要采用相同的存储模式,容易实现正确的近或远调用完整段定义格式中,为了实现模块间的段内近调用(near类型),各自定义的段名、类别必须相同,组合类型都是public。实际的程序开发中,各个模块往往由不同的程序员完成,不易实现段同名或类别相同,所以索性定义成远调用(far类型)定义数据段时,同样也要注意这个问题。当各个模

4、块的数据段不同时,要正确设置数据段DS寄存器的段基地址第9章处理好参数传递问题少量参数可用寄存器或堆栈直接传送数据本身大量数据可以安排在缓冲区,用寄存器或堆栈传送数据的存储地址还可利用变量传递参数,但是要采用public/extern声明为公共(全局)变量这些也是子程序间的参数传递方法第9章什么是混合编程多种程序设计语言间,通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程就是混合编程程序的大部分采用高级语言编写,以提高程序的开发效率;在某些部分,利用汇编语言编写,以提高程序的运行效

5、率混合编程方法嵌入式汇编——在C/C++语言中直接使用汇编语言语句,简洁直观、功能较弱模块连接——两种语言分别编写独立的程序模块,分别产生目标代码OBJ文件,然后进行连接,形成一个完整的程序使用灵活、功能强,要解决参数传递问题混合编程的关键问题建立不同语言之间的接口在不同格式的两种语言间提供有效的通讯方式,作出符合两种语言调用约定的某种形式说明,实现两种语言间的程序模块互相调用、变量的相互传送以及参数和返回值的正确使用TurboC嵌入式汇编方式格式asm操作码操作数<;或换行>举例asmmova

6、x,ds;asmpopax;asmpopds;asmret;asmpushds若干注意事项操作码支持8086/8087指令或若干伪指令:db/dw/dd和extern操作数是操作码可接受的数据:立即数、寄存器名,还可以是C语言程序中的常量、变量和标号等内嵌的汇编语句可以用分号“;”结束,也可以用换行符结束使用C的注释,如/*…*/正确运用通用寄存器、标号等/*LT602.C*/#includevoidupper(char*dest,char*src){asmmovsi,src/

7、*dest和src是地址指针*/asmmovdi,destasmcldloop:asmlodsb/*C语言定义的标号*/asmcmpal,'a'asmjbcopy/*转移到C的标号*/asmcmpal,'z'asmjacopy/*不是’a’到’z’之间的字符原样复制*/例11.2-1/2asmsubal,20h/*小写字母转换成大写*/copy:asmstosbasmandal,al/*C语言中,字符串用NULL(0)结尾*/asmjnzloop}main()/*主程序*/{charstr[]=

8、"ThisStartedOutAsLowercase!";charchr[100];upper(chr,str);printf("Originstring:%s",str);printf("UppercaseString:%s",chr);}例11.2-2/2TurboC模块连接的约定规则命名约定汇编语言过程中被C语言调用的标识符前要加上下划线“_”声明约定C对调用的外部过程、变量等采用EXTERN说明汇编语言程序的标识符用public操作符定义寄存器使用约定存储模式约定采用相同

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

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

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