I can't reproduce this problem.
There's an error in your code. "var" is declared as "word" - 16 bits. (I used to get confused about this - "dw" sounds like "dword", but it's "data word" - you want "dd" - "data dword"...) Then you move eax into it. This *could* cause a segfault, if your variable was the very last thing in valid memory - but it isn't.
I thought this might be something that 0.99.xx might screw up... but that isn't it - 0.99.02 gets it right.
Try "ndisasm -u -o 8048000h -s 8048080h myprog | less" and tell us what you see. Should be something like "mov [0x8049098], eax".
Outside of the "dw" vs "dd" problem, your code looks fine to me, and I can't get it to segfault. Not the first time I've been confused - not even the first time today...
Best,
Frank