我正在使用TASM 4.1编写一个汇编程序,我偶然发现了一个我无法修复2天的问题。 问题是TASM不会将宏中的标签识别为本地标签,并且在组装时会给我一个错误(Symbol已经在别处定义过)。到目前为止,我曾尝试以下的事情:TASM; LOCAL和LOCALS指令
- 把LOCALS在.ASM文件的开始,并使用@@本地标签(如在回答类似的问题的一个建议)。无论如何产生零效应。
- 在宏内部使用LOCAL列出以@@开头的所有本地标签(同样,正如Web上所建议的那样)。然而,这样在组装时产生了更多的错误:“符号已经不同类型”和“期望指针类型”
- 将LOCALS @@放在宏的开始处。就像第一种情况一样,零效应。
- 将LOCAL放在.asm文件的开头,并使用LOCAL列出标签。与#2效果相同。
- 将LOCAL放在.asm文件的开头,并在宏中使用LOCALS @@。没有效果。
- 将LOCALS @@放在.asm文件的开头。没有效果。
这是我第一次尝试编程,所以我很抱歉如果我错过了一些导致此问题的微不足道的事情。下面是我使用不止一次的烦恼宏:
dot_connect_oct1 macro dot1_x, dot1_y, dot2_x, dot2_y, colour
;;code
@@check_1:
;;code
jz @@exit_1
;;code
jg @@draw_1_2
@@draw_1_1:
;;code
jmp @@check_1
@@draw_1_2:
;;code
jmp @@check_1
@@exit_1:
endm
更新:
好吧,我似乎已经找到了解决办法。什么工作对我来说是在.asm的文件的开头声明标签,在宏本身LOCAL每个标签是这样的:
LOCAL @@label1
LOCAL @@label2
LOCAL @@label3
...
清单他们一行(LOCAL @@ LABEL1,LABEL2 @@,@ @ label3,...)不起作用。
也许有人会觉得这有用。