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

时间:2013-11-20 03:37:35

标签: assembly x86 masm

我正在使用MASM而我正在尝试与其他人交换字符串 我想用test

更改rull

我正在使用字符串数组:This is a test 我正在尝试搜索test并将其替换为rull

我做了一切,但是,我有两个问题

  1. 我必须反向写rullllur
  2. 使用t打印rull,因此替换后的输出将为trull。 我不确定t来自哪里。
  3. 有人可以帮忙吗?

    这是我到目前为止所做的:

           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
    

1 个答案:

答案 0 :(得分:0)

  

1-我必须反向写rull,llur

这就是MASM在将它们用作直接操作数时如何解释字符串文字。

  

2-它用rull打印t所以更换后的输出将是trull我不知道t来自哪里

在将SCASBEDI进行比较后,

AL会增加[EDI],所以当REPNE SCASB完成后,您将超过您正在寻找的角色一个字节对于。您已经有dec edi来对付此问题,但您已使用je found跳过该指示。

您是否也打算寻找'test''t'?您将'test'移动到eax(最终会以'tset'移动),但您只扫描一个字节。