mov [reg],reg不工作

我似乎无法弄清楚在x86中。 该程序不断崩溃,我的书说,只要reg在内存中保存一个位置,我就可以使用[reg]插入到内存中:

.data
Counter BYTE 4;
Prompt BYTE "Enter an Integer: ", 0
UserInput DWORD 10 DUP(?)

.code
PromptUser PROC
     mov edx, OFFSET Prompt
     call WriteString
     ret
PromptUser ENDP

ReadUserInput PROC
     mov edx, OFFSET UserInput
     add edx, DWORD PTR Counter
     call ReadInt
     mov [edx], eax //ISSUE IS HERE

即使我在调用ReadInt之后移动movs,它仍然不起作用。


这不会很好地结束:

Counter BYTE 4
add edx, DWORD PTR Counter

你只有一个byte ,但你把它看作是一个dword 。 您最终不仅要添加Counter的值,还要添加Prompt字符串的前3个字节。

最简单的解决方案是使Counter成为dword 。 如果你绝对必须保持它的一个字节,你可以做一些事情:

movzx eax, BYTE PTR Counter
add edx,eax
链接地址: http://www.djcxy.com/p/85893.html

上一篇: mov [reg], reg Not Working

下一篇: Cost of swapping variables through mov, xor