我尝试学习汇编程序并编写了一个简单的程序,它定义了一个arr
三个相等的值,我想将第二个vaule复制到reister eax 。
当我使用语句mov eax, [arr]
时,代码工作并编译第一个值,它在寄存器中给出结果 Ah 。但是当我尝试将数组的第二个值复制到寄存器 eax 时,它不起作用:
mov eax, [arr+1]
,它的值为 0A000000h 。
函数DumpRegs
只显示命令promt中的寄存器值,我没有源代码。 (但它来自一个很好的来源,来自书籍网站)。
代码:
ExitProcess PROTO,dwExitCode:DWORD
DumpRegs PROTO
.data
arr DWORD 10,10,10
.code
main PROC
mov eax, [arr+1];
call DumpRegs
INVOKE ExitProcess,0
main ENDP
END main
它是在视觉工作室中用masm写的。
答案 0 :(得分:0)
eax是32位,所以我必须将指针4个字节移动到下一个元素mov eax, [arr+4]