32位通用寄存器
32位:EAX EBX ECX EDX ESP EBP ESI EDI 每个寄存器的最大宽度是32位
16位:AX BX CX DX SP BP SI DI
8位 :AL BL CL DL AH BH CH DH
想寄存器存一个数字可以用mov指令
mov eax,1 就是把1存到eax寄存器中
程序内存
一个32位的程序最大存储空间是4G
就是从0~0XFFFF的取值范围
每个值都是一个内存地址都对应一块内存
没快内存就是8位
MOV ECX,DWORD PTR DS:[0xC1FAF8]
把内存0xC1FAF8上的数据复制到ecx寄存器上
MOV DWORD PTR DS:[0xC1FAF8],ECX
把ecx上的数据复制到0xC1FAF8
汇编地址编号的物种形式
第一种:
MOV DWORD PTR DS:[0xC1FAF8],124323
第二种:【reg】
ecx=C1FAF8
MOV DWORD PTR DS:[ecx],1234233
第三种:【reg+立即数】
ecx=C1FAF4
C1FAF8=1233213
MOV eax,dword ptr ds:[ecx+4]
第四种:[reg+reg*{1,2,4,8}]
读取值
mov eax,C1FAF4
mov ecx,2
mov edx,dword ptr ds:[eax+ecx*4]
写入值
mov eax,C1FAF4
mov ecx,2
mov dword ptr ds:[eax+ecx*4],12345678
第五种:【reg+reg*{1,2,4,8}+立即数】
读取值
mov eax,C1FAF4
mov ecx,2
mov edx,dword ptr ds:[eax+ecx*4+4]
写入值
mov eax,C1FAF4
mov ecx,2
mov dword ptr ds:[eax+ecx*4+4],12345678