0

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

31 32 33 34 35

好像我不接受用户的输入并对其进行硬编码一样mystring byte 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
4

1 回答 1

1

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

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

于 2013-10-07T06:10:51.030 回答