A very good book for learning x86 Assembly is Pentium Processor Optimization Tools. While the book's main focus is the optimization of assembly code, it teaches Pentium assembly along the way, and is a good reference book as well.
It is long out of print but is not hard to find used.
It comes with a floppy disk containing an "assembly code optimizer". It does not actually optimize your code, but instead produces a commented listing that points out where inefficiencies such as pipeline stalls lie.
The tool that comes with a book is a limited version of a more featureful product that the author's company used to sell, but for reasons I am unfamiliar with they are long out of business. I don't know why - I would think such a tool would sell like hotcakes.
x86 in general is a very complex topic as there are many variants that are supported by different models of microprocessors. Once you know the basics you will want to consult Intel's or AMD's databooks for the precise chip you are targeting. Unfortunately code that runs fast on one model of CPU may not be as fast on a different chip.