汇编工具包提取:链接:https://pan.baidu.com/s/1gzzW96a1l4vjxY1H03X_Bw?pwd=8888
提取码:8888
--来自百度网盘超级会员V5的分享
串操作指令
- MOVS(串传送指令)
- STOS(串存储指令 )
- LODS(串读取指令)
- CMPS(串比较指令)
- SCAS(串扫描指令)
- REP(重复前缀指令 )
串操作指令-解释
1、串类似代码段的概念。在内存中一串可能就有一种不同的涵义。
2、段超越:DS:[SI] -> SS:[SI] ,CS:[SI] 等 就是可以跳到其他段中。
3、操作的是字节的话,就是增1或者减1。操作的是字的话,就是增2或者减2。增减操作都是由DF来操作的。
--------------------------------------------------------------------------------------------------------------------------------
MOVS(串传送指令)
作用:把字节/子操作数从主存的源地址传送至目的地址(跟mov操作类似)
MOVSB(单步执行,主要观察我下面圈出来的内容)
MOVSW(单步执行,主要观察我下面圈出来的内容)
--------------------------------------------------------------------------------------------------------------------------------
STOS(串存储指令 )
作用:把AL或AX的数据传送至目的地址
STOSW(单步执行,主要观察我下面圈出来的内容)
STOSB(单步执行,主要观察我下面圈出来的内容)
-------------------------------------------------------------------------------------------------------------------------------
LODS(串读取指令)
作用:将字节/字从数据段中读取出来保存在AL或者AX中
LODSW(单步执行,主要观察我下面圈出来的内容)
LODSB(单步执行,主要观察我下面圈出来的内容)
--------------------------------------------------------------------------------------------------------------------------------
CMPS(串比较指令)
作用:将主存中的源操作数减去目的操作数,以便设置标志,进而比较两操作数之间的关系。比较后结果不会保存
CMPSB(这里是00-00,所以最后结果肯定是0 -> ZF+1。这个一般用做条件判断)
CMPSW(这里FF-FE !=0 -> ZF=0)
-------------------------------------------------------------------------------------------------------------------------------
SCAS(串扫描指令)
作用:比较后不保存结果。类似CMPS指令
SCASB(这里是FF-FF,所以最后结果肯定是0 -> ZF+1。这个一般用做条件判断)
------------------------------------------------------------------------------------------------------------------------------
REP(重复前缀指令 )
作用:简单来说,就是在串操作指令上,加上前缀。然后就会循环执行该指令(循环次数可以自己定)
演示案例:
rep movsx ;无条件重复直到cx==0
通过我圈出来的内容,自己单步执行观察变化,即可
------------------------------------------------------------------------------------------------------------------------------