问:我该怎么写一个将被C调用的汇编函数?
答:一个最简单的学习怎么写汇编的方式是,先用C写这个代码的简单版本,然后用编译器将它编译成为汇编代码。然后你就可以用这个输出的汇编代码作为你自己汇编函数的模板。例如:
你说你想写一个带有“long”类型参数的汇编子程序,那么首先用C写一个函数:
void MyAsmFunc(unsigned long parameter)
{
}
好了,现在编译它产生汇编代码。PICC编译器的-S选项可以。
picc -16f877 -S file.c
这个命令将产生"file.as",打开它,它看起来像下面这样:
; param _parameter assigned to ?_MyAsmFunc+0
_MyAsmFunc$parameter set ?_MyAsmFunc+0
psect text1,local,class=CODE,delta=2
global _MyAsmFunc
signat _MyAsmFunc,4216
psect text1
_MyAsmFunc
bcf 3,6
bcf 3,5
return
因为PICC编译器会让函数的bank回零。所以我们在这里看到它在return之前把bank回到bank0。从这个汇编代码开始,你可以扩充你的汇编代码。函数的参数可以使用_MyAsmFunc$paramter符号来访问。这个符号访问的是第一个字节,其余的字节就在符号上加偏移量,例如:
_MyAsmFunc$parameter+2
这将引用第三个字节。
全部0条评论
快来发表一下你的评论吧 !