将vaule从数组移动到寄存器中

时间:2016-10-23 15:14:52

标签: visual-studio assembly masm

我尝试学习汇编程序并编写了一个简单的程序,它定义了一个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写的。

1 个答案:

答案 0 :(得分:0)

eax是32位,所以我必须将指针4个字节移动到下一个元素mov eax, [arr+4]