Assembly Language Step-by-step: Programming with DOS and Linux (with CD-ROM)
Jeff Duntemann
This is a book I would highly recommend, and already have recommended, to anyone with an interest in what goes on under the hood of computers. It's written very clearly, starts at the very begining and assumes nothing. Having said that, if you have some knowledge you won't mind reading through the bits you already know because the book is very humerous and enjoyable to read. Definitely the best text book I have read in a long time.