从没有地址的数组中加载值
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
已经指向它的第一个值。
我有这个代码:
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
已经指向它的第一个值。