I wouldn't recomment assembly as your first language. There's a different dialect for every architecture you program on, and even though the language is relatively small and simple, the problem is putting small and simple pieces together. It's easier to work with a language that doesn't require you to build all of your tools from scratch.
>assembler first and then unix because i am chaning from ms windows to linux next year
I don't entirely agree with that recommendation. When working with Linux as a power user, you'll end up using Perl and shell more than anything. If you work as a developer than expect to use C quite a bit.
My recommendation would be to start with Perl, then go to C. With a year to do it, you shouldn't have any problems getting a little comfortable with both languages. Once you actually switch to Linux, most of your effort will be made in getting comfortable with the interface. However, since Linux comes with full source code, and most of that source code is in C, you'll be better off in the trip to mastery if you can read it.
To summarize, Perl lets you take advantage of Linux's flexibility and C gives you inside knowledge into the operating system. The nice thing is that both Perl and C can be used in both Windows and Linux. The same can't be said about assembly language if Linux is run on a different architecture.
You should learn assembly eventually, mind you, just not as a first (or second) language.