INTEL and AMD Cpu Registers, syntax operators
---------------------------------------------
BYTE REGISTERS		 : ah,al,bh,bl,ch,cl,dh,dl
WORD REGISTERS		 : ax,bx,cx,dx,di,si,bp,sp
SELECTOR REGISTERS	 : cs,ss,ds,es,fs,gs
DWORD REGISTERS 	 : eax,ebx,ecx,edx,esi,edi,ebp,esp
CPUCONTROL REGSITERS	 : cr0,cr2,cr3,cr4,cr8
DEBUG REGISTERS 	 : dr0,dr1,dr2,dr3,dr6,dr7
TRACE REGISTERS 	 : tr3,tr4,tr5,tr6,tr7
FPU REGISTERS		 : st0,st1,st2,st3,st4,st5,st6,st7
MMX REGSITERS		 : mm0,mm1,mm2,mm3,mm4,mm5,mm6,mm7
SSE\SSE2\SSE3 REGISTERS  : xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7

AMD (ATHALON 64) LONG MODE [64-Bit,32-Bit,16-Bit] EXTENDED REGISTERS !!!
------------------------------------------------------------------------
64BIT REGISTERS 	 : rax,rbx,rcx,rdx,rsi,rdi,rbp,rsp
128BIT EXTRA REGISTERS	 : xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15
64BIT EXTRA REGISTERS	 : r8,r9,r10,r11,r12,r13,r14,r15
32BIT EXTENDED REGISTERS : r8d,r9d,r10d,r11d,r12d,r13d,r14d,r15d
16BIT EXTENDED REGISTERS : r8w,r9w,r10w,r11w,r12w,r13w,r14w,r15w

========================================================================
****************************
* GLOBAL MACRO DEFINITIONS *
****************************

STRINGZ "mystring"
(defines zero terminated string data)

STRINGS stringlabel,'mystring1','mystring2','mystring3'
(Defines an array of pointers to strings beginning at -> stringlabel.)

COMMENT { }
(comment out a block of text,code and/or data)

POPADEAX,POPADEBX,POPADECX,POPADEDX
POPADESI,POPADEDI,POPADEBP,POPADESP
(used when you want to return a value just before a POPAD instruction)

STARTTIMER,STOPTIMER
(uses RDTSC instruction for a simple cycle accurate "stopwatch"
 for functions or whatever)

PROCEDURE procname, ENDPROCEDURE
(marks the beginning and ending of a procedure,
 procedures are 16-byte aligned)

ENUM var, var, var, ..etc. (enumerates variables)
SENUM strucname, var, var, var, ..etc. (enumerates variables in struc format)

DISPLAY "Offset: ",<var,16>,13,10
(Displays contents of labels and equates in code)

********************************
* X86 CPU FUNCTIONS AND MACROS *
********************************

Cpu.ProcessorInfo - Sets up CPU identification variables for cmov, mmx,
		    3dnow, sse, sse2, sse3, etc.
    [NONE]
    RETURN: [NONE]

Cpu.Div128 - Divide 128-bit number by a 64-bit number.
    edx:ecx:ebx:eax = 128-bit dividend
    edi:esi	    = 64-bit divisor
    RETURN:
    ebx:eax = quotient
    edx:ecx = remainder

********************************
* X86 FPU MACROS AND FUNCTIONS *
********************************

[*NOTE* - (if no value is given, macro will assume st0=value)]
FPUASIN     [value]
FPUHSIN     [value]
FPUHASIN    [value]
FPUACOS     [value]
FPUHCOS     [value]
FPUHACOS    [value]
FPUATAN     [value]
FPUCTAN     [value]
FPUHTAN     [value]
FPUACTAN    [value]
FPUHATAN    [value]
FPUPOWER    [base],[exponent]
FPUETOPOWX  [value]
FPULNX	    [value]
FPULOG10    [value]
FPURADTODEG [value]
FPUDEGTORAD [value]
FPUROUNDUP
FPUROUNDDOWN
FPUROUNDNEAREST
FPUROUNDZERO
FPUROUNDTOINT

************************
* CONVERSION FUNCTIONS *
************************

CnvtBtoI64
    esi     = pointer to binary ascII string, zero terminated
    RETURN:
    edx:eax = 64 bit number (edx = high 32bits, eax = low 32bits)

CnvtHtoI64
    esi     = pointer to hexadecimal ascII string, zero terminated
    RETURN:
    edx:eax = 64 bit number (edx = high 32bits, eax = low 32bits)

CnvtAtoI64
    esi     = pointer to decimal ascII string, zero terminated
    RETURN:
    edx:eax = 64 bit number (edx = high 32bits, eax = low 32bits)

