x86 MASM程序集 - 保存字符串的空变量

时间:2015-03-12 06:22:24

标签: assembly x86 masm

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

tempStr BYTE 30 DUP(?)

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

输入1为tempStr:57894

输出1:57894

输入2为tempStr:137

输出2:13794

mov edx, OFFSET tempStr
mov ecx, (SIZEOF tempStr) - 1
call ReadString
etc

是否有一种简单的方法可以解决此问题,例如清除字符串变量的所有内容?

编辑:这已经解决了。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

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

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