I recommend the official Intel manuals. You can request the hard copy on Intel's website.
See http://en.wikipedia.org/wiki/X86_assembly_language#External_links
* Intel 64 and IA-32 Software Developer Manuals
* AMD64 Architecture Programmer's Manual Volume 1: Application Programming (PDF)
* AMD64 Architecture Programmer's Manual Volume 2: System Programming (PDF)
* AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions (PDF)
* AMD64 Architecture Programmer's Manual Volume 4: 128-Bit Media Instructions (PDF)
* AMD64 Architecture Programmer's Manual Volume 5: 64-Bit Media and x87 Floating-Point Instructions (PDF)
Some resources from my personal friend, Google:
- Function calling convention:
http://unixwiz.net/techtips/win32-callconv-asm.html
http://www.delorie.com/djgpp/doc/ug/asm/calling.html
http://www.csn.ul.ie/~darkstar/assembler/
http://www.neilkemp.us/v4/articles/sse_tutorial/sse_tutorial.html
A side question: what is the point in learning assembly just for the heck of it? The thing is, it seems that it would be hard to find a practical application for it, because if you need "low-levelness" you can just write it in pure ol' C.
Please note, that I am not trying to label your question is useless, on the contrary, I absolutely love coding in assembly languages, even though I haven't done very much of it (yes, sadly it is a bit of a platonic love), - precisely because, it seems, I am unable to find something practical, that can be done in assembly only (after all, if it can be done in C, why use assembly, then?).
P.S. I am terribly sorry for adding this as an answer, it was too long for a comment :(