1

我在 Assembly 中编写了一个程序,它应该反转一个字符串,比如“我看到的是一只老鼠吗?” 但我似乎无法弄清楚错误的含义:“使用方括号来寻址内存,ADDR 或 OFFSET 来获取地址:- 移动句柄,[dest + ebx]。” 知道这意味着什么吗?谢谢!

.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

您不能在一条指令中将数据从一个内存位置移动到另一个内存位置。CPU的地址模式不允许这样做。

而是尝试

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