Assembler language for embedded systems: please do not
I coded in assembler language for eleven years, and used to teach it. I still advocate that students learn assembler to help them with the study of operating systems, computer architecture, compiler design and so forth.
There are at least four problems with assembler: lack of maintainability, tediousness in coding, lack of portability and lack of being able to use new processor features over time.
In some of the smallest systems for IoT you may be tempted to use assembler, but when the next chip comes along or the architecture you have becomes multicore, or develops a level of cache, or uses other techniques that make it hard for assembly language coders to get the same efficiency as a higher-level language, you may be sorry. Fight the urge...help the compiler do what you need it to do.