1

「私が見たのはネズミでしたか?」のような文字列を逆にするプログラムをアセンブリで作成しました。しかし、エラーの意味を理解できないようです。これが何を意味するか分かりますか?ありがとう!

.Data

hInst   DD      NULL
src     DB      "Was it a rat I saw?         ", 0DH, 0AH
ssize   DD      ($ - src)
dest    DB      "...................         ", 0DH, 0AH
handle  DD      NULL

.Code

start:
    Invoke GetModuleHandle, NULL
    Invoke GetStdHandle, STD_OUTPUT_HANDLE
    Mov [hInst], Eax
    Call Main
    Invoke ExitProcess, Eax

Main:

    Xor Eax, Eax
    Ret

L1:
    Mov Ecx, [ssize]
    Mov Ebx, 0

L2:
    Mov Al, [src + Ebx]
    Mov [dest + Ebx], Al
    Mov handle, [dest + Ebx]
    Invoke WriteConsole, [handle]
    Inc Ebx
    Loop L2
4

1 に答える 1

2

1 つの命令で、あるメモリ位置から別のメモリ位置にデータを移動することはできません。CPU のアドレス モードはそれを許可しません。

代わりに試してください

mov EAX, [dest + EBX]
mov [handle], EAX
于 2012-12-03T17:29:11.923 に答える