I want to learn some practical assembly language having just learned the basic concepts in class. Are there any decent books or tutorials (nasm, etc) that would be recommended?
PC Assembly Language is my favorite resource on assembly programming. It's modern, free, and covers a variety of topics. It uses NASM and the examples are available for Linux (among several other systems).
I agree that PC Assembly Language is very good. Other good ones using GAS are:
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:
- Brief tutorial
- Using SSE
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 :(
"what is the point in learning assembly just for the heck of it? "
Because you get to learn HOW the CPU works and get a better understanding of the system. I would say understanding assembler is in itself practical.
I would recommend the assembly tutorials page at http://pickatutorial.com
I hope it helps.