3.1.4 串操作指令
2025年09月21日
3.1.4 串操作指令
串操作指令包括5种,即LODS、MOVS、STOS、CMPS、SCAS,另外还有一条REP前缀。这些指令都是一字节指令,它们能完成基本的字符串操作。这些指令的共同特点如下。
①用SI寻址源操作数,对应的段地址为DS;用DI寻址目的操作数,对应的段地址为ES。
②每一次操作之后,地址SI、DI要自动修改,但按增量还是按减量修改,取决于标志位DF。若DF=0,则在每次修改操作后SI和DI按增量修改(字节操作则加1,字操作则加2);若DF=1,则每次修改操作后SI和DI按减量修改。
③串操作的重复次数放在CX中,每循环一次CX减1。任何一个串操作指令(LODS指令除外)都可以在其前面加上一个重复操作前缀,于是指令就重复执行,直至在寄存器CX中的操作次数满足要求为止。地址指针SI、DI和操作次数CX的修改在每次串操作之后进行。
④重复操作是否完成的检测是在操作完成以前完成的。所以若初始化使操作次数CX为0,就不会引起重复操作。
⑤重复前缀有两种形式:REP与REPE/REPZ(REPNE/REPNZ)。前一种与MOVS、STOS指令联合使用,后一种与CMPS、SCAS指令联合使用。
⑥字符串比较与搜索(CMPS、SCAS)指令影响标志位,其标志置位同减法。其他串操作指令对标志位不影响。