是否有汇编代码约定(主要是 PIC)?
6 回答
我能够找到您可能感兴趣的汇编语言样式指南(PDF) 。
在编写程序集时,评论每一行是非常有帮助的,而且一点也不过分
这取决于您是在汇编中编程还是使用 ac 编译器为您创建程序集,如果性能很重要,请不要使用 ac 编译器,请自己编写程序集。
但一般来说,约定是注释每一行,使用具有有意义指针名称的简单子例程。您会在该块上发表评论,即
start: movlw 0x24 // \
movf count // put 24 into count
MyCount: decfsz count //decrement count and exit if done
goto myCount //do the loop
goto exit //count is done exit
这是典型的编码,地址指针的第一列是命令和关联的变量,您通常在实际程序之前的标题部分定义变量,但这对于您正在使用的汇编程序来说是特定的。有些不给你变量指针选项,你必须使用直接内存位置。如果您查看从反汇编程序中返回的注释代码,它会看起来像。
0020 movlw 0x24
0021 movf 0x25 // 0x25 = memory address of count
0022 decfsz 0x25
0023 goto 0x0022 // loop back to 0x22 until count = 0
0024 goto 0x01FF
然后你把它注释掉,确保你的代码使用'nop's来将代码偏移到好的整数,比如开始有一个20的地址,让2到20之间的地址为中断等清除。根据芯片的不同,我为 12f675 编写了很多代码,所以这就是我通常使用的模型。
还将代码保存在简单清晰的子例程中,并且地址应该是很好的整数,在初始子例程之间留下大约 10 个 nop 的块,您可以随时返回并稍后压缩代码。并且总是评论你的代码,你不能评论它。
此外,我通常将我的 init routeen 尽可能靠近内存末尾,为该实际程序留出最大空间。
希望对一些人有所帮助。
我和 Jason S 在一起——尽可能使用 C 编译器,即使您最终使用“__asm”关键字在“.c”文件中嵌入了几行汇编语言。
如果您必须在汇编程序中为 PIC 编写整个程序,推荐的函数调用约定位于 PIClist:PIC Paging 和 PCLATH。
我认为没有任何正式的东西,但是阅读他们网站上的编码示例可以让您体验到通常的习语。请注意,许多不同的爱好者有很多“贡献”,他们可能不是那么好。
还要检查其他项目,大多数都会有丑陋的代码;但你会发现一两颗宝石。
我从未在 PIC 上编程,但喜欢阅读代码。我隐约记得一个“实时操作系统”,它的执行流程非常好和干净。不记得编码风格有多一致,但我会从那里开始。
最好阅读它们中的大多数,当它像散文一样简单时,你就会找到你的风格
这实际上取决于您使用的 PIC 型号。例如,PIC16s 和 PIC18s 有很多汇编示例,可以在网上轻松找到。
然而,像 PIC24 和 PIC32 这样的模型更适合 C 语言。它们是 C 语言中的很多 PIC 示例,可以在您的特定 PIC 模型的网站上找到。这些 PIC 模型仍然可以在 Assembly 中编程,但它们是很少的关于如何编程的 Web 示例。最好的资源在 MPLAB 中的“帮助”下,检查 PIC 模型使用的任何汇编器的“帮助内容”。这将向您展示一些示例以及有关如何在 PIC 汇编中编程和完成简单的 PIC 任务(例如定义内存或编写宏)的说明。