【发布时间】:2020-07-12 20:25:02
【问题描述】:
我正在使用 AtmelStudio 在 AVR 中为 Atmega32 编程。我想知道如何在单独的文件中编写子例程或函数,然后在 main.asm 中调用它?
当前的问题是我在 genArray.asm 中有一个子程序 genArrays 。
在main.asm 的开头使用.include "genArray.asm" 会导致程序在main.asm 的开头立即运行genArray,当我不希望它被调用时,直到我使用调用指令实际调用它(下面的示例)
main.asm:
.include "genArray.asm"
.org 0x0000
start:
...
... ---- ; do some stuff
...
...
call genArrays ---- ; call to genArrays subroutine that is defined in genArray.asm (separate file)
... ---- ; return here and continue with program
... ---- ; do some more stuff
genArray.asm:
genArrays: ---- ; start of subroutine
...
...
...
... -----; do some stuff
...
ret
【问题讨论】:
-
全局声明符号。然后您必须使用正确的设置/拆卸说明在另一个文件中调用该函数。将它们链接在一起,以便在最终的二进制文件中解析符号。
标签: c assembly avr atmel atmelstudio