9.asm-汇编mov,lea+[]寻址 小结

masm语言就是坑爹的,这地方经常错,所以加个判断

1.lea

1.1.操作数为寄存器: 取寄存器的值赋值过去

	__asm
	{
		pushad
		mov eax, 1
		lea ebx, [eax]// eax=ebx=1
		//lea ebx, eax//这句会报invalid instruction operands
		popad
	}


1.2.操作数为变量:取变量的地址赋值过去

	int var = 1;
	__asm
	{
		pushad
		lea eax, var
		lea ebx, [var]
		popad
	}

如下图:

9.asm-汇编mov,lea+[]寻址 小结_第1张图片



2.mov

2.1.操作数为寄存器: 这个是最正常的,[]表 示取地址对 应的内容

	__asm
	{
		pushad
		mov eax,1
		mov ebx,eax//eax的值传给ebx
		mov ebx,[eax]//这句会挂掉,因为它是取0x001地址的内容传给ebx
		popad
	}


2.2.操作数为变量:都取 变量 的值赋过去

	__asm
	{
		pushad
		mov eax, var// eax=1
		mov ebx, [var]//ebx=1
		popad
	}




你可能感兴趣的:(9.asm-汇编mov,lea+[]寻址 小结)