Well... maybe "dw" does mean "dword" in this case. In Nasm syntax, we have "pseudo instructions"...
db 0 ; 8 bits
dw 0 ; 16 bits
dd 0 ; 32 bits
dq 0 ; 64 bits
dt 0 ; 80 bits (for FPU "extended precision")
do 0 ; 128 bits
These initialize (to zero) memory of the stated size. We can also reserve memory, uninitialized, to those sizes...
resb 11 ; 8 bytes - enough for an old 8.3 filename
resw 1 ; a single 16-bit "word"
resd 1 ; a 32-bit "dword"
; etc.
This can be confusing, because the word "word" can also be used to mean a "native machine size word" - was 16 bits, then 32 bits, now 64 bits (I guess). To Nasm, "word" means 16 bits, "dw" means "define word" or perhaps "data word". It looks like "dword" - I used to make that mistake a lot! "dd" is what we want for "define dword" or "data dword" (32 bits).
What you're doing looks like a "directory entry", but I'm not familiar with parts of it, and I don't know how many bits are supposed to be reserved for "dwReserve0". If this comes from a C "header" file - dirent.h or filesys.h or some such, feel free to post it. (I could probably find it...)
Nasm's "struc" (it's a built-in macro) does NOT reserve any space for the structure - it's like a "typedef". If you want to initialize a structure (fill in the values), you can use "istruc". To just reserve space for it, you could do something like...
section .bss
my_struct resb vars_size
Or what you're doing...
sub esp, vars_size
That makes room for a "local variable" or "stack variable", sometimes called an "automatic variable" because it exists only for the duration of the function and is "freed" when the function exits.
I'm distracted - got company - let me get back to ya on this...
Later,
Frank