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

来源:互联网 发布:linux系统工程师 编辑:程序博客网 时间:2024/05/06 15:46
;将双字转换为十六进制字符串
;mov ecx, 16 
DWordToStr proc dwValue : DWORD, szBuf :DWORD, dwSize : DWORD; convert dword to stringLOCAL szTemp[MAX_PATH] : byte; save the regspush ebxpush ecxpush esipush edi; reset the indexxor ebx, ebx; load the destions addrlea edi, szTemp; set the de-Divermov ecx, 16; save dwValuemov eax, dwValuexor edx, edx              ; edx = 0, eax = dwValue; if dwValue == 0, no need to deal.if eax == 0mov byte ptr [edi + ebx], '0'      ; szTemp[0] = '0'inc ebx                            ; number cnt = 0.endif; loop to count each dex number.while eax > 0div ecx.if dl < 10mov byte ptr [edi + ebx], '0'      ; szTemp[nIndex] = '0'.elsemov byte ptr [edi + ebx], 'A'sub dl, 10.endifadd byte ptr [edi + ebx], dl       ; szTemp[nIndex] = '0' + numberinc ebx                            ; ebx += 1xor edx, edx.endwlea esi, szTempmov edi, szBufmov ecx, ebxxor ebx, ebx                                        ; reverse the szTemp.while ecx > 0mov al, byte ptr[esi + ecx - 1]     mov byte ptr[edi + ebx], alinc ebxdec ecx.endw; restore the regs and returnpop edipop esipop ecxpop ebxretDWordToStr endp