10

Following on from a previous thread, it has got me interested in learning a little about Assembly programming. Not so much for wanting to program useful apps in, just to get a feel for low level programming to better understand what is happening.

Can anybody recommend any books or online resources for beginners?

Thanks.

1
  • This book by Dr. Paul Carter was pretty good for x86 ASM.
    – jonescb
    Commented Mar 8, 2011 at 19:26

5 Answers 5

5

Recommended Book : The Art of Assembly Language Programming.

I also liked this site. Nice introduction to assembly programming! I used this site as a reference while studying for my Microprocessors and Microcontrollers course.

2
  • Excellent...thanks. Out of interest, how intuitive did you find learning it compared to a typical modern language? My history is 6 months c# (in industry) and around the same time C++ (in my bedroom :) ) Commented Dec 19, 2010 at 12:48
  • 1
    I came across Assembly programming in my course(I am still a student), and as you said in your question, It was helpful in knowing how embedded systems work and all. Yet, compared to high-level(modern as you say) languages, I found it not much useful. You know, never going to use it in my field - web development. :) Commented Dec 19, 2010 at 13:32
2

Is this an academic exercise, or are you intending to use the assembly language you learn? This is pretty specialized stuff, these days. Compiler optimization has become so good, that even something like a high performance hard disk drive would typically have around 1% of its code base written in assembler. Going way down the food chain to 4bit or some 8bit processors you'll see much more assembly language being used.

If you really want to have a go at assembly language, pick a processor that has a nice instruction set. I'm a former ARM employee so I'm probably biased, but I found that the ARM instruction set was particularly easy to learn - I was able to write an efficient FIR filter in asm on my third day at the company. ARM's semiconductor partners are shipping about a billion ARM cores per quarter these days, so it is pretty easy to find a company that is willing to use your ARM ASM expertise.

There are plenty of ARM eval boards available for around $50 to try your code out on - it looks like ARM Cortex M3 is going to be immensely popular. It uses ARM's Thumb2 instruction set, which is a little more obscure than plain ol' ARM32 code, but still pretty easy, and very powerful.

This little board looks very cool, for 80 euros: http://www.olimex.com/dev/stm32-103stk.html

1
  • It#s purely academical/self-learning. I would like to better understand low level memory management as well as higher level languages. Commented Dec 20, 2010 at 0:48
1

Basically, in the sense of assembly programming, you need to know the underlying architecture first, then the correspondent language, for example, with the PIC micro-controllers, you can use the compiler which the provided and the language. I use this site for referencing to PIC micro-controller tutorials.

1

I always found the toughest part was hello world, which is usually just a trivial assem function called from a higherlevel languare like adding two numbers. Once you get past that hurdle it is simply a matter of adding instructions and psuedo-ops (like defining data) to your repertoire.

I would second geekbrit, although I've never used ARM. A minimal architecture like that would be not only be easier, but might come closest to having a legitimate -as opposed to only a didactic purpose.

0

I have an instruction set, assembler, and simulator, with some lessons that were created just for this purpose. I dont yet have feedback on how good or bad I did but its out there, give it 15 minutes or a half an hour see if it teaches you anything. http://github.com/dwelch67/lsasim After that I have some mainstream instruction set simulators you can try as well, simple, no frills, should run anywhere you have a C compiler, etc.

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