I've been involved in few debates about "ASM vs. C" and I've always defended the C language. But, you really have to know the language and the tools, especially your compiler, when writing software for microcontrollers. Non-standard C, like the above, is not unusual in the world of microcontrollers. ASM knowledge is very useful, if not essential, for one to be able to write good C programs for embedded systems. But the thing is, when you write ASM, you know what you get. When you write C, you better make sure what you get. Sorry for off-topic.