2010-09-29 132 views

回答

43

對於ecx重複,存儲的eax內容到其中edi點,通過每次4個字節遞增或遞減edi(取決於方向標誌) 。通常,這用於memset類型的操作。

通常,該指令簡寫爲rep stosd。有經驗的彙編程序員只需看到上面提到的所有細節。 :-)


ETA的完整性(感謝PHIS):每次迭代時,ecx被減1,並且當它達到零時的循環停止。對於stos,您只會觀察到ecx最後被清除。但是,對於scas等,其中使用repz/repnz前綴,如果操作在耗盡ecx字節/字/發起方之前停止,則ecx可以大於零。

在你問之前,scas用於執行strchr類型的操作。 :-P

+0

你能舉個例子嗎? – COMer 2010-09-29 06:16:08

+4

@COMer - 它已經在anwser中:像memset - 它用給定的值(在eax中)填充指定的(ecx)內存量(在[edi])。 – PhiS 2010-09-29 07:05:43

+0

@Chris Jester-Young - 爲了完整起見,我建議你提一下,它也會減少ecx每次迭代一次,直到ecx達到0. – PhiS 2010-09-29 07:11:27