使用方括号解决内存错误程序集



我在汇编中制作了一个程序,它应该反转一个字符串,比如"这是我看到的老鼠吗?"但我似乎无法弄清楚错误的含义:"使用方括号来寻址内存,ADDR 或 OFFSET 来获取地址:- Mov 句柄,[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

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

而是尝试

mov EAX, [dest + EBX]
mov [handle], EAX

相关内容

最新更新