• 0

[Assembly/x86] Learning assembly language


Question

I found the following book at my local library:

"Assembly language step-by-step : programming with DOS and Linux" by Jeff Duntemann (ISBN 0471375233).

It is a bit dated (2000) but I like the premise of the book. It aims to teach assembly language as a person's first programming language. Is there a similar, but more recent (eg for Windows XP/Vista/7) book?

I have been trying to learn C++ but I find the argument the book makes compelling: starting with assembly is the best route because it makes learning other languages much easier once you really understand what the computer is doing and how it works.

Suggestions?

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Hmm my opinion is that x86 assembly is a tough start.

If you insist on starting with assembly I would pick up something easier at first such as MIPS.

It's more clean than the mess that x86 is :p

Link to comment
Share on other sites

  • 0

I have been trying to learn C++ but I find the argument the book makes compelling: starting with assembly is the best route because it makes learning other languages much easier once you really understand what the computer is doing and how it works.

I disagree with this bit, a programming language is simply a way to specify what logical process you want the computer to do. It just happens that the popular languages map very closely to the hardware. (For alternatives look into Haskell which is a functional language and definitely doesn't map to the hardware)

You shouldn't focus on what the computer is doing, but on what you want it to do.

Link to comment
Share on other sites

  • 0

I don't think so. I learned assembly shortly after C++ and it definitely helped me understand what I'm really doing in C++, but with no prior knowledge of a higher-level language, it would have just been very dry and frustrating I think. Because it is dry and frustrating.

I think the most important thing is to open as many doors to other areas of computer science as fast as possible. Learning a popular, high-level language will allow you to learn algorithms, data structures, object-oriented/functional design, develop debugging skills in a modern IDE, understand example code from tutorials online, etc. Assembly is important to understand computer architecture, but not much else, so I don't think it should be a priority.

Link to comment
Share on other sites

  • 0

If your attempting to learn how to program, Assembly makes for a poor model. Some of concepts in higher level languages are poorly expressed (if at all) in Assembly and it can be an absolute nightmare to decipher. However, if you?re interested in hardware aspect of computers, Assembly exposes computer architecture pretty well. I could recommend you this book, but it?s meant to be an introductory book and assumes knowledge of C.

C maps pretty closely to Assembly. You should consider taking up C as it?s more human readable.

Link to comment
Share on other sites

This topic is now closed to further replies.