I'm planning to learn assembly for an independent study class in my college. I have 2 years of c/c++ experience and feel I'm pretty good at it now. I have never written assembly but want to learn it now.
I eventually want to write a small game of some kind in assembly and was wondering which assembler will be the best for me to learn. I'm on a 32 bit windows machine running on an intel x86 architecture.
I looked into MASM but I was told its like pseudo assembly. Is it the standard for win32 assembly ? especially if I want to make a real time graphics app with sound etc ? Does anyone have any suggestions on which assembler I should pick or which is the best to learn ?
Just one thing:
There is no win32 assembly
The most common is x86 assembly
NASM is confusing for those who don't like cmdline(ie me when I was learning asm), try Fasm's IDE.
Yes, NASM is the thing.
May I also suggest that you try to look at the disassembly of your C/C++ programs? Or at the output of, say gcc -S if you're with it? (or gcc -S -masm=intel).
I get what you mean, but I think that eventually the experienced C/C++ programmer (2 years experience, OP), should get used to using the terminal. Even if said programmer never moves to a Unix-y OS (IMRHO better), it's always good to know it. But yes, Fasn's IDE might be better if that's the case.
Thanks for the replies, I have a few questions, is NASM a raw assembler ? is it possible to write openGL or diectX apps using it ?
I looked into MASM and found constructs like IF ELSE FOR etc and was wondering how those got in there, I thought there were no such constructs in assembly and we had to use jumps etc. Is it worthwile to learn MASM ? i know it has the ability to interface directX that is why I'm inerested.
Does intel have its own assembler ? If so what is it caled and is that better to use that than all the *ASM's out there ?
Also, I don't mind using command line so that is not a problem.
Yes, Nasm(and Fasm) are "raw assemblers". It's possible to write any sort of app that can be made with either of them. The only slightly hard part about writing apps that use libraries in asm is that you have to specify the libraries you want to import, which is usually handled for you by HLL compilers.
Intel probably does gave an assembler since they have a compiler, but I've never heard of anyone using it.
Fasm also has a cmdline version, I just suggested the IDE b/c it's easier and has a "Compile and Execute" button for quick return.
ah, I see. What do you recommend I use to learn assembly ? a high level assembler like MASM and then go to FASM after that, or straight to FASM ?