- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 汇编语言与C/C++的混合编程 教学重点 第7章介绍实际应用当中,常见的混合编程问题,重点是参数传递方法 混合编程的两种方式 模块连接的约定规则 模块连接的参数传递方法 C++代码优化 什么是混合编程 多种程序设计语言间,通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程就是混合编程 程序的大部分采用高级语言编写,以提高程序的开发效率;在某些部分,利用汇编语言编写,以提高程序的运行效率 混合编程方法 嵌入式汇编—— 在C/C++语言中直接使用汇编语言语句, 简洁直观、功能较弱 模块连接—— 两种语言分别编写独立的程序模块,分别产生目标代码OBJ文件,然后进行连接,形成一个完整的程序 使用灵活、功能强,要解决参数传递问题 混合编程的关键问题 建立不同语言之间的接口 在不同格式的两种语言间提供有效的通讯方式,作出符合两种语言调用约定的某种形式说明,实现两种语言间的程序模块互相调用、变量的相互传送以及参数和返回值的正确使用 7.1 Turbo C嵌入式汇编方式 格式 asm 操作码 操作数 ;或换行 举例 asm mov ax,ds; asm pop ax; asm pop ds; asm ret; asm push ds /* asm语句是C程序中唯一可以用换行结尾的语句 */ 若干注意事项 操作码支持8086/8087指令或若干伪指令: db/dw/dd extern 操作数是操作码可接受的数据:立即数、寄存器名,还可以是C语言程序中的常量、变量和标号等 内嵌的汇编语句可以用分号“;”结束,也可以用换行符结束 使用C的注释,如 / * … * / 正确运用通用寄存器、标号等 访问C语言的数据 嵌入的汇编语句除可以使用指令允许的立即数、寄存器名外,还可以使用C语言程序中的任何符号(标识符),包括变量、常量、标号、函数名、寄存器变量、函数参数等;C编译程序自动将它们转换成相应汇编语言指令的操作数,并在标识符名前加下划线。 对于具有内嵌汇编语句的C程序,C编译器要调用汇编程序进行汇编。 汇编程序在分析一条嵌入式汇编指令的操作数时,若遇到了一个标识符,它将在C程序的符号表中有哪些信誉好的足球投注网站该标识符;但8086寄存器名不在有哪些信誉好的足球投注网站范围之内,而且大小写形式的寄存器名都可以使用。 访问C语言的数据 例7.1:用嵌入汇编方式实现取两数较小值的函数min ? /* LT701.C */ int min(int var1,int var2) /* 用嵌入汇编语句实现的求较小值 */ { asm mov ax,var1 ?????????? asm cmp ax,var2 ?????????? asm jle minexit ?????????? asm mov ax,var2 minexit: return(_AX); /* 将寄存器AX的内容作为函数的返回值 */ } main()???? /* C语言主程序 */ { min(100,200); } 嵌入汇编的编译过程 C语言程序中含有嵌入式汇编语言语句时 C编译器首先将C代码的源程序(.c)编译成汇编语言源文件(.asm) 然后激活汇编程序Turbo Assembler将产生的汇编语言源文件编译成目标文件(.obj) 最后激活Tlink将目标文件链接成可执行文件(.exe)。 例7.2-1/2 / * LT702.C */ #include stdio.h void upper(char *dest,char *src) { asm mov si,src /* dest和src是地址指针 */ asm mov di,dest asm cld loop: asm lodsb /* C语言定义的标号 */ asm cmp al,a asm jb copy /* 转移到C的标号 */ asm cmp al,z asm ja copy /* 不是’a’到’z’之间的字符原样复制 */ 例7.2-2/2 asm sub al,20h /*小写字母转换成大写*/ copy: asm stosb asm and al,al /* C语言中,字符串用NULL(0)结尾 */ asm jnz loop } main() /* 主程序 */ { char str[]=This Started Out As Lowercase!; char chr[100]; upper(chr,str); printf(Origin string:\n%s\n,str); printf(Uppercase String:\n%s\n,chr); } 7.2 Turbo C模块连接方式 要注意模块连接的约定规则 命名约定:汇编语言过
您可能关注的文档
最近下载
- 必威体育精装版人教版六年级数学上册教案全册.doc VIP
- 《中华民族大团结》(初中)第10课伟大梦想共同追求教案.pdf VIP
- 中外教育理论名著选读.docx VIP
- 专业音响完整系统的安装与调试.doc VIP
- 西门子12001500PLC用触摸屏按钮触发启动PID的自整定编写方法程序示例.docx VIP
- 《中外教育名著选读》模拟试题.docx VIP
- 中兴接入网和epon b ch zxa10f822产品介绍23p.pdf VIP
- 平型关大捷和台儿庄战役.ppt VIP
- 环境学第2版-左玉辉-教学课件-第2讲 水环境.ppt VIP
- 小米质量保证工程师岗面试题库参考答案和答题要点.docx VIP
初级会计持证人
专注于经营管理类文案的拟写、润色等,本人已有10余年相关工作经验,具有扎实的文案功底,尤善于各种框架类PPT文案,并收集有数百万份各层级、各领域规范类文件。欢迎大家咨询!
文档评论(0)