String Instructions
字符串指令操作字节构成的串,用来在内存中将字符串搬来搬去。MOVS/CMPS/SCAS/LODS/STOS指令在执行完一次操作后,都会按照标志寄存器中的DF标志的指示自动地更新ESI/EDI寄存器;这样就可以与REP(重复指令前缀)连用,执行系列的字符串操作。
指令 | 描述 |
MOVS/MOVSB | 搬移字符串/搬移字节字符串(将源操作数搬移到目标操作数) |
MOVS/MOVSW | 搬移字符串/搬移单字字符串 |
MOVS/MOVSD | 搬移字符串/搬移双字字符串 |
CMPS/CMPSB | 比较字符串/比较字节字符串(比较两个操作数,设置标志寄存器,下同) |
CMPS/CMPSW | 比较字符串/比较单字字符串 |
CMPS/CMPSD | 比较字符串/比较双字字符串 |
SCAS/SCASB | 扫描字符串/扫描字节字符串(比较AL/AX/EAX与ES:EDI/RDI,设置标志寄存器,下同) |
SCAS/SCASW | 扫描字符串/扫描单字字符串 |
SCAS/SCASD | 扫描字符串/扫描双字字符串 |
LODS/LODSB | 加载字符串/加载字节字符串(将DS:ESI加载到AL/AX/EAX中,下同) |
LODS/LODSW | 加载字符串/加载单字字符串 |
LODS/LODSD | 加载字符串/加载双字字符串 |
STOS/STOSB | 存储字符串/存储字节字符串(将AL/AX/EAX存储到ES:EDI中,下同) |
STOS/STOSW | 存储字符串/存储单字字符串 |
STOS/STOSD | 存储字符串/存储双字字符串 |
REP | 当ECX不为0时,重复执行(REP指令只能位于INS/OUTS,MOVS/LODS/STOS指令前) |
REPE/REPZ | 当ECX不为0且ZF=1时,重复执行 |
REPNE/REPNZ | 当ECX不为0且ZF=0时,重复执行。 |
I/O Instructions
输入输出指令用于在处理器的I/O端口与寄存器/存储器之间搬移数据。
指令 | 描述 |
IN | 从端口读数据(将指定端口的数据读入到AL/AX/EAX中) |
OUT | 向端口写数据(将AL/AX/EAX中的数据写入到指定端口) |
INS/INSB | 从端口读字节数据串(将指定端口的字节数据读入到ES:ED中,下同) |
INS/INSW | 从端口读单字数据串 |
INS/INSD | 从端口读双字数据串 |
OUTS/OUTSB | 向端口写字节数据串(将DS:ESI写入到指定端口) |
OUTS/OUTSW | 向端口写单字数据串 |
OUTS/OUTSD | 向端口写双字数据串 |