kingman 发表于 2009-4-18 17:56:05

怎么在c语言中使用汇编内嵌?

在PIC中有两种方式可以嵌入汇编,一种是将函数完全用汇编语言编写,然后用ASPIC独立汇编后得到扩展名为.ASM文件,再在c程序中用extern声明这个外部函数。需要注意的是汇编函数名要和C程序中声明的函数名相同并且在函数名前面加下划线“_”。   另一种方法是将PIC指令通过嵌入指令来直接写到C程序中,具体是这样:由#asm开头,中间写汇编语句,最后由#endasm结尾。如果使用单句汇编指令,还可以采用asm()。在这种方法中要注意的是#asm开头,#endasm结尾的方式所嵌入的汇编程序执行起来并不
在 C 原程序中直接嵌入汇编指令是最直接最容易的方法。如果只需要嵌入少量几条的
汇编指令,PICC 提供了一个类似于函数的语句:
asm(“clrwdt”);
双引号中可以编写任何一条 PIC 的标准汇编指令。例如:
for (;;) {
asm("clrwdt"); //清看门狗
Task();
ClockRun();
asm("sleep"); //休眠
asm("nop"); //空操作延时
}   
               逐行嵌入汇编的方式

完全按照C程序的执行顺序,只有asm()方式服从C程序执行顺序。
如果需要编写一段连续的汇编指令,PICC 支持另外一种语法描述:用“#asm”开始汇
编指令段,用“#endasm”结束。例如下面的一段嵌入汇编指令实现了将0x20~0x7F 间的
RAM 全部清零:
#asm
movlw 0x20
movwf _FSR
clrf _INDF
incf _FSR,f
btfss _FSR,7
goto $-3
#endasm

整段嵌入汇编的方式
页: [1]
查看完整版本: 怎么在c语言中使用汇编内嵌?