With leading zero removal

OutBufDXasDecimal:
	push eax
	push ebx
	push esi
	sub	esp, 24h
	mov	eax, edx	; value
	mov	ebx, 10		; radix
	mov	esi, esp
	.repeat
		xor	edx, edx
		div	ebx
		mov	[esi], dl
		inc	esi
		.until eax==0
	.repeat
		dec	esi
		mov	al, [esi]
		add	al, '0'
		stosb
		.until esi==esp
	add	esp, 24h
	pop	esi
	pop	ebx
	pop	eax
	retn
;OutBufDXasDecimal	ends

Without leading zero removal

dw2asc proc hnum:dword, strmem:ptr
;from electro_m23 at yahoo.com via Iczelion's Win32 Assembly Forum

	push edi
	mov edi,strmem
	mov ecx,28

l1l1:
	mov eax,hnum
	shr eax,ecx
	and al,0fh
	cmp al,10
	jb noneedforalpha
		add al,'a'-'0'-10
noneedforalpha:
	add al,'0'
	sub ecx,4
	mov [edi],al
	inc edi
	cmp ecx,-4
	jg l1l1
	mov eax,strmem
	pop edi
	ret