GEEEZ -- I gave up writing ASM for the 1st cut about 20 years ago -- the compilers available even then were efficient enough that you only needed to get down and dirty for the most critical timing dependent code.. there just isnt a point in starting off with ASM considering that C maps almost 1-to-1 to most assembly languages for most of its internal features. And the WinAVR C compiler makes it real easy to embed ASM right in the C code so I can do it in C first, then convert just the parts that need it in place with a perfectly working and tested "flow chart" right in front of me.
In addition.. for 99% of apps, you'll never bother with ASM because the compiled code will work right off and nothing will need to be hand optimized... you've gotta be right on the ragged edge of what the chip is capable of before ASM is going to help you, and 99% of apps wont even come close to that limit.