Metropoli BBS
VIEWER: ultoa.asm MODE: TEXT (ASCII)
;****************************************************************************
; Filename: ULTOA.ASM
;   Author: Peter Andersson
;  Version: 0.0
;  Created: 1995.02.09
;  Updated: -
;****************************************************************************
; Copyright Peter Andersson, 1994-1995.
; All rights reserved.
;****************************************************************************
; Function: PSZ @ultoa(LONG value,PSZ string,LONG radix);
;    Input: Eax, value - value to convert to ASCII
;           Edx, string - string pointer
;           Ecx, radix - radix to convert too, 2 to 36
;   Output: string pointer
;  Comment: Converts a unsigned value to a string. The radix must be between
;           2 and 36 or ultoa will return NULL. The string output can be
;           up to 33 characters (including the '\0').
;****************************************************************************

        Include STDDEF.INC

        Codeseg

Extrn NumberConvert:Byte

Proc    ultoa   ,3
                Cmp     Ecx,2
                Jb      @@Exit
                Cmp     Ecx,36
                Ja      @@Exit
                TestZ   Edx
                Jz      @@Exit
                Push    Ebx
                Sub     Esp,36
                Push    Edx
                Lea     Ebx,[Esp+4+35]
                Mov     [Byte Ebx],0
        Align   4
@@Loop:         Clear   Edx
                Div     Ecx
                Dec     Ebx
                Mov     Dl,[NumberConvert+Edx]
                TestZ   Eax
                Mov     [Ebx],Dl
                Jnz     @@Loop
                Mov     Edx,Ebx
                Mov     Eax,[Esp]
                Call    @stpcpy
                Mov     Edx,Eax
                Pop     Eax,+36,Ebx
                Ret
        Align   4
@@Exit:         Clear   Eax
                Ret
Endp

        End

[ RETURN TO DIRECTORY ]