电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

安徽理工大学计算机汇编教程-汇编语言与cc++的混合编程

22页
  • 卖家[上传人]:wm****3
  • 文档编号:57515253
  • 上传时间:2018-10-22
  • 文档格式:PPT
  • 文档大小:142.50KB
  • / 22 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、2018/10/22,第13章汇编语言与C/C+的混合编程,1,8086/8088和ARM核汇编语言程序设计,第13章 汇编语言与C/C+的混合编程,2018/10/22,第13章汇编语言与C/C+的混合编程,2,13.1 C/C+语言参数调用协议,13.2 汇编语言与C/C+语言的连接,第13章 汇编语言与C/C+的混合编程,2018/10/22,第13章汇编语言与C/C+的混合编程,3,调用协议是指在进行了程序调用时,主程序向子程序传递参数以及从子程序获得返回值的方式。通常使用系统堆栈向子程序传递入口参数,而使用CPU内部寄存器来保存子程序的返回值。采用C/C+语言调用协议调用一个子程序时,是按照调用参数表自右向左的顺序将子程序入口参数压入堆栈的。,13.1.1 入口参数传递规则,13.1 C/C+语言参数调用协议,2018/10/22,第13章汇编语言与C/C+的混合编程,4,例如在C语言源程序中有子程序max(a,b,c),则是参数c最先入栈,然后是参数b入栈,最后是参数a入栈,且位于栈顶,堆栈的地址变化是向下增长的,最后一个进入堆栈的参数总在内存的低端它的地址BP+偏移量。其

      2、中偏移量在小紧凑模式下是4,在中/大/巨模式下是6。C传递到汇编的参数若是基本数据类型之一,则该参数实际值被拷贝到堆栈中,执行汇编语言子程序时,将从堆栈中取出其参数的值,对于结构类型变量,如数组等,则将指向该结构变量的地址指针传送到堆栈中。表13.1指出了各基本数据类型在堆栈中所占的字节数。,13.1.1 入口参数传递规则,13.1 C/C+语言参数调用协议,2018/10/22,第13章汇编语言与C/C+的混合编程,5,13.1.1 入口参数传递规则,13.1 C/C+语言参数调用协议,表13.1 C语言中各种类型变量在栈中所占的字节数,2018/10/22,第13章汇编语言与C/C+的混合编程,6,13.1.2 返回参数传递规则,13.1 C/C+语言参数调用协议,经汇编程序处理的结果通过AX和DX寄存器返回给C主程序。一般情况下只需通过AX寄存器即可将汇编程序的返回值传递给C程序,对于长整型数还需使用DX寄存器。至于结构变量、浮点数、双精度数,则存放在一块静态存储区内,用AX和DX返回指向它们的指针。C程序中的接受变量应与返回值类型一致,返回值与寄存器的对应关系见表13.2 。,

      3、2018/10/22,第13章汇编语言与C/C+的混合编程,7,13.1.2 返回参数传递规则,13.1 C/C+语言参数调用协议,表13.2 C程序返回值与汇编语言寄存器对应关系,2018/10/22,第13章汇编语言与C/C+的混合编程,8,13.1 C/C+语言参数调用协议,第13章 汇编语言与C/C+的混合编程,13.2 汇编语言与C/C+语言的连接,2018/10/22,第13章汇编语言与C/C+的混合编程,9,13.2.1模块连接法,13.2 汇编语言与C/C+语言的连接,所谓模块连接法是指将汇编语言源程序和高级语言源程序分别编译成目标文件,再将目标文件进行连接,形成可执行文件的编程方法。要使汇编语言模块和C语言模块正确地连接到一起,必须做到两点:首先是汇编模块必须采用和C模块一致的存储模式;其次汇编模块还必须遵守和C语言兼容的命名约定,命名约定包括段组命名约定和函数变量量命名约定。,2018/10/22,第13章汇编语言与C/C+的混合编程,10,13.2.1模块连接法,13.2 汇编语言与C/C+语言的连接,1、存储模式,C语言的存储模式和汇编语言相同,共有六种不同的存

      4、储模式:微模式(TINY),小模式(SMALL),中模式(MEDIUM ),紧凑模式(COMPACT),大模式(LARGE)和超大模式(HUGE)。在混合编程时应该保持汇编语言和C的存储模式一致。这里尤其要注意的是:在小模式下所有的指针都是near型的近指针,而数据/堆栈和代码可以各占一个段空间,这样运算速度快而且可用空间也大,程序运行效率最高。所以,应该尽量采用小模式进行混合编程。,2018/10/22,第13章汇编语言与C/C+的混合编程,11,2、标识符命名约定,13.2.1模块连接法,13.2 汇编语言与C/C+语言的连接,在一般情况下,由C语言编译器所编译出的源程序目标码中,缺省时自动在所有标识符前面加一个下划线。这一点可以在所有的C语言程序编译后所产生的汇编码中清楚地看到。因此,在编写能被C语言程序调用的汇编语言程序时,必须将与C语言程序调用相关的标识符前面也加上下划线,才能取得和C语言程序的一致性。另外,在使用中还应注意以下问题:汇编语言子程序中供C语言程序使用的变量,除了在标识符前加下划线外,还必须用public说明为:public _变量名;汇编语言子程序变量的定义必

      5、须与C语言程序中变量的说明一致;在供C语言程序调用的汇编子程序中,必须用public伪操作指明该子程序是可以供外部模块调用的,说明为public _过程名;为了在C语言程序中引用汇编语言子程序和变量,在C程序中应使用extern语句声明。,2018/10/22,第13章汇编语言与C/C+的混合编程,12,3、C程序和汇编程序连接,13.2.1模块连接法,13.2 汇编语言与C/C+语言的连接,根据上面的有关约定,下面给出C程序调用汇编语言子程序的主要步骤。 汇编语言子程序的编写和处理 (1)使用和C相同的存储模式定义各个段空间,没有用到的段可以不定义;(2) 在汇编语言源程序中用PUBLIC伪指令声明C需要引用的子程序和变量;(3)按照C语言调用协议从堆栈中取得入口参数;(4)对参数进行处理,实现相应的功能;(5)将返回值送入AX,DX,或者DX:AX中返回;(6)将汇编源程序编译成目标文件(.obj)。 C程序的编写和处理 (1)在Turbo CC+Borland C+集成开发环境中编写C主程序, 并在主源程序中用extern声明汇编语言子程序和变量;(2)建立项目文件PRJ,使其包含C主程序和汇编子程序目标文件名(.obj);(3)将集成开发环境的Project/project name设为C主程序名.prj,并且将编译模式子菜单设为要求的编译模式;(4)用Compiler/Make EXE file 子菜单或直接按F9,生成可执行文件.EXE。,2018/10/22,第13章汇编语言与C/C+的混合编程,13,13.2.1模块连接法,13.2 汇编语言与C/C+语言的连接,例13.1 汇编语言程序实现将C语言程序中的整型变量num加1,并返回给C程序。程序如下: /*C程序*/ int num=0; extern void incnum(void); main() int i;for (i=0;i0,y=,函数表达式中x,y均为整数,用嵌入式汇编实现。,

      《安徽理工大学计算机汇编教程-汇编语言与cc++的混合编程》由会员wm****3分享,可在线阅读,更多相关《安徽理工大学计算机汇编教程-汇编语言与cc++的混合编程》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.