I remember studying `Computer Systems: A Programmers Perspective&#x27;[1] in my undergrad which was pretty good and covered how programs look in assembly (calling conventions, call frames, data representation, assembly ...).<p>Also, to get better understanding of x86 ISA I followed the old i386 manual[2]. Its old but much more smaller. Perhaps once you feel comfortable, you can move to newer manuals. I never read newer ones (because I never actually needed assembly for any project, was just studying for fun).<p>[1] <a href="http:&#x2F;&#x2F;www.amazon.com&#x2F;Computer-Systems-Programmers-Perspective-Edition&#x2F;dp&#x2F;0136108040" rel="nofollow">http:&#x2F;&#x2F;www.amazon.com&#x2F;Computer-Systems-Programmers-Perspecti...</a>
[2] <a href="http:&#x2F;&#x2F;css.csail.mit.edu&#x2F;6.858&#x2F;2015&#x2F;readings&#x2F;i386.pdf" rel="nofollow">http:&#x2F;&#x2F;css.csail.mit.edu&#x2F;6.858&#x2F;2015&#x2F;readings&#x2F;i386.pdf</a>