到目前为止我已经得到了这个:
mov esi,0
mov edi,LENGTHOF source - 2
mov ecx,SIZEOF source
L1:;iterate a loop
mov al,source[esi]
mov target[edi],al
inc esi
dec edi
loop L1
从下一个数据
source BYTE "This is the source string",0
BYTE 4 DUP('%')
target BYTE SIZEOF source DUP('#')
BYTE 4 DUP('^')
我得到了以下输出:
gnirts ecruos eht si sihT#^^^^
目标字符串的末尾不应该有这些字符。我想我需要找到需要为零的字节并设置它。我该怎么做呢?
1条答案
按热度按时间balp4ylt1#
之前
之后
mov ecx,SIZEOF source
,循环的迭代次数过多!请查看第4个“%”是如何被0覆盖的。LENGTHOF source
计算字符和终止零。LENGTHOF source - 1
将指向您需要在 target 中写入新终止零的偏移量。这是循环的另一个版本,它避免了使用慢的
loop
指令: