从没有地址的数组中加载值

Loading a value from an array without its address

我有这个代码:

int arr[] = { 299, 3190, 4892, 256};
 __asm
{
    MOV EAX, DWORD PTR[arr] // EAX will be our number.
    MOV EAX, [EAX]          // Setting EAX to where it's pointing.
}

我需要 EAX 成为数组中的第一个数字,但我不希望它在 2 行代码中(显然,如果有另一种方式,它会更好。) 我不是 ASM 的业余爱好者,但我大多忘记了它,我需要一些茶点。有没有办法在一行代码中做到这一点?谢谢!

编辑: 编译器是 MASM x86,Visual Studio.

中给出的那个

只需删除第二行汇编代码:

int arr[] = { 299, 3190, 4892, 256};
 __asm
{
    MOV EAX, DWORD PTR[arr] // ◄■■■ HERE EAX GETS THE FIRST ARRAY VALUE.
    MOV EAX, [EAX]          // ◄■■■ UNNECESSARY!
}

当您将 DWORD PTR[arr] 移动到 EAX 时,您实际上是将数组的第一个值移动到 EAX。您不需要地址,因为 arr 已经指向它的第一个值。