我有这段代码:
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中提供的。
答案 0 :(得分:1)
只需删除第二行汇编代码:
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
已经指向其第一个值。