Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been a developer since 2009 and I've learnt a lot of languages since, but I've always wanted to understand and be able to code in the lowest level language so I can directly (or at least very close to directly) speak to machines through my code.

There was a point in time when someone showed me how to do an if statement in assembly, but out of all the books that I got, I could never really understand where/how to start learning to code in assembler.

any help please? I'm obsessed with learning this!

PS: if you have any software suggestions, I use ubuntu and am looking to convert to backtrack soon, so it would be preferred if you could give me something that'll be easily installed on debian linux, otherwise don't sweat it, give me the name of the windows software and I'll find an equivalent myself

share|improve this question

closed as off-topic by Neil, Martijn Pieters, BЈовић, Ozz, Thomas Owens Aug 2 '13 at 12:15

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – Neil, Martijn Pieters, BЈовић, Ozz, Thomas Owens
If this question can be reworded to fit the rules in the help center, please edit the question.

5  
Learn Assembly easily is an oxymoron ;-) –  morgano Aug 2 '13 at 9:19
    
Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it. –  gnat Aug 2 '13 at 10:24
    
@gnat the questions that you posted in this forum and have the most votes for are also open ended and demand opinionated answers. what's more is that some of them; My boss decided to add a “person to blame” field to every bug... actually require no knowledge of programming to answer. how is this question different from those? –  pythonian29033 Aug 2 '13 at 10:52
    
AFAIK, every assembler is bound to the instruction set of the underlying machine. You don't specify what machine you want to talk to. This question is likely to be closed soon for reasons that @gnat explained. However, you can go to the "related questions" list to the right of this response (on my screen), and get some suggestions. PS I learned assembler in the fall of 1962, over 50 years ago. I question whether it really makes sense to learn it today, unless job requirements compel it. –  Walter Mitty Aug 2 '13 at 12:17
    
@pythonian29033 question you refer to, doesn't ask us to recommend a tool, library or favorite off-site resource while your does: "Any good, easy to learn from books or tutorials..." –  gnat Aug 2 '13 at 12:26
add comment

1 Answer

up vote 2 down vote accepted

I am having a hard time answering this one tbh.
I found learning assembly language to be quite difficult indeed as a lot of knowledge is required on how the computer actually works before even considering to start looking into assembly language.

To get you started and if you do not posses the knowledge already, you should check out some college book lists on logic and computer design fundamentals or Digital Design and Computer Architecture.
I will not link any books regarding this topic as I find learning from books very subjective. I read them parallel while slowly starting to look into assembly languages.

Second problem is which assembly language to learn and with which tool:
I learnt SPARC Assembly back in the day, but my university switched to Intel x86 architecture which seems to make a little more sense.
Perhaps you should look into ths gcc compiler as a debugger, MASM for Windows or the GAS >.

There are tons of links and forums from there.
I would also advise you to join a group or find some like minded people after obtaining some fundamental knowledge on the topic. A few pair of eyes can really helped me out as i was programming Assembly.
Start small and slowly. Also Comment your code frequently and constantly.

It's tough but I found it very rewarding. Good luck.

edit **
Here you go should give you a taste:
gcc assembly

share|improve this answer
    
my OS of choice is ubuntu/backtrack, so I use debian linux distros mostly –  pythonian29033 Aug 2 '13 at 9:47
    
wow! checked your link out and that actually looks easy! 10rep for your answer! –  pythonian29033 Aug 2 '13 at 9:51
    
Thx. For Ubuntu try the GAS, should be on Ubuntu and is a part of the gcc if I remember correctly. Flick open the Terminal and try some gcc flags(objdump --help) to debug some C programs to get a first taste of small c programs. –  Ben McDougall Aug 2 '13 at 9:54
    
already had it installed trying to compile a c program, but thanks for the link –  pythonian29033 Aug 2 '13 at 10:35
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.