用另一个字符串替换一个字符串

eearum 发布于 2019-04-15 assembly 最后更新 2019-04-15 22:59 17 浏览

我正在使用MASM,我正在尝试与另一个字符串交换字符串 我想用rull更改test 我正在使用一个字符串数组:This is a test 我正在尝试搜索test并将其替换为rull。 我做了一切,但是,我有两个问题

  1. 我必须反过来编写rullllur
  2. 使用rull打印t,因此替换后的输出将为trull。 我不确定t来自哪里。
有人可以帮忙吗? 这是我迄今为止所做的:
       cld
       lea edi, str2
       mov ecx, lengthof str2
       mov eax, 'test'
       repne scasb
       je found
       jne notfound 
       dec edi
call crlf
found: mov eax, 'llur'
       stosd
       lea edi, str2
L1:    mov eax, [edi]
       call writechar
       add edi, type str2
       loop l1
已邀请:

zomnis

赞同来自:

1- I have to write rull in reverse, llur
这就是MASM在将它们用作直接操作数时如何解释字符串文字。
2- it prints t with rull so the output after replacing it will be trull I am not sure where did the t come
在将AL[EDI]进行比较后,SCASB会增加EDI,因此当REPNE SCASB结束时,您将超过您要查找的角色一个字节。你有一个dec edi来对付这个,但是你用je found跳过那条指令。 您是否也打算寻找'test''t'?您正在将'test'移动到eax(实际上最终将为'tset'),但您只扫描单个字节。