It strikes me that many of the comments here are by people who don't really know what it is to do a major project in assembly.
Following it would be easier than you think. It would nearly all be written with macros, its not uncommon for a proper assembly programmer to have massive libraries of macros and custom pre-processor directives, you would be amazed at the crafty techniques utilising the compilers' pre-processor.
Encapsulation, data hiding, type checking and a lot of the other HLL paradigms have been around since programming began, only you had to implement them yourself. As HLL's progressed, more and more of these OOP principles where added and developed and they became more strict to prevent silly mistakes
As computers became more prevalent, people and businesses started to rely on them more and more it became unacceptable to have a rogue program taking down the whole system. So OS's became more robust and more restrictions placed on what software could and couldn't do. CPU's with privileges and terms such as ring 0 ring 1 etc would prevent user software "hitting the metal".
Programming languages have also taken this road but in the embedded world, many times the only thing running is your software and the only underlying "system" is the programming environment. It's effective not only at compile time but also at run time.
HLL's seem to offer a far more robust environment but it comes at a cost and you can find yourself writing a lot of code to get around some language restriction to achieve something can be accomplished with a hand full of assembly instructions. In these circumstances, ignore assembly at your own peril.