RSS

C和汇编混合编程之经验谈

来源:深圳电子技术网 作者:不详 时间:2007-03-09 Tag: 点击:

本人在调试混合编程的程序时,苦于资料太少,结果折腾了两天才调通。对于混合编程的方法初有体会,不敢独享,特发此贴,以飨众网友。
  C调用汇编有两种方法,一是直接在C中插入汇编语句,而是用汇编编写一个子程序,供C调用。方法一适用于类似看门狗复位这样的只需一两句汇编就能完成的场合;方法二更为通用,比如用汇编编写延时子程序,就能实现精确延时。下面讨论一下方法二的注意事项。
  1。函数声明: C中在函数前加extern声明此函数为外部函数,在汇编中要声明函数名为全局变量,如:
  extern void delay(void) ;  /*in C*/
  globl delay   ; in asm
_delay:   ; delay function begins
2 参数传递 :一般是用寄存器传递参数的,比如ImageCraft,就用人R16,R17,R18,R19充电输入参数,用R16,R17传递返回结果。如果返回结果需要多个字节才能表示,最好用SRAM充电结果,即在汇编中,把结果存入SRAM中,在C中读取相应的地址。
3 保存寄存器。 一些寄存器在调用子程序时,内容是不能被改变的,这些寄存器称为Reserved register,如果汇编子程序用到了这些寄存器,就要在程序入口出将它们入栈,程序返回时再出栈。
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
合作站点