汇编语言和C语言的混合编程

C/C++语言是一个被广泛使用的程序设计语言,它不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。所以,C语言的程序与汇编语言程序之间能很平滑地衔接。另外,目前主要的C语言程序开发环境,如:Turbo C/C++、Borland C/C++等,也都提供了很好的混合编程手段。

这里介绍汇编语言和C语言的混合编程和调用方法。虽然其它高级语言,如:Pascal、Basic等,也可与汇编语言混合使用,但出于其应用范围的考虑,不再对它们进行介绍,感兴趣的读者可参阅有关技术资料。

汇编指令的嵌入

为了提高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之值的交换
}

例  在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
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值