Oppure

Loading
31/05/09 14:29
luca94
Salve a tutti,
sto imparando l' assembler AT&T ma ho un problema con questo programma:
.data
str:
      .string "uguale\n"
      lenstr = .-str

.text
     .global main

main:
     movl ,%eax
     cmpl ,%eax
     je m

m:
        movl ,%eax
        movl ,%ebx
        movl $str,%ecx
        movl $lenstr,%edx
        int Salve a tutti,

sto imparando l' assembler AT&T ma ho un problema con questo programma:
.data
str:
      .string "uguale\n"
      lenstr = .-str

.text
     .global main

main:
     movl ,%eax
     cmpl ,%eax
     je m

m:
        movl ,%eax
        movl ,%ebx
        movl $str,%ecx
        movl $lenstr,%edx
        int {parsed_message}x80

Il codice inserisce 1 nel registro ax, confronta 1 con ax (che è uguale a 1) dopodicchè il comando "je" verifica se "1" è uguale ad "ax" e in caso affermativo salta all' etichetta "m" dove scrive "uguale". Il problema è che se modifico il codice mettendo 2 al posto di 1 nel registro ax..cioè così:
.data
str:
      .string "uguale\n"
      lenstr = .-str

.text
     .global main

main:
     movl ,%eax
     cmpl ,%eax
     je m

m:
        movl ,%eax
        movl ,%ebx
        movl $str,%ecx
        movl $lenstr,%edx
        int {parsed_message}x80


quando lo eseguo mi dice sempre "uguale" cioè salta all etichetta "m" anche se 1 è diverso da 2...come mai???
Grazie!!!
x80

Il codice inserisce 1 nel registro ax, confronta 1 con ax (che è uguale a 1) dopodicchè il comando "je" verifica se "1" è uguale ad "ax" e in caso affermativo salta all' etichetta "m" dove scrive "uguale". Il problema è che se modifico il codice mettendo 2 al posto di 1 nel registro ax..cioè così:
.data
str:
      .string "uguale\n"
      lenstr = .-str

.text
     .global main

main:
     movl ,%eax
     cmpl ,%eax
     je m

m:
        movl ,%eax
        movl ,%ebx
        movl $str,%ecx
        movl $lenstr,%edx
        int Salve a tutti,

sto imparando l' assembler AT&T ma ho un problema con questo programma:
.data
str:
      .string "uguale\n"
      lenstr = .-str

.text
     .global main

main:
     movl ,%eax
     cmpl ,%eax
     je m

m:
        movl ,%eax
        movl ,%ebx
        movl $str,%ecx
        movl $lenstr,%edx
        int {parsed_message}x80

Il codice inserisce 1 nel registro ax, confronta 1 con ax (che è uguale a 1) dopodicchè il comando "je" verifica se "1" è uguale ad "ax" e in caso affermativo salta all' etichetta "m" dove scrive "uguale". Il problema è che se modifico il codice mettendo 2 al posto di 1 nel registro ax..cioè così:
.data
str:
      .string "uguale\n"
      lenstr = .-str

.text
     .global main

main:
     movl ,%eax
     cmpl ,%eax
     je m

m:
        movl ,%eax
        movl ,%ebx
        movl $str,%ecx
        movl $lenstr,%edx
        int {parsed_message}x80


quando lo eseguo mi dice sempre "uguale" cioè salta all etichetta "m" anche se 1 è diverso da 2...come mai???
Grazie!!!
x80

quando lo eseguo mi dice sempre "uguale" cioè salta all etichetta "m" anche se 1 è diverso da 2...come mai???
Grazie!!!
Ultima modifica effettuata da luca94 31/05/09 14:30
aaa
31/05/09 15:05
theprogrammer
Non e' quello il problema ... non salta all'etichetta m ma se e' diverso non sa che fare e continua con il programma ovvero con l'etichetta m ...

aaa
01/06/09 6:20
luca94
E che codice devo mettere in modo che controlli anche la diversità tra i numeri?:hail:
aaa
01/06/09 8:07
theprogrammer
Mi sembra logico ...

jne altraetichetta

al posto di

je m
aaa