OK I have programmed in many many languages before and I am very logically minded and find programming a doddle. With that said I am looking to learn ASM now but after a day or 2 of research it seems hard to find any information on the matter with reference to its age or a clear definition of what asm to learn.

Basically I want to learn the core asm code not HLA or anything and I my programs will be for windows. I would like to learn the most up-to-date asm but if its core asm then I presume it never really goes out of date but I want something containing all the new additions to windows API and stuff.

Could someone point me in the right direction for a good book maybe? If not then some web links to tutorials.

Also can someone clear up the stuff about ASM like all these MASM/FASM/GOASM and HLA stuff. I don't want to learn any asm thats specific to a "compiler", that being my code isnt actually core asm so whats the latest actual assembly code called if its got a specific title and where is the most up-to-date information on it? If you get what I mean, the whole asm thing is a bit hazy atm.

Thanks
Posted on 2005-01-20 10:19:43 by malpass
You're basically going to have to learn two things:
1) assembly
2) the windows API

If you're new to assembly, you might want to start out with MASM since that's what has most documentation available. Because of licensing issues (with the freely available versions of MASM you can only write windows applications, etc.), I'd advise you to check out some of the other assemblers - FASM is very rapidly expanding, but GoASM has nice feature too (like not needing import libraries).

http://www.madwizard.org has a good basic introduction to 32bit assembly available somewhere.

For the Windows API, you can have a look at Iczelion's tutorials. If you're familiar with C (and even if you're not), you should have a look at Charles Petzold's "Programming Windows", it's a very good reference.

You'll also want a copy of the Platform SDK which can be downloaded from microsoft (it's easier to google for "Platform SDK full site:microsoft.com" than finding it manually on the MS sites :P), or the win32.hlp file if you're on dialup.

Beyond that... ask and you shall receive help - especially if you do a little footwork before asking ;-)
Posted on 2005-01-20 11:54:00 by f0dder
MASM has tended to be the entry level assembler for the vast majority of assembler programmers around and it has the largest user base as it is an industrial standard that has been in development since 1982 and is only updated on a needs basis with technology change.

As f0dder has mentioned, the reference material is important and you can add to the collection the Intel manuals for the PIV as they are the best available to learn the architecture and instruction set.

You can get help in this forum, the masmforum at www.masmforum.com and make a point of having a good look at Randy Hyde's site because he has a lot of stuff there that is useful to you. From these you will find more links to other source code that will be useful.

You can download masm32 at www.masm32.com
Posted on 2005-01-20 18:23:23 by hutch--
Choosing which assembler to use is a mess.

Most assemblers will support a syntax based on the original Intel syntax, for machine instructions. Some will have more restricted syntax than others. There is also a difference between assemblers in the way they determine if a label is being used as an address or a value.

Each has different ideas about how to handle common extensions, such as local labels, code sections, and macros.

MASM retains many of the quirks of the original Intel syntax. So if you want to use the most Intel-ish "core" syntax, use MASM.
Posted on 2005-01-21 01:10:00 by tenkey
Thanks for the replies! I'll read up more on it at the weekend when I get another good few hours to sit down.
Posted on 2005-01-21 08:07:54 by malpass