views:

1764

answers:

7

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?

+9  A: 

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).

Ayman Hourieh
+1  A: 

I agree that PC Assembly Language is very good. Other good ones using GAS are:

JF
Professional Assembly Language is a great book, I recommend it, too
Johnd
+1  A: 

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

  • Brief tutorial

http://www.csn.ul.ie/~darkstar/assembler/

  • Using SSE

http://www.neilkemp.us/v4/articles/sse_tutorial/sse_tutorial.html

Tom
A: 

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 :(

shylent
A: 

"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.

BoraxMan
A: 

I would recommend the assembly tutorials page at http://pickatutorial.com

I hope it helps.

Sonia