MOVSB、MOVSW和MOVSD指令将数据从ESI指向的内存位置复制到EDI指向的内存位置。 [根据方向标志位的值]这两个寄存器会自动增加或减少。
cld设置方向标志位DF为0,每次复制完成时esi、edi自动增加,指向下一个地址.
std置位方向标志位DF为1,每当复制完成时,esi、edi自动减少,指向下一个地址.
关于esi、edi,增加或减少多少字节,由movsb/movsw/movsd最后的哪个文字决定。
movsb以字节格式复制,逐字节复制,esi/edi自动增加或减少一个字节
movsw作为字复制,一个字(两个字节)复制,esi/edi自动增加或减少两个字节
movsd以双字格式复制,每复制两个字(4字节),esi/edi自动增加或减少4字节
这些命令通常与rep (repeat )命令结合使用以表示重复副本
rep movs byte ptr es:[edi],byte ptr ds:[esi]简称: rep movsb
rep movs word ptr es:[edi],word ptr ds:[esi]简称: rep movsw
rep movs dword ptr es:[edi],dword ptr ds:[esi]简称: rep movsd
复制多少次由ecx决定.2.STOS指令:将Al/AX/EAX的值存储到[EDI]指定的存储器单元中
STOS BYTE PTR ES:[EDI]简称STOSB
STOS WORD PTR ES:[EDI]简称STOSW
STOS DWORD PTR ES:[EDI]简称STOSD
具体来说,在AL/AX/EAX中,取决于具体的宽度是多少。 执行命令后,edi的值也会增加或减少相应的字节数。 这取决于方向标志位DF的值。 DF=0,edi增加,DF=1,edi减少。 与movs命令类似。
STOS命令也与REP配合使用。