me encontre con un problemita, cuando intente ver el codigo en accion mediante el olly, me di cuenta de algo
lea ebx,string
dec ebx
en un principio ebx apunta al primer caracter de la cadena y al decrementarlo apunta a una region de memoria que no es la cadena
y cuando hagas
mov byte ptr ds:[ebx], cl
salta un error y cierra el programa lo correcto es decrementar eax, porque los limites de un array es size -1
aqui esta el testeo y la salida es emetreivni
format pe console
entry main
include 'c:\fasm\include\win32ax.inc'
.data
texto db 'invierteme',0
.code
main:
xor eax,eax
add eax,10
mov ebx, texto
add eax,ebx
dec eax
asd:
mov ch, byte[ebx]
mov cl, byte[eax]
mov byte[ebx], cl
mov byte[eax], ch
inc ebx
dec eax
cmp ebx,eax
jbe asd
push texto
call [puts]
add esp,4
ret
section '.idata' import data readable
library msvc,'msvcrt.dll'
import msvc,puts,'puts'