Hello all,

I'm very beginner in x86 assembly language, I saw that there are many assemblers avaliable, but which one to start with, regarding that I want to program in 32-bit pmode but without using any external APIs (e.g: Win32 as in MASM)...


If your program has to do file i/o or displaying something on the screen then it has no choice but to call win32 api functions to do that. 32-bit programs can not access hardware unless its a kernel level program.

Hello AD,

I'll start programming in 16-bit assembly using emu8086, Then i'll shift into 32-bit (x86) assembly programming using MASM or NASM...
I'm preparing to develop a small OS with my friend so I want to know some assembly alongside with my C++ knowledge.
so do you advice me to learn 32-bit asm without learning 16-bit asm? and with which assembler to start with?

Thanks for replying!

I wouldn't bother learn 16-bit asm, go directly to 32-bit so that the program can use whatever memory is available on the computer. It's also somewhat easier -- with the flat memory model it is not necessary to change the value of ds segment because all data is in the same segment.

As for assemblers: either masm, nasm or tasm.

Thanks AD for Advices!
I'm going to learn 32-bit asm using MASM from Assembly Language For Intel-Based Computers