i try to avoid STD's :lol:
in fact, i have gotten to where i don't use them at all
if i have to move things in that direction, i write a discrete loop
in this case, you could probe, then clear, one page at a time
something like this...
ASSUME FS:Nothing
mov edx,esp
mov fs:[700h],edi
xor eax,eax
sub edx,<NumberOfBytesRequiredPlus3Mod4>
.repeat
push eax
mov ecx,esp
mov esp,fs:[8]
sub ecx,esp
shr ecx,2
.if !ZERO
mov edi,esp
rep stosd
.endif
.until edx>=esp
mov edi,fs:[700h]
mov esp,edx
ASSUME FS:ERROR