下面是我声明为保存字符串的变量的内容。

tempStr BYTE 30 DUP(?)

我会存储一串数字,它会正常输出。但是如果我用更短的字符串再次存储它,它将包含我第一次存储它时包含的部分内容。一个例子如下:

tempStr 的输入 1:57894

输出 1:57894

tempStr 的输入 2:137

输出 2:13794
mov edx, OFFSET tempStr
mov ecx, (SIZEOF tempStr) - 1
call ReadString
etc

有没有一种简单的方法来解决这个问题,比如清除字符串变量的所有内容?

编辑:这已解决。谢谢您的帮助!

最佳答案

如果 ReadString 没有以零终止字符串,则必须先用零清除它,例如

cld             ; clear direction flag for REP = count up
lea edi, tempStr
mov ecx, (SIZEOF tempStr)
mov al, 0
rep stosb       ; repeats a put-byte of AL ECX times starting from address EDI

关于assembly - x86 MASM 程序集 - 包含字符串的空变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29003106/

10-11 18:33