111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:7753回复:0

经典汇编语言教程:第12章 汇编语言和C语言

楼主#
更多 发布于:2013-01-29 11:54

C/C++语言是一个被广泛使用的程序设计语言,它不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。所以,C语言的程序与汇编语言程序之间能很平滑地衔接。另外,目前主要的C语言程序开发环境,如:Turbo C/C++、Borland C/C++等,也都提供了很好的混合编程手段。
本章主要介绍汇编语言和C语言的混合编程和调用方法。虽然其它高级语言,如:Pascal、Basic等,也可与汇编语言混合使用,但出于其应用范围的考虑,不再对它们进行介绍,感兴趣的读者可参阅有关技术资料。

12.1 汇编指令的嵌入


为了提高C语言程序内某特殊功能段的处理效率,我们可以在其源程序中嵌入一段汇编语言程序段。这样做,虽然能达到提高了程序处理效率的目的,但它无疑以丧失源程序的可移植性为代价。所以,当想用C语言和汇编语言混合编程时,程序员需要权衡采用这种方法的利与弊。
在C语言中,嵌入汇编语言的语法如下(*):
asm <opcode><operands><; or newline>
注意:这里的分号';'不是汇编语言中起注释作用的分号,而是作为语句的分隔符。
若C语言源程序中嵌入一条汇编语句,则可按下列方式来做:
asm mov ax, data
若要嵌入一组汇编语句,则需要用括号'{'和'}'把它们括起来。
asm {
mov ax, data1
xchg ax, data2
mov data1, ax //实现整型变量data1和data2之值的交换
}
例12.1 在C语言源程序中嵌入汇编语言语句实现赋值语句A=A+B+C,其中:A、B、C都是整型变量。
解: ……
asm {push ax //实现整型变量A=A+B+C
  mov ax, A
  add ax, B
  add ax, C
  mov A, ax
  pop ax
}

喜欢0 评分0
游客

返回顶部