So basically I'm trying to read a string, increase a counter (in this case, %edx) until I read a \n, and then, going backwards to print it reversed.
This is my code:
.section .data
cadsal:
.asciz "Por favor ingrese su cadena:\n"
leer:
.asciz "%s"
salidafinal:
.asciz "La cadena introducida, invertida es:\n"
imp:
.asciz "%c\n"
.section .bss .comm cadena,50,1
.section .text
.globl _start
_start:
leal cadsal, %eax
pushl %eax
call printf
addl $4, %esp
leal cadena, %eax
pushl %eax
leal leer, %eax
pushl %eax
call scanf
addl $8, %esp
xorl %edx, %edx
Contar:
movb cadena(%edx), %al
incl %edx
cmpb $0, %al
jne Contar
leal salidafinal, %ecx
pushl %ecx
call printf
addl $4, %esp
addl $-2, %edx
Invertir:
movb cadena(%edx), %al
pushl %eax
leal imp, %ebx
pushl %ebx
call printf
addl $8, %esp
decl %edx
cmpl $0, %edx
jge Invertir
movl $1, %eax
int $0x80
I'm using the command -nostartfiles when compiling. It works, but when I run it, segmentation fault appears when entering in "Invertir". I need help to detect what's wrong in this code.
Thanks!