将逗号右边的值赋给逗号左边
//r:通用寄存器,r8表示8位通用寄存器
//m:内存,m8表示8位内存
//imm:立即数,imm8表示8位立即数
MOV r/m8,r8 //将逗号右边 8位通用寄存器 赋值给逗号左边的 8位通用寄存器 或 内存
MOV r/m16,r16
MOV r/m32,r32
MOV r8,m/imm8 //将逗号右边 8位内存 或 立即数 赋值给逗号左边的 8位通用寄存器
MOV r16,m/imm16
MOV r32,m/imm32
注:指令用法可在Inter白皮书查阅
将逗号两边的值相加后,赋值给逗号左边
将逗号两边的值相减后,赋值给逗号左边
与运算
或运算
异或运算
//r:通用寄存器,r8表示8位通用寄存器
//m:内存,m8表示8位内存
//imm:立即数,imm8表示8位立即数
XOR r/m8,r/imm8 //将逗号右边 8位通用寄存器或立即数 和逗号左边的 8位通用寄存器或内存 做异或运算
XOR r/m16,r/imm16
XOR r/m32,r/imm32
XOR r/m16,imm8 //将逗号右边 8位立即数 和逗号左边的 16位通用寄存器或内存 做异或运算
XOR r/m32,imm8
XOR r8,r/m8 //将逗号右边 8位通用寄存器或内存 和逗号左边的 8位通用寄存器 做异或运算
XOR r16,r/m16
XOR r32,r/m32
非运算
NOT r/m8
NOT r/m16
NOT r/m32
将数据从内存移动到内存
//BYTE = unsigned char 1字节
//WORD = unsigned short 2字节
//DWORD = unsigned long 4字节
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] //缩写 MOVSB
MOVS WORD PTR ES:[EDI],BYTE PTR DS:[ESI] //缩写 MOVSW
MOVS DWORD PTR ES:[EDI],BYTE PTR DS:[ESI] //缩写 MOVSD
//例:
MOV EDI,12FFD8
MOV ESI,12FFD0
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
注:EFL(标志寄存器)以二进制表示时的编号第10位(DF位):
为0时:MOVS每执行一次,EDI,ESI各 + {1,2,4}
为1时:MOVS每执行一次,EDI,ESI各 - {1,2,4}
将 AL/ AX/ EAX 的值储存到 [EDI] 指定的内存单元
STOS BYTE PTR ES:[EDI] //缩写 STOSB
STOS WORD PTR ES:[EDI] //缩写 STOSW
STOS DWORD PTR ES:[EDI] //缩写 STOSD
注:EFL(标志寄存器)以二进制表示时的编号第10位(DF位):
为0时:MOVS每执行一次,EDI + {1,2,4}
为1时:MOVS每执行一次,EDI - {1,2,4}
按ECX(计数寄存器)中指定的次数重复执行字符串指令
//例:
MOV ECX,10 //16进制
REP MOVSD //重复执行MOVSD指令16次
REP STOSD //重复执行STOSD指令16次
注:每执行一次REP指令,ECX - 1
因篇幅问题不能全部显示,请点此查看更多更全内容