例题
例3-45将首地址为SRC的源字符串传送到DEST 为首地址的内存区,字符串的长度为N个字节。 CLD ;DF=0,增量方向 LEA SI,SRC ;DS:SI←字符串首地址 LEA DI,ES:DEST ;ES:DI←目标地址 MOV CX,N ;字符串长度 REP MOVSB ;重复字符串传送
1.基本串操作指令
(1)串传送指令 MOVSB ;字节传送,ES:[DI]←DS:[SI], SI←SI±1,DI←DI±1 MOVSW ;字传送,ES:[DI]←DS:[SI], SI←SI±2,DI←DI ±2 DF=0,(SI)和(DI)增量;DF=1, ,(SI)和(DI)减量 不影响FR寄存器的值
5)串搜索指令 SCASB ;字节搜索,AL-ES:[DI],DI←[DI] ±1. SCASW ;字搜索, AX-ES:[DI],DI←[DI] ±2 DF=0,(SI)和(DI)增量;DF=1, (SI)和(DI)减量 影响FR寄存器的所有标志位
2.重复前缀指令
格式: REP ;无条件重复前缀指令 REPE/REPZ ;条件重复前缀指令 REPNE/REPNZ ;条件重复前缀指令
(3)存串指令 STOSB ;存字节,ES:[DI]←AL,DI←[DI] ±1 STOSW ;存字, ES:[DI]←AX,DI←[DI] ±2. DF=0,(DI)增量;DF=1, (DI)减量 不影响FR寄存器的值
例题2
使内存中0400H开始的256个单元清零 CLD LEA DI,[0400H] MOV CX, 0080H XOR AX ,AX REP STOSW
REP指令用在MOVS、STOS指令之前,每执行一次串 指令,CX←(CX)-1,直到CX=0,重复执行结束 REPE/REPZ指令用在CMPS、SCAS指令之前,每执 行一次串指令,CX←(CX)-1,并判断ZF标志位是否为 0;只要CX=0或ZF=0,则重复执行结束 REPNE/REPNZ指令用在CMPS、SCAS指令之前,每 执行一次串指令,CX←(CX)-1,并判断ZF标志位是否 为1;只要CX=0或ZF=1,则重复执行结束 LODS指令之前不能添加重复前缀