Salve a tutti, ho un programma che letto un carattere da tastiera deve confrontarlo con un altro, contenuto in una variabile. Se i due sono uguali deve stampare una macro se diversi un'altra. Il programma funziona in parte, cioè le macro funzionano correttamente e le ho pure testate, anche quella legata alla lettura del carattere da tastiera, ma la parte finale dove c'è l'if stampa sempre la macro di "micio" cioè la seconda.
Ecco il sorgente del programma, magari si capisce di più :

codice:
.data   
   
messaggio1:            .string "gatto"     
messaggio2:            .string "micio"     
lettera:                   .string "a"     
carattere:               .string ""        # stringa vuota per prendere carattere da tastiera     

.text 
.globl _start         

# creo la macro per stampare messaggio1     
.macro stampagatto        
 mov                $4, %eax         
 mov                $1, %ebx        
 mov             $messaggio1, %ecx        
 mov                $5, %edx        
 int $0x80     
.endm        

 # creo la macro per stampare messaggio2    
.macro stampamicio         
 mov                $4, %eax         
 mov                $1, %ebx         
 mov             $messaggio2, %ecx         
 mov                $5, %edx         
 int $0x80    
.endm         

# creo la macro per l'inserimento di un carattere da tastiera     
.macro inserisci         
 mov                $3, %eax        
 mov             $0, %ebx         
 mov                $carattere, %ecx         
 mov                $2, %edx         
 int $0x80     
.endm    

 _start:    

 inserisci         
 mov                carattere, %eax     
 mov                lettera, %ebx     
 cmp                 %eax, %ebx     
 je                vero 
     
 stampamicio  
    
 jmp                fine  
    
 vero:     
 stampagatto 
        
 fine:     
 mov                $1, %eax     
 int $0x80
Vi ringrazio in anticipo e attendo vostre risposte