Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [ASSEMBLY 8086] Problema con if

    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

  2. #2
    Anche quando inserisci il carattere "a", stampa "micio"?
    Dante

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Inserisci un breakpoint nella riga

    cmp %eax, %ebx

    e dicci cosa contengono i due registri eax ebx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Stampa sempre la seconda macro micio..
    Oregon il prima possibile provo e ti faccio sapere!
    Grazie a tutti e due per l'aiuto e scusate per il ritardo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.