CnvtItoB64
    edx:eax = 64 bit number (edx = high 32bits, eax = low 32bits)
    esi     = pointer to 17 byte or greater buffer
    RETURN:
    esi     = converted 64bit number to ascII binary

CnvtItoH64
    edx:eax = 64 bit number (edx = high 32bits, eax = low 32bits)
    esi     = pointer to 17 byte or greater buffer
    RETURN:
    esi     = converted 64bit number to ascII hexadecimal

CnvtItoA64
    edx:eax = 64 bit number (edx = high 32bits, eax = low 32bits)
    esi     = pointer to 17 byte or greater buffer
    RETURN:
    esi     = converted 64bit number to ascII decimal

********************
* RANDOM FUNCTIONS *
********************
RndMakeSeed (Must be called before any random functions are used!) 
    NONE
    RETURN:
    NONE

RndInt32
    NONE
    RETURN:
    edx = 32-bit random number

RndInt32Range
    eax = minimum for range
    ebx = maximum for range
    RETURN:
    edx = 32-bit random number between min,max

RndFloat
    NONE
    RETURN:
    ST0 = random number between 0.0 to 1.0

RndSetFrange
    ST0 = minimum for range
    ST1 = maximum for range
    EX: fld [max] , fld [min]
    RETURN:
    Minumum and maximum set for function -> rnd.floatrange.

RndFrange
    NONE
    RETURN:
    ST0 = random number between min , max range see -> rnd.setfloatrange

RndN200
    NONE
    RETURN:
    edx = random number from 0 to 199

RndN240
    NONE
    RETURN:
    edx = random number from 0 to 239

RndN256
    NONE
    RETURN:
    edx = random number from 0 to 255

RndN300
    NONE
    RETURN:
    edx = random number from 0 to 299

RndN320
    NONE
    RETURN:
    edx = random number from 0 to 319

RndN360
    NONE
    RETURN:
    edx = random number from 0 to 359

RndN384
    NONE
    RETURN:
    edx = random number from 0 to 383

RndN400
    NONE
    RETURN:
    edx = random number from 0 to 399

RndN480
    NONE
    RETURN:
    edx = random number from 0 to 479

RndN512
    NONE
    RETURN:
    edx = random number from 0 to 511

RndN600
    NONE
    RETURN:
    edx = random number from 0 to 599

RndN640
    NONE
    RETURN:
    edx = random number from 0 to 639

RndN768
    NONE
    RETURN:
    edx = random number from 0 to 767

RndN800
    NONE
    RETURN:
    edx = random number from 0 to 799

RndN1024
    NONE
    RETURN:
    edx = random number from 0 to 1023

RndN1280
    NONE
    RETURN:
    edx = random number from 0 to 1279

******************
* CHAR FUNCTIONS *
******************
CharIsLower - Check if Character is lower case
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsLowerP - Check if Character is lower case
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsUpper - Check if Character is upper case
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsUpperP - Check if Character is upper case
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsAlpha - Check if Character is alphabetic
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsAlphaP - Check if Character is alphabetic
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsDigit - Check if Character is a digit
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsDigitP - Check if Character is a digit
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharToUpper - Convert Character to upper case
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharToUpperP - Convert Character to upper case
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharToLower - Convert Character to lower case
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharToLowerP - Convert Character to lower case
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsAlnum - Check if Character is alphabetic
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsAlnumP - Check if Character is alphabetic
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsAscii - Check if Character is AscII
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsAsciiP - Check if Character is AscII
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsCtrl - Check if Character is a control character
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsCtrlP - Check if Character is a control character
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsGraph - c is a printing character, like isprint, except that a
	      space character is excluded
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsGraphP - c is a printing character, like isprint, except that a
	       space character is excluded
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsPrint - Check if Character is a printable character
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsPrintP - Check if Character is a printable character
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsSpace - Check if Character is a space
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsSpaceP - Check if Character is a space
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsXDigit - Check if Character is a Hex digit
    al - character to check
    RETURN:
    CF0 - Yes
    CF1 - No

CharIsXDigitP - Check if Character is a Hex digit
    esi = pointer to character
    RETURN:
    CF0 - Yes
    CF1 - No

********************
* STRING FUNCTIONS *
********************

STRLENGTH - Get the length of a Zstring
    esi = pointer to Zstring
    RETURN:
    CF0 - ecx = strings length in bytes
    CF1 - Null string

STRCOPY - Copy a Ztring:source to destination
    esi = pointer to source Zstring
    edi = pointer to destination Zstring
    RETURN:
    CF0 - ecx = strings length in bytes
    CF1 - Null string


