PDA

Visualizza la versione completa : [ASSEMBLY 8086] Problema con if


marco279
04-01-2013, 18:30
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ù :




.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 :)

pistilloi
05-01-2013, 00:19
Anche quando inserisci il carattere "a", stampa "micio"?

oregon
05-01-2013, 01:24
Inserisci un breakpoint nella riga

cmp %eax, %ebx

e dicci cosa contengono i due registri eax ebx

marco279
05-01-2013, 19:28
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.

Loading