寻址方式一: [立即数]
读取内存的值
mov eax,dword ptr ds:[0x12345678]
向内存中写入数据
mov dword ptr ds:[0x12345678],eax
获取内存的地址
lea eax,dword ptr ds:[0x12345678] //eax=0x12345678
寻址方式二: [reg] reg可以是8个通用寄存器中的任意一个
读取内存的值:
mov ebx,0x12345678
mov eax,dword ptr ds:[ebx] //从地址0x12345678读出4字节数据
向内存中写数据:
mov ebx,0x12345678
mov dword ptr ds:[edx],0x11223344 //向地址0x12345678写入数据0x11223344
获取内存的地址:
lea eax,dowrd ptr ds:[ebx] //eax==ebx;
寻址方式三: [reg+立即数]
读取内存的值:
mov ebx,0x12345678
mov eax,dword ptr ds:[ebx+4]
向内存中写入数据:
mov edx,0x12345678
mov dowrd ptr ds:[edx]
获取内存的地址:
lea eax,dowrd ptr ds:[ebx+4] //eax==ebx+4
寻址方式四: [ reg+reg * {1, 2, 4, 8} ]
读取内存的值:
mov eax,0x12345678
mov ecx,2
mov edx,dword ptr ds:[eax+ecx*4]
向内存中写入数据:
mov eax,0x12345678
mov ecx,2
mov dword ptr ds:[eax+ecx*4],0x11223344
获取内存的地址:
lea eax,dword ptr ds:[eax+ecx*4]
寻址方式五: [ reg+reg * {1, 2, 4, 8} +立即数]
读取内存的值:
mov eax,0x12345678
mov ecx,2
mov edx,dword ptr ds:[eax+ecx*4+4]
向内存中写入数据:
mov eax,0x12345678
mov ecx,2
mov dword ptr ds:[eax+ecx*4+4],0x11223344
获取内存的地址:
lea eax,dword ptr ds:[eax+ecx*4+4]