A few things that helped me learn more about assembly language programming:
1. Making the compiler produce assembly language output ofmy simple C programs (with gcc, for example, it's gcc -S xyz.c). It can be illuminating to place an asm("nop"); C statement before and after a C function call, or a loop, or whatever you're interested in. In the assembly output, the statements you are interested in will be surrounded by this assembly code:
[plain]#APP nop #NO_APP[/plain]
2. Disassembling C programs I've written, using `objdump -d
3. Reading the Wrox Press book, "Professional Assembly Language"--I found it to benice and technical.
4. Downloading and referring to the Intel Software Developer's Manual (all 5 PDFs).
I agree, the Wrox Press book, "Professional Assembly Language" has been very helpful for me as well. Wikis can be a decent resource to a certain extent. more What really helped me was just coding stuff on my own. Learning by doing is unbeatable in this field.
The Intel Software Developer's Manual is a good reference and should be looked at if you have some C experience.