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

C语言综合应用程序示例

?程序模块文件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,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值