汇编语言:编两个通用过程完成十六进制数转换成ASCII码并将ASCII码字符...
发布网友
发布时间:2024-09-06 18:16
我来回答
共2个回答
热心网友
时间:2024-10-25 05:06
CsnCharToData Proc lpszChar:DWORD,lpBuff:DOWRD,sizechar:DWORD
pushad
mov edi,lpBuff
mov esi,lpszChar
mov ecx,sizechar
_CsnCTD:
xor eax,eax
mov al,Byte ptr [esi]
shl ax,4
shr al,4
_CsnTow:
cmp al,9h
ja _d9
add al,30h
jmp _end
_d9:
add al,37h
_end:
cmp ah,0fh
ja _CsnOv
xchg ah,al
jmp _CsnTow
_CsnOv:
mov Word ptr [edi],ax
add edi,2
inc esi
loop _CsnCTD
popad
ret
CsnCharToData Endp
lpszChar:指向需要转换的数据地址
lpBuff:转换后存放的内存地址
sizeChar:需要转换的长度
无返回值/。
注意:代码未做边界处理及参数判断,使用时请为lpBuff提供2xSizeChar+1的长度空间, 若使用不当则能造成数据覆盖或溢出.
lpBuff的值勿为堆栈地址,否则溢出.
此代码仅为学习使用.
例;
Byte ptr [Esi]="A"(41h)
则 Word ptr [Edi]="41"(34d 31d)
显示方式自己调用,这是保护模式下的代码 如果要用于实模式则自己修改
热心网友
时间:2024-10-25 05:13
十六进制数转换成十进制显示。
程序如下: