⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h2dw.asm

📁 一个十六进制编辑器源代码,cool!
💻 ASM
字号:
H2DW PROTO :DWORD 
h2dw equ <H2DW>
.code
H2DW proc uses ecx edx  esi edi lpszHexString:DWORD
;---------------------------------------------
;作用:将十六进制字符'"串转换为十进制数字
;传入值:字符串的地址
;反回值:转换后的;"数值,在eax里
;如果字符中包含了非十六进制字符串,返回值为0(h,H结尾则忽略)
;------------------------------------------------
	mov esi,lpszHexString
	push esi
	xor ecx,ecx
	;求出字符串的长度
@@:
	lodsb
	inc ecx
	cmp al,0
	jnz @B
;忽略最后的h或H
	cmp BYTE ptr [esi-2],'h'
	je @1
	cmp BYTE ptr [esi-2],'H'
	jne @2
@1:
	mov BYTE ptr [esi-2],0
	dec ecx
@2:
	dec ecx;减去字符串中0的长度
	dec ecx;计算时是以0为下界的
	lea ecx,[ecx*4]	;最高项,如四位数最高16^3=2^(3*4) [^表示乘方]
	xor edx,edx


	pop esi
_nextchar_:
	lodsb
	cmp al,'a'
	jb @F
	cmp al,'f'
	ja _error_
	sub al,'a'-10
	jmp _calc_

	@@:
	cmp al,'A'
	jb @F
	cmp al,'F'
	ja _error_
	sub al,'A'-10
	jmp _calc_
	@@:
	cmp al,'0'
	jb _error_
	cmp al,'9'
	ja _error_
	sub al,'0'
_calc_:
	movzx eax,al
	shl eax,cl
	add edx,eax
	sub cl,4
	jge _nextchar_
	mov eax,edx
	jmp _ret_;直接用ret会导致多出几行pop
_error_:
	xor eax,eax
_ret_:
	ret
H2DW endp


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -