汇编语言之寻址方式

寻址方式一: [立即数]

读取内存的值
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]


你可能感兴趣的:(汇编语言,windows)