C语言综合应用程序示例.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?程序模块文件f2.c 的内容如下: extern int var; /* 外部变量的说明 */ proc1() { var = 25 ; } 12.4.2 全局变量的传递 C语言程序(extern)和汇编语言程序(public)可以通过全局变量传递信息,其数据类型的对应关系如下表所示。 由于C语言大小写是有区别的,从而在与汇编语言混合编程时,最好在options菜单下的Linker子项中将Case-Sensitive Link置成off状态来取消其区别。 下一页 第12章 C语言综合应用程序举例 上一页 12.4.3 参数和返回值的传递 C语言程序和汇编语言程序的参数传递是通过堆栈来完成的。所谓堆栈,实质就是一种先进后出的内存区域,且只在一端进行出栈和入栈操作。 对C语言而言,参数进栈的顺序是从右到左。如在C语言程序中有语句power2(int para1,int para2),则执行该语句时堆栈中的内容如下图所示,通过sp便可得到参数值,从而完成参数的数据传递。 下一页 第12章 C语言综合应用程序举例 上一页 举例:设某C语言程序如下: ?#include “stdio.h” int power2(int,int); main( ) { printf(“2 的4次方乘以8为:%d”, power2(8,4) ); } } 当汇编语言子程序有返回值时,是通过ax和dx寄存器来进行传递的。 下一页 第12章 C语言综合应用程序举例 上一页 汇编语言子程序如下: ?.model small .code public _power2 _power2 proc push bp mov bp, sp mov ax, [bp+4] ; 将第一个参数的值8送到ax中 mov cx, [bp+6] ; 将第二个参数的值4送到cx中 shl ax, cl; 将ax的内容左移cl次,每移一次表示乘2 pop bp ret _power2 endp end 下一页 第12章 C语言综合应用程序举例 上一页 12.4.4 汇编语言子程序的汇编及与C程序的连接 1、在集成环境下,进行混合编程的程序编译连接时,需要先用宏汇编(MASM.EXE)将汇编语言程序进行汇编,生成OBJ文件。然后,将此OBJ文件加入到C程序中。最后进行连接,生成EXE文件。 2、将OBJ文件加入到C程序,对Turbo C而言,非常简单。先编辑一个工程文件(*.prj),其内容是需要连接的汇编OBJ文件和C语言文件名列表,如: myc.c mymasm.obj 3、然后在Turbo C的集成环境中选择 project 主菜单中的 project name 项,将上面编辑的工程文件名写入,便可进行连接。 下一页 第12章 C语言综合应用程序举例 上一页 12.4.5 内嵌汇编指令的C 程序结构 在C程序嵌入汇编指令的格式为: asm 操作码 操作数 ;或换行 例如: int max(int a,int b) { asm mov ax,a asm cmp ax,b asm jg ok asm mov ax,b ok:return _ax ; /*_ax为Turbo C定义的伪寄存器变量名*/ } 下一页 第12章 C语言综合应用程序举例 上一页 ⑴ 在汇编语言代码中使用的C语言变量应该初始化 且用ptr指明对应的汇编语言类型; ⑵ 伪指令如 db 等不能嵌入; ⑶ 在_asm 块中的注释为汇编语言的注释,即分号; ⑷ 不应在 _asm 块中用 ret 指令返回,而应用C语言 的return返回; ⑸ 汇编语言指令不需以分号(;)作语句结束; ⑹ 也可用“_asm操作码 操作数 ;或换行”的 形式加一行汇编语言指令。 下一页 第12章 C语言综合应用程序举例 上一页 说明 #include iostream.h int asmmax(int a,int b) { in

文档评论(0)

heroliuguan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档