Ho modificato la funzione asm, ora non mi dà più quell'errore però nel confronto tra il valore 1 che si trova in %ecx e (cifra) mi riconosce quest'ultima sempre maggiore di 1 saltando così all'etichetta "err"...help me...
codice:.data errore: .string "Numero non in base 2!\n" out: .string "Il valore richiesto è (%d)_10\n" n2: .int 0 cifra: .int 0 n10: .int 0 peso: .int 1 .text .globl converti converti: pushl %ebp movl %esp, %ebp movl 8(%ebp), %ebx movl %ebx, (n2) movl $10, %ebx movl $1, %ecx inizio: xorl %edx, %edx addl (n2), %eax divl %ebx movl %edx, (cifra) cmpl %ecx, (cifra) jg err xorl %eax, %eax movl (cifra), %eax mull (peso) addl %eax, (n10) xorl %eax, %eax movl $2, %eax mull (peso) addl %eax, (peso) xorl %eax, %eax movl (n2), %eax divl %ebx movl %eax, (n2) xorl %eax, %eax cmpl (n2), %eax jl inizio jg risultato err: pushl $errore call printf addl $4, %esp jmp fine risultato: pushl (n10) pushl $out call printf addl $8, %esp popl %ebp ret fine: popl %ebp ret

Rispondi quotando