下载此文档

第7章 汇编语言与CC++的混合编程.ppt


文档分类:IT计算机 | 页数:约32页 举报非法文档有奖
1/ 32
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/ 32 下载此文档
文档列表 文档介绍
第 7 章
教学重点
第7章介绍实际应用当中,常见的混合编程问题,重点是参数传递方法
混合编程的两种方式
模块连接的约定规则
模块连接的参数传递方法
C++代码优化
什么是混合编程
多种程序设计语言间,通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程就是混合编程
程序的大部分采用高级语言编写,以提高程序的开发效率;在某些部分,利用汇编语言编写,以提高程序的运行效率
混合编程方法
嵌入式汇编——
在C/C++语言中直接使用汇编语言语句,
简洁直观、功能较弱
模块连接——
两种语言分别编写独立的程序模块,分别产生目标代码OBJ文件,然后进行连接,形成一个完整的程序
使用灵活、功能强,要解决参数传递问题
混合编程的关键问题
建立不同语言之间的接口
在不同格式的两种语言间提供有效的通讯方式,作出符合两种语言调用约定的某种形式说明,实现两种语言间的程序模块互相调用、变量的相互传送以及参数和返回值的正确使用
Turbo C嵌入式汇编方式
格式
asm 操作码操作数<;或换行>
举例
asm mov ax,ds;
asm pop ax; asm pop ds; asm ret;
asm push ds
若干注意事项
操作码支持8086/8087指令或若干伪指令:db/dw/dd和extern
操作数是操作码可接受的数据:立即数、寄存器名,还可以是C语言程序中的常量、变量和标号等
内嵌的汇编语句可以用分号“;”结束,也可以用换行符结束
使用C的注释,如/ * …* /
正确运用通用寄存器、标号等
/ * */
#include <>
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’之间的字符原样复制*/
-1/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);
}
-2/2
Turbo C模块连接方式
要注意模块连接的约定规则
命名约定:汇编语言过程应采用C语言类型
声明约定
寄存器使用约定
存储模式约定:采用相同的存储模式
参数传递是关键
通过堆栈传递入口参数
通过寄存器返回出口参数

第7章 汇编语言与CC++的混合编程 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数 32
  • 收藏数 0 收藏
  • 顶次数 0
  • 上传人 中国课件站
  • 文件大小 0 KB
  • 时间2011-09-06
最近更新