Assembly MASM-程序集中具有DumpMem的意外输出

Assembly MASM-程序集中具有DumpMem的意外输出,assembly,masm,irvine32,Assembly,Masm,Irvine32,我已经用MASM编写了一个简单的小汇编程序,但是我得到的输出是意外的,并且前缀是3。就像我在显示时输入的12345一样,它将输出显示为 3132333435 其中,好像我没有从用户那里获取输入,并对其进行硬编码,如mystring字节1,2,3,4,6——它显示输出,如01 02 03 04 06 帮助我理解这种行为-提前感谢 以下是程序代码: INCLUDE Irvine32.inc .data disp byte "Enter String : ",0 mystring byte 5 du

我已经用MASM编写了一个简单的小汇编程序,但是我得到的输出是意外的,并且前缀是3。就像我在显示时输入的
12345
一样,它将输出显示为

3132333435

其中,好像我没有从用户那里获取输入,并对其进行硬编码,如
mystring字节1,2,3,4,6
——它显示输出,如
01 02 03 04 06

帮助我理解这种行为-提前感谢

以下是程序代码:

INCLUDE Irvine32.inc

.data
disp byte "Enter String : ",0
mystring byte 5 dup(?)

.code 
main PROC
mov edx,offset disp
call writestring
mov edx, offset mystring
mov ecx, 50
call ReadString
mov esi, offset mystring
mov ecx, lengthof mystring
mov ebx, TYPE mystring
call dumpmem

exit
main ENDP
END main

您正在转储字符串中字符的ASCII码的十六进制值,因为这是它们存储在内存中的方式。31十六进制=ASCII“0”,32十六进制=ASCII“1”等


请注意,要将ASCII数字(如“0”)转换为相应的字节值,需要减去0x30。相反,您可以通过添加0x30将存储为字节的十进制数字转换为其等效的ASCII字符代码。

哦,我的错-它没有单击我。谢谢:)试着输入一个像“Hello world”这样的非数字字符串,只是为了好玩。是的,我试过了。事实上,我对汇编还不熟悉:有更多的要求,因为我是新来的,如果你能给我一些学习汇编的建议,我会很高兴的。请各位注意,只要找到好的示例源代码并学习它,直到你们理解它是如何工作的。即使在使用HLL时,阅读和理解asm也是一项有用的技能。