Function trimming spaces and tabs inside a string :
.386
.model flat,stdcall
option casemap:none
ExitProcess PROTO :DWORD
printf PROTO C :DWORD,:VARARG
includelib \PellesC\lib\Win\kernel32.lib
includelib \PellesC\lib\Win\user32.lib
includelib msvcrt.lib
.data
lookupTbl db 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
mystr db ' This Is A Test String.',0
message db 'Trimmed string = %s',13,10
db 'Length of the string = %u',0
.data?
buffer db 64 dup(?)
.code
RemoveSpaces PROC uses edi ebx str1:DWORD,buff:DWORD
mov ebx,OFFSET lookupTbl
mov ecx,str1
mov edi,buff
@@:
movzx eax,BYTE PTR [ecx]
movzx edx,BYTE PTR [ebx+eax]
mov BYTE PTR [edi],al
add ecx,1
add edi,edx
test eax,eax
jnz @b
finish:
mov eax,edi
sub eax,1
sub eax,buff
ret
RemoveSpaces ENDP
start:
invoke RemoveSpaces,ADDR mystr,ADDR buffer
invoke printf,ADDR message,ADDR buffer,eax
invoke ExitProcess,0
END start