I agree. I learned this way, and, for example, wrapping my head around pointers was much easier after I already understood why LEA existed. Yes, C isn't portable assembler, and no, you can't necessarily predict what ASM will be produced from a particular snippet of code. However, C operates closer to "portable assembler" than any other programming language, and it's a lot harder to go from anything else to C than it is to go from assembly to C