使用RedAsm/MASM将word/dword转换为字符串

;将双字转换为十六进制字符串
;mov ecx, 16 
DWordToStr proc dwValue : DWORD, szBuf :DWORD, dwSize : DWORD
; convert dword to string
	LOCAL szTemp[MAX_PATH] : byte
	
	; save the regs
	push ebx
	push ecx
	push esi
	push edi
		
	; reset the index
	xor ebx, ebx
	
	; load the destions addr
	lea edi, szTemp
			
	; set the de-Diver
	mov ecx, 16
		
	; save dwValue
	mov eax, dwValue
	xor edx, edx              ; edx = 0, eax = dwValue
	
	; if dwValue == 0, no need to deal
	.if eax == 0
		mov byte ptr [edi + ebx], '0'      ; szTemp[0] = '0'	
		inc ebx                            ; number cnt = 0
	.endif
			
	; loop to count each dex number
	.while eax > 0
		div ecx
		
		.if dl < 10
			mov byte ptr [edi + ebx], '0'      ; szTemp[nIndex] = '0'
		.else
			mov byte ptr [edi + ebx], 'A'
			sub dl, 10
		.endif
		add byte ptr [edi + ebx], dl       ; szTemp[nIndex] = '0' + number
		
		inc ebx                            ; ebx += 1
		
		xor edx, edx	
	.endw
		
	lea esi, szTemp
	mov edi, szBuf
	mov ecx, ebx
	xor ebx, ebx
	                                        ; reverse the szTemp
	.while ecx > 0
		mov al, byte ptr[esi + ecx - 1]     
		mov byte ptr[edi + ebx], al
		inc ebx
		dec ecx
	.endw
		
	; restore the regs and return
	pop edi
	pop esi
	pop ecx
	pop ebx
	ret	
DWordToStr endp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值