如何写要被C调用的汇编函数

描述

问:我该怎么写一个将被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

这将引用第三个字节。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分