Sign in to follow this  

Starting Assembly Programming

This topic is 4107 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Well, a class of mine is going to be starting on some assembly programming and I want to get a good start on it. What type of resources do you guys suggest for this? As you can see the ASM book section is a little skimpy so a few names of some good books would be appreciated. Also what compilers would be good for a little Win32 ASM? Thanks a bunch.

Share this post


Link to post
Share on other sites
The Art of Assembly is considered the standard online text on the matter, though last I looked it was still 16 bit.

Computer Organization and Design is the academic gold standard text. It's in MIPS rather than x86, and explains actual processor architecture; learning assembly is merely a side effect.

Share this post


Link to post
Share on other sites
I've used "Computer Organization and Design" too. I would really recommend that you don't start with i386 assembly. It's an absolute mess, including every feature that Intel and AMD thought they might want to tack on. Start with the old 32-bit MIPS architecture. You can use SPIM as an emulator.

Once you understand how a simple architecture works, you'll have a much easier time wrapping your head around i386. At least I did.

Share this post


Link to post
Share on other sites
Thanks for all your replies and suggestions. A friend of mine who I asked before I posted this suggested MASM, and I've been playing with it. There is only one thing that I can't understand with it. I've been getting a few errors when following some GameDev tutorials. It seems MASM doesn't automatically setup it's installed libraries as default libraries, so if I have the program I'm working on anywhere but the main directory it won't find the library.

I'll take a look at "The Art of Assembly" after I figure out how to compile and link this simple program out. Thanks for those online resources. I may just buy the book anyway because I need to get away from the machine, otherwise my gaming temptress may swade my true intentions.

[Edited by - PumpkinPieman on September 14, 2006 8:59:38 PM]

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Quote:
Original post by PumpkinPieman
Thanks for all your replies and suggestions. A friend of mine who I asked before I posted this suggested MASM, and I've been playing with it. There is only one thing that I can't understand with it. I've been getting a few errors when following some GameDev tutorials. It seems MASM doesn't automatically setup it's installed libraries as default libraries, so if I have the program I'm working on anywhere but the main directory it won't find the library.

I'll take a look at "The Art of Assembly" after I figure out how to compile and link this simple program out. Thanks for those online resources. I may just buy the book anyway because I need to get away from the machine, otherwise my gaming temptress may swade my true intentions.


IF you want to use MASM, get the MASM32 package.
Also, for assembly programming in general, you might
want to check out the relevant asm-specific forums
http://www.asmcommunity.net/
http://www.masmforum.com

HTH

Share this post


Link to post
Share on other sites
I absolutely hated SPIM when I was required to learn it in uni classes many years ago. But then it's probably because I already knew i386 beforehand. IMO, it's probably better to teach yourself (or your students) to use actual tools.

Share this post


Link to post
Share on other sites
For Win32Asm you should definitely have a look at Iczelions tutorials: http://win32assembly.online.fr/tutorials.html
And as an alternative to the MASM32 package (which is pretty good) you might have a look at NASM32: http://quasar.astalavista.ms/nasm32.html

Share this post


Link to post
Share on other sites
The Art Of Assembly Language Programming is a fairly good resource, but in my opinion is highly overrated. The first few chapters are reasonably complete and well-written (albeit long-winded), but after a while, the book seems to turn into a sales pitch for Hyde's own assembler.

If I were to recommend a resource that needn't be available in hard-copy, I'd say Iczelion's pages are invaluable for everybody learning assembly language, particularly under Win32.

Regards
Admiral

Share this post


Link to post
Share on other sites
You should be sure of your target architecture before you choose the language. Although converting between different dialects of similar architectures often involves no more than a 'find & replace', more dramatic conversions can be the bain of a coder's life.

If you are developing a cross-platform program, you should avoid writing in assembly language. Platform independence is one of the main reasons C (and C++) was invented. However, if you're just setting out to learn ASM to expand your experience of low-level computing, then it really doesn't matter: Once you know ASM, coding for a new architecture from scratch is usually trivial.

My advice is to start off in common ground, using Intel x86, then when you need to go deeper, use whatever your processor likes.

Regards
Admiral

Share this post


Link to post
Share on other sites

This topic is 4107 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this