第六章C语言和汇编语言的混合编程.ppt_第1页
第六章C语言和汇编语言的混合编程.ppt_第2页
第六章C语言和汇编语言的混合编程.ppt_第3页
第六章C语言和汇编语言的混合编程.ppt_第4页
第六章C语言和汇编语言的混合编程.ppt_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 C语言和汇编语言的混合编程,一、汇编指令的嵌入式编程 在Turbo C语言程序中,嵌入汇编语言指令是在汇编语句前加一个ASM关键字。 语法如下: ASM 操作码 操作数 ;或回车换行,例6-1.在C语言源程序中嵌入汇编语言语句实现3个整数求和。 INT SUMS(INT VAR1,INT VAR2,INT VAR3) ASM PUSH AX ASM MOV AX,VAR1 ASM ADD AX,VAR2 ASM ADD AX,VAR3 ASM MOV VAR,AX ASM POP AX RETURN (VAR1) MAIN ( ) -* C语言主程序* PRINTF(“DN”,SUM3

2、(10,20,30); ,嵌入汇编的编译过程 C语言程序中含有嵌入式汇编语言语句时,C编译器要完成以下三个步骤: 1) 代码转换:将*.C源程序的代码转换成*.ASM扩展名的汇编语言代码源文件; 2) 编译:用默认的汇编程序TASM. EXE把产生的*.ASM汇编语言源文件编译成*.OBJ目标文件; 3)用TI_INK将目标文件链接成*.EXE可执行文件。,返回,二、汇编语言程序以传址方式传递参数调用C函数,例6-2输出字符串。 /* C语言程序:*/ extern asub(); main() asub(); /* 调用汇编语言子程序 */ csub(char * str) /* C语言函数

3、,str是地址参数 */ printf(%sn,str); ,; 汇编语言程序 .model small,c extern csub:near .data astring db OK, Assembly !,0dh,0ah,$ cstring db Good, Turbo C 2.0 !,0 .code PUBLIC _asub _asub proc mov dx,offset astring ;汇编语言子程序显示信息 mov ah,09h int 21h mov ax,offset cstring ;得到字符串的偏移地址 push ax ;压入调用参数 call csub ;调用C函数 ad

4、d sp,2 ;平衡堆栈 ret _asub endp end,命名约定,C语言程序编译时自动在函数名、过程名前加上下划线“_”,而调用时直接使用过程名。 C程序中直接调用sum(3, 5) 则汇编语言的过程名应为_sum,调用约定,C程序中对要调用的外部过程用extern关键字进行说明 extern int sum(int, int);,参数传递约定,C程序向汇编程序传送参数通过堆栈进行,采用C调用规则进行参数传递: 参数压栈顺序与参数表中出现的顺序相反,第一个参数最后压栈 通过AL、AX或DX:AX寄存器返回结果,高地址,低地址,堆栈 生长 方向,BP保护,IP,CS,参数1,参数2,BP

5、,BP+2,BP+4,BP+6,PUBLIC _sum _sum PROC NEAR PUSH BP MOV BP, SP MOV AX, BP+6 POP BP RET _sum ENDP,例6-3 两个数求和。,.MODEL SMALL .CODE PUBLIC _SUM _SUM PROC PUSH BP MOV BP, SP MOV AX, BP+6 MOV BX, BP+8 ADD AX, BX POP BP RET _SUM ENDP END,#include extern int sum(int a, int b); void main() printf(The sum is %d n, sum(5, 3); ,编译、汇编、连接方法 用C编译器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论