之前的笔记搬运
串操作
1 | 源操作数用寄存器SI寻址,默认在数据段DS中,但允许段超越:DS:[SI] |
结论movs和stos和lods的功能就是字或字节的数据传送, 并把源和目标操作数±1或±2,不影响标志位
区别在于:
movs的源操作数是si, 目标操作数di
stos的源操作数是ax, 目标操作数di
lods的源操作数是si, 目标操作数ax
1 | CMPSB |
结论cmps和scas的功能就是字或字节的数据相减, 并把源和目标操作数±1或±2,
影响标志位
区别在于:
cmps的源操作数是di, 目标操作数si
scas的源操作数是di, 目标操作数ax
重复前缀指令
REP, 执行一次cx-1, 当cx=0不在执行
如: rep movsb, rep stosb
一般配合配合不影响标志的MOVS、STOS(和LODS)指令
REPNZ, 执行一次cx-1, 当CX=0或ZF=1不在执行
REPZ, 执行一次cx-1, 当CX=0或ZF=0不在执行
如: repz cmpsb, repnz scasb
一般配合影响标志的CMPS和SCAS指令
REP指令只适用于串操作