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