汇编串操作指令 movs lods stos cmps scas

参考网上内容

串操作指令

串操作指令共有5条:
1、串传送:movs

指令一次操作字节数
movsb1
movsw2
movsd4

2、串加载:lods
指令一次操作字节数
lodsb1
lodsw2
lodsd4

3、串送存:stos
指令一次操作字节数
stosb1
stosw2
stosd4

4、串比较:cmps
指令一次操作字节数
cmpsb1
cmpsw2
cmpsd4

5、串扫描:scas
指令一次操作字节数 
scasb1
scasw2
scasd4

串操作指令寻址方式

1、ds:esi保存源操数的首地址,
2、es:edi保存目的操作数的首地址,
3、串操作指令执行后,会自动修改esi和edi中保存的地址,增量由所使用的指令 决定,方向由DF标志位决定。

指令操作类型DF==0        DF==1        
单字节esi = esi + 1  
edi = edi + 1
esi = esi - 1
edi = edi - 1
双字节esi = esi + 2
edi = edi + 2
esi = esi - 2
edi = edi - 2
四字节esi = esi + 4
edi = edi + 4
esi = esi - 4
edi = edi  - 4
在执行串操作指令前可用cld指令将DF置0,用std指令将DF置1 。

重复前缀指令

如果在串操作指令前加上“rep”,将使操作重复进行,重复的次数由ecx中的值决定。串操作指令每执行一次,ecx中的值将自动减1,当ecx中的值为0时,将结束指令操作。
rep主要和movs,lod,sstos指令一起使用。比如:
mov ecx,5
rep movsb
指令movsb将执行5次。
repe/repne/repz/repnz主要和cmps,scas指令一起使用。比如:
repe cmpsb
指令重复执行的条件是:ecx =! 0 && ZF ==1,意思是如果串的某个字节相等就继续进行串比较直至ecx中的值为0 。repne表示字节不等时继续比较,repz和repnz意思类似。


串传送指令

串传送指令是从ds:esi指向的源地址复制一定数量的字节储存到es:edi所指向的目的地址,指令执行后,esi和edi中的值会被自动修改。

指令含义
movsb从ds:esi指向的源地址处复制一个字节储存到es:edi所指向的目的地址处
movsw从ds:esi指向的源地址处复制两个字节储存到es:edi所指向的目的地址处
movsd从ds:esi指向的源地址处复制四个字节储存到es:edi所指向的目的地址处

串加载指令

串加载指令是从ds:esi指向的地源地址处复制1或2或4字节到al或ax或eax ,指令指令执行后,esi中的值会被自动修改。

指令含义
lodsb从ds:esi指向的源地址处复制一个字节放到al中
lodsw从ds:esi指向的源地址处复制两个字节放到ax中
lodsd从ds:esi指向的源地址处复制四个字节放到eax中

串送存指令

串送存指令是将al或ax或eax中的值复制到es:edi所指向的目的地址处,指令执行后,edi中的佱会被自动修改。

指令含义
stosb将al中的一个字节复制到es:edi所指向的目的地址处
stosw将ax中的两个字节复制到es:edi所指向的目的地址处
stosd将eax中的四个字节复制到es:edi所指向的目的地址处

串比较指令

串比较指令是将ds:esi指向的源地址处的一个字或两个字节或四个字与es:edi所指向的目的地址处的一个字节或两个字节或四个字节进行比较(实际是源串减去目的串,结果不回送,只影响标志位),如查相等,ZF被置1。指令执行后,esi和edi中的值会被自动修改。

指令含义
cmpsb将ds:esi指向的源地址处的一个字节与es:edi所指向的目的地址处的一个字节相比较,如果相等,ZF=1
cmpsw将ds:esi指向的源地址处的两个字节与es:edi所指向的目的地址处的两个字节相比较,如果相等,ZF=1
cmpsd将ds:esi指向的源地址处的四个字节与es:edi所指向的目的地址处的四个字节相比较,如果相等,ZF=1

串扫描指令

串扫描指令是将al或ax或eax中的值与es:edi所指向的目的地址处的一个字节或两个字节或四个字节相比较(原理和串比较相同),如果相等,ZF被置1 。指令执行后,edi中的值被自动修改。

指令含义
scasb相al中的值与es:edi所指向的目的地址处的一个字节进行比较,如果相等,ZF=1
scasw相ax中的值与es:edi所指向的目的地址处的两个字节进行比较,如果相等,ZF=1
scasd相eax中的值与es:edi所指向的目的地址处的四个字节进行比较,如果相等,ZF=1








  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值