串处理指令
串处理指令分类情况如下:
指令类型 | ||
---|---|---|
MOVS | move string | 传传送 |
CMPS | compare string | 串比较 |
SCAS | scan string | 串扫描 |
LODS | load from string | 从串取 |
STOS | store in to string | 存入串 |
INS | input from port to string | 串输入 |
OUTS | output string to port | 串输出 |
REP | repeat | 重复 |
REPE/REPZ | repeat while equal/zero | 相等/为零则重复 |
REPNE/REPNZ | repeat while not equal/zero | 不相等/不为零则重复 |
1.MOVS
格式:
MOVS DST,SRC
MOVSB (字节)
MOVSW (字)
MOVSD (双字)(386及其后继机型可用)
用法:
指令可以把SI指向的数据段中的一个字节、字或双字(DS:SI)传递到由DI指向的附加段中的一个字节、字或双字(ES:DI)中去,不影响条件标志位,并根据DF以及数据格式对SI和DI进行修改。
2.CMPS
格式:
CMPS SRC,DST
CMPSB (字节)
CMPSW (字)
CMPSD (双字)(386及其后继机型可用)
用法:
指令把DS:SI指向的存储单元中的数据与ES:SI指向的存储单元中的数据相减,不保存结果但影响条件标志位,并根据DF的值对SI和DI进行修改。
3.SCAS
格式:
SCAS DST
SCASB (字节)
SCASW (字)
SCASD (双字)(386及其后继机型可用)
用法:
指令把AL、AX或EAX中的数据与ES:DI指向的存储单元中的数据相减,不保存结果但影响条件标志位,并根据DF的值对SI和DI进行修改。
4.LODS
格式:
LODS SRC
LODSB (字节)
LODSW (字)
LODSD (双字)(386及其后继机型可用)
用法:
指令把DS:SI指向的存储单元中的数据送到AL、AX或EAX中,并根据条件标志位DF的值和数据类型来修改SI。
5.STOS
格式:
STOS DST
STOSB (字节)
STOSW (字)
STOSD (双字)(386及其后继机型可用)
用法:
指令把AL、AX和EAX中的内容存入由DS:SI指向的存储单元,并根据DF的值及数据类型修改SI。
6.INS
格式:
INS DST,DX
INSB (字节)
INSW (字)
INSD (双字)(386及其后继机型可用)
用法:
指令把端口在DX寄存器中的I/O空间的数据送到由ES:DI指向的存储单元,并根据DF的值和数据类型修改DI。
7.OUTS
格式:
OUTS DX,SRC
OUTSB (字节)
OUTSW (字)
OUTSD (双字)(386及其后继机型可用)
用法:
指令把由DS:SI指向的存储单元中的数据送到端口号在DX寄存器中的I/O端口中,并根据DF的值和数据类型改变SI。