r 通用寄存器
m 代表内存
imm 代表立即数
r8 代表8位通用寄存器
m8 代表8位内存
imm8 代表8位立即数
mov指令练习
MOV 的语法:
mov 目标操作数,源操作数
作用:拷贝源操作数到目标操作数
1、源操作数可以是立即数、通用寄存器、段寄存器、或者内存单元.
2、目标操作数可以是通用寄存器、段寄存器或者内存单元:
3、操作数的宽度必须一样.
4、源操作数和目标操作数不能同时为内存单元,
mov r/m 将内存存入通用寄存器
8位
mov al,byte ptr ds:[0x0019ff78]
mov ah,byte ptr ds:[0x0019ff7c]
16位
mov ax,word ptr ds:[0x19ff8c]
mov cx,word ptr ds:[0x19ff80]
32位
mov eax,dword ptr ds:[0x0019ff78]
mov ecx,dword ptr ds:[0x0019ff74]mov r/ r 将通用寄存器,存入寄存器
8位
mov ah,cl
mov al,cl
16位
mov ax,cx
mov ax,dx
32位
mov eax,ecx
mov eax,edxmov r/imm 将立即数存入到通用寄存器
8位
mov al,0xFF
mov cl,0xFF
16位
mov ax,0xDDDD
mov cx,0xDDDD
32位
mov eax,0xAAAAAAAA
mov ecx,0xAAAAAAAAmov r/m8 将通用寄存器存入内存
8位
mov byte ptr ds:[0x19ff74],al
mov byte ptr ds:[0x19ff72],ah
16位
mov word ptr ds:[0x19ff74],ax
mov word ptr ds:[0x19ff72],cx
32位
mov dword ptr ds:[0x19ff74],eax
mov dword ptr ds:[0x19ff72],ecx
add 练习 sub同
add 练习
add r/m 将内存和通用寄存器相加存入通用寄存器
8位
add al,byte ptr ds:[0x19FF78]
add ah,byte ptr ds:[0x19FF80]
16位
add ax,word ptr ds:[0x19ff74]
add cx,word ptr ds:[0x19ff74]
32位
add eax,dword ptr ds:[0x19ff74]
add ecx,dword ptr ds:[0x19ff74]add r/ r 将通用寄存器相加,存入寄存器
8位
add al,cl
add al,dl
16位
add ax,cx
add ax,dx
32位
add eax,ecx
add eax,edxadd r/imm 将立即数与通用寄存器相加存入寄存器
8位
add al,0x13
add ah,0x56
16位
add ax,0x1321
add cx,0x1123
32位
add eax,0x21235467
add eax,0x17894561add m/r 将通用寄存器与内存相加,存入内存8位
add byte ptr ds:[0x0019ff7c],al
add byte ptr ds:[0x0019ff80],ah
16位
add word ptr ds:[0x19FF20],cx
add word ptr ds:[0x19FFA0],ax
32位
add dword ptr ds:[0x19FFA0],eax
add dword ptr ds:[0x19FFA0],ecxadd m/imm 内存与立即数相加存入内存
8位
add byte ptr ds:[0x19ff78],0x01
add byte ptr ds:[0x19FFA4],0x22
16位
add word ptr ds:[0x19FFA0],0xFFFF
add word ptr ds:[0x19FFA0],0xFF13
32位
add dword ptr ds:[0x19FFA0],0x21231234
add dword ptr ds:[0x19FFA0],0x12345678add m,r 内存与寄存器相加存入内存
8位
add byte ptr ds:[0x19FFA4],al
add byte ptr ds:[0x19FF74],al
16位
add word ptr ds:[0x19FFA0],ax
add word ptr ds:[0x19FFA0],cx
32位
add dword ptr ds:[0x19FFA0],eax
add dword ptr ds:[0x19FFA0],ecxand指令 同为1则1 其他都为0
and eax,eax 与
and eax,0x11111111
and ax,cx
and al,0x11
and dword ptr ds:[0x19FF90],eax
and dword ptr ds:[0x19FF07C],0x11111111
or指令 有一个为1则为1
or eax,eax
or ax,cx
or eax,0x11111111
or al,0x11
or ax,0x1111
or dword ptr ds:[0x19FF8C],0x11111111
or dword ptr ds:[0x19FF84],eax
or word ptr ds:[0x19FF88],ax
or word ptr ds:[0x19FF88],0x1111
xor指令 不一样的为1
xor eax,ecx
xor ebx,0x11111111
xor ax,0x1111
xor dword ptr ds:[0x19FF84],0x11111111
xor word ptr ds:[0x19FF84],ax
xor byte ptr ds:[0x19FF8C],al
not 取反,0为1,1为0
not eax
not ax
not al
not ah
not byte ptr ds:[0x19FF8C]
not word ptr ds:[0x19FF84]
not dword ptr ds:[0x19FF74]
lea 获取地址编号
lea eax,dword ptr ds:[0x19FF8C]
mov dword ptr ds:[eax],0x11111111
寻址方式练习
立即数寻址
mov eax,dword ptr ds:[0x19FF74]
mov dword ptr ds:[0x19FF74],0x12345678
lea eax,dword ptr ds:[0x19FF74]寄存器寻址
mov eax,0x19FF74
mov ecx,dword ptr ds:[eax]
lea edx,dword ptr ds:[eax]寄存器加立即数寻址
mov eax,0x19FF78
mov ecx,dword ptr ds:[eax+0x2]
lea edx,dword ptr ds:[eax+4]寄存器+寄存器*1248 寻址
mov eax,0x19FF7C
mov ecx,0x2
mov edx,dword ptr ds:[eax+ecx*2]
lea ebx,dword ptr ds:[eax+ecx*2]寄存器+寄存器*1248+立即数寻址
mov eax,0x19FF74
mov ecx,0x3
mov edx,dword ptr ds:[eax+ecx*2+0x2]
lea ebx,dword ptr ds:[eax+ecx*2+2]