版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/FJHX 0002-2022灵芝工厂化代料生产技术规范
- T/CTS 28-2025城市道路平交路口交通安全风险防控设计技术导则
- DB32/T 5312-2025公路钢渣沥青路面施工技术规范
- 湖北省孝感市应城市2025-2026学年七年级上学期期中语文试卷(含答案)
- 广西南宁市武鸣高级中学2026-2027学年高三上学期第一次学情自测物理学科试卷(含答案)
- 第13课 《与朱元思书》 同步练习 (含答案)2026-2027学年统编版语文八年级上册
- 山东盐业发展现状与“十五五”展望- 2026
- 2025-2026年江苏省人教版九年级体育与健康课后练习题
- 2025-2026年人体生理学综合测试题库
- 2025-2026年浙江省人教版高中一年级体育与健康期末复习卷
- 教学课件-新编MBA英语综合教程
- 经皮穿刺脊柱后凸成形术后护理查房
- 老年人白内障课件
- 酒店总经理转正述职报告
- 2026中国移动校园招聘备考考试题库附答案解析
- 三一研发项目管理办法
- 运营商反诈知识培训课件
- 北大印章管理办法
- 前列腺癌护理个案查房
- 患者自行拔出尿管护理不良事件
- 高三化学一轮复习-配合物 课件
评论
0/150
提交评论