yo nunca he usado ExitProcess en asm
y en C solo cuando tengo varios hilos.

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
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'
Cita de: Yurix en 16 Junio 2009, 21:57 PM
Hola a todos , esta es mi forma de pasar un texto a mayuscula o minuscula
(add byte ptr ds:[eax], 20h) , no es mejor ni peor solo es la forma que encontre.
Escriban las suyas para comparar
lea eax, string
dec eax
inicio:
inc eax
cmp byte ptr ds:[eax], 0
je salir
cmp byte ptr ds:[eax], 61h
jb inicio ; Salta si es menor a "61" o "a"
cmp byte ptr ds:[eax], 7Ah
ja inicio ; Salta si es mayor que "7a" o "z"
sub byte ptr ds:[eax], 20h ; Resta 20 para hacerlos mayuscula
jmp inicio ; SAlta a el principio
salir:
toUpper:
push ebp
mov ebp,esp
mov esi,[ebp + 8]
begin:
lodsb
cmp al,0
je endx
sub al,0x61
cmp al,0x1A
ja incr
and byte[esi-1],0xDF
incr:
jmp begin
endx:
pop ebp
retn 4
toLower:
push ebp
mov ebp,esp
mov esi,[ebp + 8]
beginL:
lodsb
cmp al,0
je endx
sub al,0x41
cmp al,0x1A
ja incrL
or byte[esi-1],0x20
incrL:
jmp beginL
endxL:
pop ebp
retn 4
strrev:
push ebp
mov ebp,esp
push edi
mov edi,[ebp + 8]
push edi
call strlen
xor ecx,ecx
dec eax
jmp LL1
LL0:
dec eax
inc ecx
cmp ecx,eax
jge LL2
LL1:
mov dl,byte[edi + ecx]
xchg byte[edi + eax],dl
mov byte[edi + ecx],dl
jmp LL0
LL2:
mov eax,[ebp + 8]
pop edi
pop ebp
retn 4
strlen:
push edi
xor ecx,ecx
mov edi, [esp + 8]
not ecx
xor eax,eax
cld
repne scasb
not ecx
pop edi
add eax,ecx
dec eax
retn 4