With most hardware now being out of order components writing your own asm is not that much of a win anymore, compiler technology also has come a long way over the last 25 years and most compilers are better at transforming your code into asm then you are. Whilst you should know things about memory and cpu workings I don't think asm is the right way to start learning about programming.
Not every coder has to know about the nitty gritty of the CPU an overall understanding like the article linked earlier will give you enough understanding to be able to make optimizations in any language. Starting in a managed language is perfectly fine, learning algorithm construction is the goal before learning to optimise your code and dealing with all the hardware problems.
It's not so much about outdoing your compiler (which I would not even dare to attempt in these days), but rather to get a grasp on how and why higher languages work like they do. Things seem more logical and easier to get when you know the basics, at least that's how it worked for me.
Not to say that you shouldn't do some BASIC or Python first to get an idea on what a computer program even is.
-- I agree not every coder needs to know the nitty gritty, however Warnexus specifically stated that was his aim.