与えられた文字列を反転するプログラムを書いたのですが、結果が一致しなかったようです。
forward と backward を使用して交換するインデックスを示し、最後にヌル文字を末尾に追加します。
結果は
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