我正在寻找一个字符串,直到找到一个特定的字符,然后在找到该字符后打印其余的字符串。基本上,如果我的字符串是“ the quick brown fox”并且我搜索“ k”,我想打印出“ brown fox”。我已经准备好扫描所有代码,但是我很困惑如何将指针前进到定界符之后的字节并从那里打印。现在,它将所有内容打印到分隔符上,包括字符本身和随后的一些垃圾字符。
INVOKE Str_length, strVar
mov edi, strVar
mov al, find
mov ecx, LENGTHOF line
cld
repne scasb
jnz NOHIT
HIT:
cld
rep movsb
mov BYTE PTR[edi], 0
mov edx, OFFSET line
call WriteString
call Crlf
ret
很明显,我的输出代码是错误的,我只是不知道从这里出发。
要弄清楚,以后发给任何可能遇到相同问题的人!极其简单的解决方案:
cld
mov edx, edi
call WriteString
call Crlf
ret
因为scasb会增加edi直到打定界符,所以您要做的就是打印edi本身。