I participated recently in a discussion where someone suggested to teach programming to beginners with assembler as the first language. There were far many more negative than positive reactions. My opinion is that assembler is just a tool to show concepts in practice. If used properly, it serves as well as any other tool (ie. high-level programming language). Here are Knuth's reasons for using assembler in his TAOCP books.
Now, I agree that it is much harder to make a good course with assembler - topics, examples and problems must be chosen much more carefully than for a high-level programming language. And x86 is a wrong choice as a first architecture - something like Knuth's MMIX or the MIPS architecture would be much better.
Bottom line is that, while there are admittedly many traps, I don't see anything fundamentally wrong with such approach. Your opinions?