Coding in assembly language requires a little different way of thinking, and being aware of lot more low level details, compared to writing the code in a high level language like C# or VB.NET. Since I have not written an assembly language program in a very long time, it was quite a challenge to follow this book. But I must say that, the author has done a good job of laying out the concepts in a way a novice assembly programmer like me can benefit a lot from it. I can't claim that, after reading this book, I have become very good at IL, but I am quite confident that a second run through this book and more practice in IL coding will take me closer to being there.
First three chapters of this book dive straight into an IL program and compare it with a C# program. I thought it was great way to open the book by getting your feet wet quickly without overwhelming you. From fourth chapter onwards the book goes into details of windows PE file and arrangement of Metadata into modules and assemblies. I have not found this kind of detailed information about Metadata layout anywhere else. It is tons of information and still does not overwhelm you. This information is useful even for a high level language programmer and therefore I would recommend this book to all .NET developers.
As author says, .NET universe is like a great pyramid turned upside down and CLR is the tip on which this pyramid stands. ILAsm is the language that describes every feature of the CLR and therefore learning ILAsm language will help all .NET developers build a strong foundation, and that is where this book comes very handy.