I've been meaning to solidify my memory of common x86 instructions for a while, but I never got around to it because I get distracted by the bazillion other more advanced instructions. This guide is nice because it covers a few common instructions in a complete-enough manner but not excruciating details like the Intel manual.
To be fair, the document has been re-tagged July 2016, but it is there since 2006:<p><a href="http://web.archive.org/web/20060914031400/http://www.cs.virginia.edu/~evans/cs216/guides/x86.html" rel="nofollow">http://web.archive.org/web/20060914031400/http://www.cs.virg...</a><p>"Credits: This guide was originally created by Adam Ferrari many years ago,
and since updated by Alan Batson, Mike Lack, and Anita Jones.
It was revised for 216 Spring 2006 by David Evans."
IIRC the Randall Hyde assembly language book is also good. I've read some of it.<p><a href="https://en.wikipedia.org/wiki/Randall_Hyde" rel="nofollow">https://en.wikipedia.org/wiki/Randall_Hyde</a><p>Another is this one by Paul Carter, who taught Computer Science at the University of Central Oklahoma for 10 years, including PC assembly language programming. You can get both a free PDF and a physical copy of it from here:<p><a href="http://pacman128.github.io/pcasm/" rel="nofollow">http://pacman128.github.io/pcasm/</a><p>and it uses only free software such as NASM and GCC.
The book covers 32-bit protected mode programming in assembly. It also covers interfacing assembly and C code.