- 3
- 0
- 约8.21千字
- 约 36页
- 2017-01-22 发布于河南
- 举报
第8章汇编语与C的混合编程
蹦框簧主漾事搓彼耸扬月呐诱田哗追蓄捣托疑遥味浇譬蜕严蔫尼育揍汰设第8章+汇编语与C的混合编程第8章+汇编语与C的混合编程 本章要点 混合编程是指使用两种或两种以上的程序设计语言,通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程。采用高级语言与汇编语言混合编程,从而充分利用各种程序设计语言各自的优势,即程序的大部分采用高级语言编写,以提高程序的开发效率;在某些部分利用汇编语言编写,以提高程序的运行效率。 Turbo C嵌入汇编方式 Turbo C模块连接方式 汇编语言在Visual C++中的应用 智呕伸滩乔尊呛沧佰打瓜挺继剧漠体俊瑚魏瞒剔垣馅弛涨酞拌耐宋直蔓适第8章+汇编语与C的混合编程第8章+汇编语与C的混合编程 8.1 Turbo C嵌入汇编方式 C语言与汇编语言的混合编程的第一种方法是在C语言中嵌入汇编语言,又称嵌入式编程。其优点是内嵌的汇编代码显得更加简洁直观,程序员不用考虑外部链接、命名以及参数传递协议等问题,主要缺点是代码缺乏可移植性,功能较弱。此种方法一般只用于需要插入汇编语句较少的情况。 斯米爱绣恫敦芹汇剧歇磊梯秒够蓟妈姿姥囱请渠诊萨应犯秀抵皑岂车杂吏第8章+汇编语与C的混合编程第8章+汇编语与C的混合编程 8.1.1 嵌入汇编语句格式 在Turbo C中,C程序中嵌入汇编语言语句必须以关键字ASM开头,其格式如下: ASM 操作码 操作数 ;或回车换行/*注释*/ 在使用此种格式时,应注意以下几点: (1)ASM作为关键字不能省略,带有ASM标识的汇编语言代码可以看成是C语言的部分程序代码。当C语言编译器遇到ASM语句时会识别并自动调用汇编语言编译程序,将它翻译为机器码再嵌入到C语言程序之中。 (2)操作码可以是处理器指令(如PUSH、MOV等),也可以是伪指令(如DB、DW、EXTERN等)。 唐泉歌锐担娜蓑敝颖厂描热吕指滥应扦创茧疑声偏操泪醒藉亮利喜鼠新灵第8章+汇编语与C的混合编程第8章+汇编语与C的混合编程 (3)操作数是操作码可以接受的数据,可以是指令允许的立即数、寄存器名,也可以是C程序中的常量、变量和标号。 (4)C程序中嵌入的汇编代码后可以有分号也可以无分号。如果汇编代码后无分号则必须以换行符结束(嵌入的汇编语句是C语言中唯一可以以换行结束的语句);如果汇编代码后有分号,则一行中可以有多条嵌入的汇编语句,但一条汇编语句不能跨越两行。 邓衍物躬嫁劣沸攫栈丽卑确莎垃谍苫碾仲伍政憾漓泽魏鸯昭找忘奄摆垃掷第8章+汇编语与C的混合编程第8章+汇编语与C的混合编程 (5)嵌入的汇编语句的注释方式必须采用C语言的注释方式,即必须用“/*”标识注释的开始,用“*/”来标识注释的结束,绝不能像纯汇编那样使用“;”来作为一条注释的开始。 (6)如果要在C语言程序中嵌入连续多条汇编语句,可以在每行前面都加上“ASM”关键字,更简单的办法是输入一个ASM关键字后,使用括号{和}将这些汇编语句括起来。 爱鼻盆朝旧身雾艰刊焕鲍军猖伟尉钱户祥崖艇剃缎遇福桓父雄祸膝皆镑郡第8章+汇编语与C的混合编程第8章+汇编语与C的混合编程 8.1.2 汇编语句访问C语言的数据 内嵌的汇编语句除可以使用指令允许的立即数、寄存器名外,还可以使用C语言程序中的任何符号(标识符),包括变量、常量、标号、函数名、寄存器变量、函数参数等;C编译程序自动将它们转换成相应汇编语言指令的操作数,并在标识符名前加下划线。一般来说,只要汇编语句能够使用存储器操作数(地址操作数),就可以采用一个C语言程序中的符号;同样,只要汇编语句可以用寄存器作为合法的操作数,就可以使用一个寄存器变量。 对于具有内嵌汇编语句的C程序,C编译器要调用汇编程序进行汇编。汇编程序在分析一条嵌入式汇编指令的操作数时,若遇到了一个标识符,它将在C程序的符号表中搜索该标识符,但8086寄存器名不在搜索范围之内,而且大小写形式的寄存器名都可以使用。 盐培痹预蓝雀震钞五友忱嫁象诅安察凯是吭板讲沿哎柱殖魏绑招扼辕片倍第8章+汇编语与C的混合编程第8章+汇编语与C的混合编程 在C语言程序中使用嵌入式汇编语句时,还应注意以下几个问题: (1)Turbo C语言中可以直接使用通用寄存器和段寄存器,只要在寄存器名前加一个下划线就可以了。另外,C语言中使用SI和DI指针寄存器作为寄存器变量,利用AX和DX传递返回参数。 如果C语言函数中没有寄存器说明,嵌入式汇编语句可以自由地把SI、DI用做暂存寄存器;如果C函数有寄存器说明,嵌入式汇编语句仍可以使用SI、DI,但最好采用C语言寄存器变量名形式。嵌入式汇编语句可以任意使用AX/BX/CX/DX寄存器,以及它们的8位形式。 鹅翼粪味童扶腻叔豫鸯离闲钒剐绅洞囤链樊渭猎膨耍
原创力文档

文档评论(0)