The book covers everything, from assembly to advanced topics using C, like DSP, RTOS, etc...
My point exactly: how many times do you need to write your own DSP, RTOS, etc. vs. writing your own code to drive peripherals? Even if you do use DSP/RTOS, you can do so by treating them as blackbox (CMSIS' dsp libraries or vendor supplied RTOS) without understanding its inner working.
Effectively, the (C) compiler is taking care of the lowest layer for you. All you need to know is "C = A + B;", without ever understanding how exactly the core does it. In C, you know, with reasonable degree of confidence that "C = A+B;" will work, on core A, B, or C.
That's the beauty of programming in a high level language. It renders the core "bland", and allows you to focus on the most value-add: your algorithm / logic, and the peripherals.