Hello there,
i'm mew here. and i want to start over with the win32asm
but i don't know where to start
and i know somehow something because i stuidied the asm for dos
so what i'm asking right now is.
is there a text where i can refer to?
is it similar to the dos thig that i learnd?
thanks.
GT3,
With a background in DOS assembler, the graduation to 32 bit assembler
can be done once you get thwe swing of using operating system
function calls. In DOS you used interrupts where in 32 bit windows you
use API function calls. 32 bit assembler is both easier and a lot
more powerful, it has a greater range of instructions and can work
in multimegabyte size data easily.
The stuff to get is the MASM32 package and install it. For reference
material you need the WIN32.HLP file, MSDN if you have it is later
and you need to get the 3 volume set of help files from Intel so
that you have both the architecture and instruction reference.
This should help to get you up and going in 32 bit MASM coding.
Regards & Good luck.
hutch@pbq.com.au
Hutch's right ;)
If you know your x86 stuff, Win32ASM is a lot easier....
yea you can download the text book at www.ask.com and find the text book called "the art of assembly"
The fact is, it is the exact same thing in 32 bits as it is in 16 bits (or almost the same...)
I've started to learn 32 bits assembly language for more than a year now and what I've discovered is that in fact it is very similar, it just look different cause all programmers use High Level Masm Syntax (Which by the way you should use cause it'll save you a lot of headaches believe me...)
What I can do is explain you briefly how to display a message box in old style ASM
push MB_OK ;Constant declare in Windows.inc
push offset YourTitle ;offset of a Null terminated String
push offset YourMessage ;offset of a Null terminated String
push 0 ;Habitually the Handle of a window
call MessageBox ;call to a function declared in user32.dll
push 0 ;this must be NULL
call ExitProcess ;call to a function in kernel32.dll
all the .IF (or .if cause those aren't case sensitive by the way)
and .while and so on are use just to simplify the reading of sources and anyway they're well interpreted by the Assembler so you should use them.
If you don't want to (I did the same thing at first) you can still continue using those cmp and conditional jumps (ja,jb,jz,jnz,jbe,jae and so on...) plus you can still use ecx as a counter registry and loop with some reps or movs or cmps
or scas but remember you don't have to set the DS anymore you're in a flat model.
I strongly suggest you to compare this closely with the tutorial MessageBox from Iczelion (you can download it on this site)and you should understand a little bit more how it works.
In facts you are not using interrupts anymore cause you're not allowed to in the Windows environment. So you should use the Win32API that are a set of function that Microsoft provides for programmers. Those API are like call to you're own function, you push parameters on the Stack and then you call the function. Note that the params are in reverse orders because of the STDCALL at the beginning of the prog (Tutorial #2)
Now you need to learn about win32API...
A good way to start is by reading the tutorials you find on this site, they're the best around (believe me I searched a lot before finding this site).
Welcome in the 32 bits Assembly World, a world of Free Knowledge
Free Sources, Free Help, OPTIMAL POWER OVER THE MACHINE...
mrpink