Solved

Recommendation for ***free*** online Assembly tutorials

Posted on 2007-11-20
3
766 Views
Last Modified: 2010-04-21
Hi, I am an industrial strength  C++ programmer with over 12 yrs experience. One of the things that has, up until now, eluded me is a good grounding in assembly. Most of the time this is not a problem but sometimes analyzing disassembly is the only way to solve a complex problem. To this end, I am keen to acquire at least some basic rudimentary assembly skills that I might be able to then build on. I would be grateful if someone could (a) point me in the direction of some free (but good) online tutorials (b) maybe suggest a good book for beginners (c) suggest a good but free (see how often that word crops up!) assembler (other than MASM) and (d) maybe provide some general words of advice (or even encouragement)!

Ta v much in advance.

-Rx.
0
Comment
Question by:evilrix
  • 2
3 Comments
 
LVL 53

Accepted Solution

by:
Infinity08 earned 500 total points
ID: 20333564
Wow, no-one responded yet ?

Maybe that's because it's a difficult question to answer, since there are so many versions of assembly ... I'll try anyway ;)


>> (a) point me in the direction of some free (but good) online tutorials

I've never used tutorials to learn assembly ... I basically just taught myself (for example by dis-assembling an executable to figure out what it does and how it does it).

So, I can't point you to a tutorial that I know is good. But I found this one that looks pretty good :

        http://drpaulcarter.com/pcasm/

It includes a basic explanation of how a PC works internally (which is necessary to have a good understanding of assembly), and it seems to cover the basics of assembly pretty well.


>> (b) maybe suggest a good book for beginners

See the link above ...


>> (c) suggest a good but free (see how often that word crops up!) assembler (other than MASM)

NASM is pretty good (and free) :

        http://nasm.sourceforge.net/

(it's also the one used in the tutorial I referred to earlier btw ;) )

A good debugger (one that shows you the assembly, and can step through it) is also a very good tool to have ...


>> (d) maybe provide some general words of advice (or even encouragement)!

Assembly is not very hard (especially if you already know a language like C) - it just takes some getting used to, and a more low-level way of thinking, since you'll be explicitly manipulating the stack, the CPU registers, the memory, etc.
It's the most powerful way of creating optimized code for a system, but obviously it takes more effort to do so.

Knowing assembly will also give you some new insights that you can put to good use when programming in other languages, so it's definitely recommended if you're serious about programming.

Advice ? I'd say, just try a lot out for yourself. Try reverse engineering an executable. Try modifying the behavior of an application in ways not expected by its creator. Try some fun assembly "challenges" and "games", like the bomb ones that have been posted here recently.
0
 
LVL 40

Author Closing Comment

by:evilrix
ID: 31410176
Excellent, as always. Thanks.
0
 
LVL 40

Author Comment

by:evilrix
ID: 20340942
Thanks 8.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
restoring epb 1 357
Binary BombLab Phase 2 16 3,812
segmentation fault in C Code 13 602
Intel AVX2 instruction - vpaddq and overflow 1 825
Scenario: Your operations manager has discovered an anomaly in your security system. The business will start to suffer within 15 minutes if it is a major IT incident. What should she do? We have 6 recommendations for managing major incidents (https:…
Knowledge base software has turned out to be a quite reliable method for storing information, promoting collaborative work and for sharing valuable input and solutions.However, some organizations are trying to develop a knowledge base that works wit…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now