asm is good for manipulating registers and mcu specific features directly, but "not so good" at showing the obvious logic of the algorithm. your Original Posting is a good example how obscure the following code is:
'higher level basic language
for timer2 = 1 to 100
for timer1 = 1 to 100
' do something
next timer1
next timer2
you will be likely to master at manipulating hardware with asm, but less likely to build a moderate to complicated algorithm, let alone the simpler floating point operations.
I'll have to completely disagree with you on the point of ASM not showing the obvious logic of an algorithm - it is working at only one step up from machine code - could you get any clearer a picture, if your mind is able to work this way (mine is)? If abstracting away from something by "dumbing it down" is clarification for the sake of teaching a beginner, then I see your point, but to say that it is inobvious... kinda doesn't makes sense - to me, anyway.
Someone once told me that C is a direct, terse language. Yeah? Well, ASM seems
much more terse, possibly to the point of ambiguity, until you learn that all the instructions are merely acronyms, and VERY logically names ones at that. I sure don't miss all the "{...}" brace balancing, opening and closing routines and remembering where to put my "()" and which is the best way to write a pointer; "something *pointerToSomething" or whatever. Ugh. ASM seems to be as simple and grass roots as it gets, because your mind is INSIDE the registers ALL the time, and you're not being spoonfed.
Ugh, do I sound like a fanboy? I hope not - I am not, I just know I love all I have learned about ASM, and it is (apparently) the hardest language to learn... really? Well that's just not true to me - all those safety nets and cuddly OOP abstractions just baby me, and hide what is
really going on in my chip. If I need cotton wool, I'll go buy some from the chemist

hehe