Good Assembly Book: PC Assembly Language
One persistent question I've run across every time I teach malware analysis or exploit writing is "What's a good book on assembly?" There are a couple of books on the topic, but they either suffer from too much detail or focus on outdated operating systems. Typically my response to anyone wanting to learn assembly of any type has been to compile code, and then look at the resulting assembly output.
Paul Carter has written an assembly book called PC Assembly Language. From the website:
"I taught Computer Science at the University of Central Oklahoma for 10 years. During this time I taught an introductory course in PC Assembly Language programming. I grew frustrated at teaching 16-bit real mode programming and decided to change to 32-bit protected mode. However, I soon ran into a problem. I could not find a textbook that covered 32-bit protected mode assembly programming! So, I decided to write my own."
It's even been translated into French, Italian, German, Spanish, Simplified and Traditional Chinese.