**********************************************************
		 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	
	 	 An Enormous Tut on mASM: PART 1... A Little Background
	
		 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		 **********************************************************





	INTRODUCTION
	------------


	On this series of tutorials, I *WILL* try and teach you how to program in
	Win32ASM (mASM Specific). There is a great tutorial by rECLAIM in TASM, which
	helped me in the process of learning. But 90% ASM programmers code in mASM
	so its a good choice. If you got stuck in a code, you can get support easily.





	WHY MASM?
        ---------


 	1. MASM improves the readability of your source	code and makes learning ASM 
        a lot easier.
          
	   The traditional way of calling an API Function:

		push param4
		push param3
		push param2
		push param1
		call API

	    While in MASM:

		Invoke API, param1, param2, param3, param4
           
      

	2. MASM supports comparison and loop construction.

           These are:
		.IF, .ELSEIF, .ELSE, .ENDIF
		.REPEAT, .UNTIL
		.WHILE, .ENDW, .BREAK
		.CONTINUE


	  You dont have to mess with jumps anymore. :)




	TOOLS TO USE
	------------
	

	1. MASM32 PACKAGE -- win32asm.cjb.net

	Contains Text Editor, assembler, linker etc.
	
	2. Resource Editor -- protools.cjb.net

	Give yourself a break and dont write rc scripts. (ONLY USED BY PEOPLE 
	WHO VALUE THEIR TIME)
  
	3. TEXT EDITOR -- 

	MASM package includes a text editor (I dont use that though). Just use
	a text editor with SYNTAX HIGHLITING *VERY USEFUL*. I use ULTRAEDIT.

	4. API REFERENCE -- win32asm.cjb.net

	A must have if you are serious in programming.





	OPCODES
	-------


	OPCODES are the instructions for the Processor. Here are the OPCODES NEEDED.

        OPCODE			MEANS

	1. mov 1, 2		moves the value of 2 into 1 (actually... copies)
	2. add 1, 2		adds the value of 2 into 1
	3. sub 1, 2		subtracts the value of 2 into 1
	4. shr ax, 16		shift all the bits of ax 16 places to the right
	5. push 1 and pop 2     push the value of 1 into the stack and pops into the memory of 2

	e.g.	push eax			
		pop var1



	REGISTERS
	---------


	works just like variables (GENERAL PURPOSE REGISTERS ONLY)

	32bit	 lower 16bits	 highbyte	 lowbyte	PURPOSE

	eax	     ax		   ah              al          ACCUMULATOR
	ebx 	     bx 	   bh 		   bl	          BASE
	ecx 	     cx 	   ch 		   bl  	         COUNTER
	edx 	     dx 	   dh 		   dl             DATA
	 

	Although they have names, you can use them for anything.




	WINAPI
	------


	These are the set of functions provided by the system. The heart of
	Windows Programming.
		




        Contact
	-------

	For questions and shit:
	e-mail : This email address is being protected from spambots. You need JavaScript enabled to view it.