Assembly Programming.
For a long period I programmed exclusively in Assembly. To briefly explain how that came about; I learned programming initially with QBASIC and then moved onto Visual Basic. However I was trying to do some pretty CPU intensive work and Basic just wasn't up to it. I knew of C and heard it was supposed to be fast so I decided to try my hand at Visual C++. The problem was coming from a RAD IDE like VB 5 to VC proved too confusing; I think looking back it was MFC that completely threw me off.
So I persevered with VB until by chance I came across Steve Gibson's Research site. Now the controversy aside, Steve Gibson was very vocal that he wrote programs in pure Assembly, I was intrigued to say the least. My limited VB programming experiences meant I knew nothing of chip architectures or indeed anything lower level. Assembly seemed very prestigious, 1337 even. So to wrap this story up; I found it was easier to go from VB to Assembly because I just accepted I'd have to do everything myself, whereas to move to VC was more like jumping blind onto a target, I didn't know what VC would do for and what I'd need to do myself.
Getting Started.
So you're interested in trying your hand at ASM programming, excellent. There are a number of excellent resources out there. If you expect to be only programming for Windows, or at least initially will stick with Windows (I'd recommend this) then you want to get the MASM32 package as put together by hutch--. With that installed you'll want to check out Iczelion's Tutorials, the source code for them comes with the MASM32 package. Finally you'll need a place to ask questions, there are two excellent resources, the MASM32 forum and the Windows Asm Community forum. I still frequent both of them myself even though I've mainly moved onto C++ now.
If you want a portable Assembler you need look no further than FASM and it's supporting forum. This Assembler can generate both 32bit and 64bit programs and works on Windows, Linux and *BSD. This is actually my favourite Assembler, but there is much more sample code available out there for MASM so it can be easier to get started with.
My Contributions.
The community spirit around Assembly programming is so great that I couldn't help but give something back, I have written a few tutorials as well as a number of sample programs with full and free source code.
