您的位置:首页 > 其它

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

2008-07-27 23:12 246 查看
;将双字转换为十六进制字符串
;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[code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