我正在学习汇编编码,这是我的最大公约数(GCD)代码,在尝试编译代码后,它给出了这个错误:
错误:符号'etq1'重新定义
错误:符号'etq2'重新定义
segment .data
r db 0
segment .bss
segment .text
global _main
extern _printf
_main:
mov al,[200]
mov bl,[201]
etq1: cmp al,bl
jb fin
etq2: call PGCD
mov [202],bl
fin:
ret
这是调用函数
;function
PGCD:
mov [r],al
reste: cmp [r],bl
jb etq1
sub [r],bl
etq1: cmp [r],0
jne etq2
etq2: mov al, bl
mov bl,[r]
jmp PGCD
ret
asm源代码中的所有标签都是全局的。局部标签(可见范围较小的标签)通常具有特殊的语法。例如nasm
对以句点开头的符号给予特殊处理。以句点开头的标签被视为本地标签,这意味着它与前一个非本地标签相关联。
ARM asm允许数字标签等。你必须阅读汇编程序的文档来找出具体的语法。