汇编程序设计中的重定义错误asm



我正在学习汇编编码,这是我的最大公约数(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允许数字标签等。你必须阅读汇编程序的文档来找出具体的语法。

最新更新