我编写了一个程序来反转它给出的字符串,但看起来结果并不匹配。排除反向字符串故障
我使用前向和后向来指示要交换的索引,并最后在尾部添加空字符 。
结果应该是
67 6E 69 72 74 73 20 65 63 72 75 6F 73 20 65 68 74 20 73 69 20 73 69 68 54 00
,但我的结果是
00 67 6E 69 72 74 73 20 65 63 72 75 6F 73 20 65 68 74 20 73 69 20 73 69 68 00
它似乎有些不对劲,钻我无法找出是错误。
你能帮我找出哪里可能出错吗?
Thx提前。
INCLUDE Irvine32.inc
.data
source BYTE "This is the source string",0;26
target BYTE SIZEOF source DUP('#')
strl BYTE 0
foward DWORD 0
backward DWORD 0
.code
main PROC
mov strl, LENGTHOF source;26
dec strl; last char is 25. 26 is null
movzx ecx, strl;count = 25
mov foward, 0
movzx eax, strl
mov backward, eax
L1:
mov esi, backward
mov al,source[esi]
dec backward
mov esi, foward
mov target[esi], al
inc foward
loop L1
movzx esi, strl
mov al,source[esi]
mov target[esi], al
mov esi,OFFSET target ; offset of variable
mov ebx,1 ; byte format
mov ecx,SIZEOF target ; counter
call DumpMem
main ENDP
END main
你的结果只是转移到了一个位置,它看起来像一个非常小的错误,如果你正确调试你应该能够很容易地捕捉到它。 – Andrey 2013-03-20 21:04:53