汇编语言:编两个通用过程完成十六进制数转换成ASCII码并将ASCII码字符显示(哪位高人给点指导,鞠躬~)

微机原理中的课后作业

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)

显示方式自己调用,这是保护模式下的代码 如果要用于实模式则自己修改
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-08-19

十六进制数转换成十进制显示。

程序如下:

相似回答