i have a basic programming experience in C and C++, i want to start off with assembly language so i need to familiarize myself with the concepts n syntax etc. It would be very helpful if you could provide any good online references or methods for me to learn well.
Posted on 2008-05-20 02:28:44 by SNce
You didn't mention which platform you had in mind, so I'm going to assume that you intend to program for the x86 platform, and under some kind of Windows OS.
If that is correct, I suggest that you pretend that 8 and 16 bit machines do not exist.
Start with 32 bit asm, using one of the popular assemblers (masm, nasm, fasm, etc).
If you do this, you'll find a wealth of information and sourcecode to look at, and with luck, will be able to build your first executable the same day (or much less).
As for references, you'll absolutely require a copy of the Win32 api reference helpfile.
Then you'll be visiting the MSDN online reference for mountains more information... best to know what you're looking for first.
You have to look at the Art of Assembly book by Randy Hyde, its been published online so you can read the whole thing.
And if you choose to use masm, you have to look at Iczelion's website.
You'll notice that many of the users HERE have websites of their own.
You can find URLS to those on their member profiles.
There are online chat services that host asm chatrooms where you can ask specific questions and get direct and immediate answers (provided anyone is awake).
There's so many sources of information that your brain may explode, don't be alarmed, learn what you need as you go.
Posted on 2008-05-20 03:13:03 by Homer
Thank u so much! That was very helpful. What do suggest i start with? masm? Could u please tell me about the power of assembly level programming , about what can be achieved and the situations in which programmers resort to it?
Posted on 2008-05-20 03:54:04 by SNce
Anything can be achieved in assembly language. It's just going to take a bit longer. I resort to asm for mostly everything, but most of my programs are little tools to make my work better and faster. I'm not a professional programmer so I don't really care how long it takes to get my program just the way I want it. (Or close to that - I'm a notorious half 4sser )

I'd say most programmers will eventually do some kind of looping thing and they will be stumped why it takes so godawful long for it to finish. They will frequent boards and get some help and are able to optimize it by probably half or better using their selected language but the truly insane will inline asm it and squeeze a little more out of it.
Posted on 2008-05-20 06:05:39 by JimmyClif
I would recommend starting off with masm, since you'll find the most resources for that assembler (it's not the best out there, but its powerful enough, and its popular).
Whether you stick with masm or not is up to you but I suggest starting there, and looking at some other assemblers along the way.

I'm involved in a project called ObjAsm32 which extends the functionality of masm to allow you to write object-oriented code (with classes, looks like c++ mixed with asm).
That might actually be a good place to start, given your C background.
In fact its so addictive that you might find it hard to leave alone!!
Since becoming involved, OA32 has become my primary programming language, as I benefit from the best of two worlds... oop with masm as the compiler... and because I can directly bear weight on the direction that the project takes in terms of making requests for and submitting new functions and such - its actively developed, I know this, I'm one of the developers.
With OA32, your masm code is built from reusable modules, you have access to a large number of directives not normally available in masm, development times are similar to that of C++, and binaries are typically smaller and faster than comparable C++ compilers.

Posted on 2008-05-20 09:37:47 by Homer