You don't really need a book to learn asm, IMO.
You need an instruction set reference (like
this), some tutorials explaining x86 peculiarities (real mode, protected mode, v86 mode, 'unreal' mode) and the runtime environment you're targetting (DOS, win32, Linux, etc). If you don't want to worry about runtime environments, you can start with writing external 32-bit asm routines for C (
NASM Manual: Interfacing to 32-bit C Programs). I don't recommend writing inline asm routines, since some compilers use AT&T asm syntax, which is nothing but a bad joke for x86 asm, IMO. (If you really want to write some, MSVC's syntax is OK.)
Furthermore, if you're familiar with Pascal, TMT Pascal has very nice inline asm capabilities (Borland compilers have too, but they can't understand instructions above 286).