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]