How soon into someone's training/career should one learn ASM?

Given that it is a very efficient language and requires a fairly broad range of knowledge (more than I have anyway) I was thinking the sooner the better, as it would help one learn other concepts... What are your opinions?
It's good to understand the basics of assembly (the stack, how your functions are called exactly, etc). To learn those things it really doesn't take too much time.

Assembly is actually pretty easy.

There are so many operations in assembly that you shouldn't waste your time learning some of the more advanced operations simply because the compiler knows better when to use those during optimization.

I would however recommend understanding the stack structure and how data is passed.
Hopefully never.
1. Assembly is unproductive.
2. Assembly is unportable.
3. Assembly is (mostly) unnecessary.

The only instances when Assembly is absolutely needed is when interfacing directly with hardware, when debugging compilers, and when reverse engineering software.

Given that it is a very efficient language and requires a fairly broad range of knowledge
The former is true, the latter isn't. Learning any Assembly takes only a few days. Most of the code in Assembly involves moving data around in registers (assuming the architecture is a register machine). Wholly uninteresting.

as it would help one learn other concepts
No, it won't. After writing enough C/++, you'll understand the computer to a low enough level to improve your coding in other languages. Assembly won't add an awful lot.

If you're not planning any of the things I mentioned above, then don't even bother. You'll never need it.
You should instead try learning languages that make use of different paradigms. I believe it was Eric S. Raymond who recommended learning C/++, Perl, Python, Java, and a dialect of Lisp.
Last edited on
Ahh, reverse engineering! Always wanted to learn..

I ALREADY HAVE OLLYDBG, WHERE CAN I LEARN ASM? (:
Last edited on
http://www.drpaulcarter.com/pcasm/ - 32 Bit Assembly Tutorial

http://www.openrce.org/articles/
http://reteam.org/
http://www.reverse-engineering.net/index.php

Really all you need to start out with is understanding how to move data, use basic math operations, use the stack, and the conditional jump operations.

Then just play with a bunch of crackmes and get good at seeing multiple instructions and assume what they do.

Start olly, open the target exe or process and single step and watch the register view and learn to use the tool.

I wouldn't recommend learning SoftICE.
I think, as Helios said; it's only really worth learning ASM if you're going to be directly interfacing hardware. If you were making a bootloader, perhaps; you could use ASM to switch the CPU into 32-/64-bit mode (apparently the CPU starts in 16-bit mode and the bootloader has to change it before loading an OS). You'd need ASM for a bootloader; to write text into the video card's memory so that it would be written to the screen. I think you use OFFSET for that; although I've only ever looked at ASM code when I was reading something about a "Hello World OS" which was actually just a bootstrap.
SoftICE is no longer in development, unfortunately. And, being a kernel debugger, old versions obviously don't work in different versions of the kernels.
There was a great disassembler whose interface looked to me four years ago like someone had thrown up a bunch of buttons onto my screen, so I never bothered to learn how to use it. I believe it was called Ada or something. I haven't been able to find it in a long time, so I don't know if it's still in development.
This is quite a nice book to start learning assembly, even though a little old: http://oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/toc.html

Assembly is actually just another way to represent machine code in a more humane way so there are many disadvantages since you cannot take any shortcuts and what many fear everything that goes wrong is completely your own fault ;)
But there is also the advantage that you have much more control over everything you write.
Topic archived. No new replies allowed.