;==============================================================| : ; Converts a Dec, Hex, Oct or Bin ascii string to a 32 bit num | : ; INVOKE AsciiBase, addr Conv, addr w1, 10 | : ;==============================================================| ;from yooper at kalamazoo.net via Iczelion's Win32 Assembly Forum AsciiBase PROC Input:DWORD, Output:DWORD, Base: DWORD pushad mov esi, Input mov edi, Output mov dword ptr[edi], 0 INVOKE lstrlen, Input xor ecx, ecx .while (eax) .if byte ptr[esi+ecx] > 60h sub byte ptr[esi+ecx], 57h .elseif byte ptr[esi+ecx] > 40h sub byte ptr[esi+ecx], 37h .else xor byte ptr[esi+ecx], 30h .endif dec eax inc ecx .endw mov ebx, 1 mov esi, Input add esi, ecx dec esi xor edx, edx .while (ecx) mov al, byte ptr[esi] ; Extract byte for conv. and eax, 000000ffh imul eax, ebx add dword ptr[edi], eax ; Accumulate output imul ebx, Base dec esi dec ecx .endw popad RET AsciiBase ENDP