汇编编程中重新定义错误 asm

redefined error asm in assembly programming

我正在学习汇编代码,这是我的最大公约数 (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

gives special treatment to symbols beginning with a period. A label beginning with a single period is treated as a local label, which means that it is associated with the previous non-local label.

ARM asm 允许数字标签等。您必须阅读有关汇编程序的文档以找出具体的语法。