Okeeday, if you be reading this, you need help!
Some Basic Stuff.
COMMANDS:
mov x,y -- Equals sign, x = y
cmp x,y -- Compares x and y, useless unless you have one of the following after it.
- je x -- If x and y are equal, jump to x.
- jne x -- If x and y are not equal, jump to x
- jl x -- If x is smaller than y, jump to x
- jle x -- If x is smaller than or equal to y, go to x.
- jr x -- Same as jl, but larger than
- jre x -- same as jle but larger than or equal to.
- disclaimer: if you see one of these with a z in it, the evil warlords I trying to kill you, just pretend it's an e.
Which leads us to:
jmp x -- teleports the script to x.
call x -- calls the function at x
ret -- jumps back to where the function was called.
push x -- pushes x onto the stack
pop x -- pops x from the stack
add x,y -- adds x and y, saves to x
sub x,y -- subtracts x and y, saves to x
mul x,y -- multiplies x and y, saves to x
div x,y -- divides x and y, saves to x.
... ; -- equivalent of //, ends the line, and anything after it don't count, useful for comments or writing the original code in case you screw stuff up.
REGISTERS:
places where you can save stuff to without screwing up the code.
ax, bx, cx, dx, eax, ebx, ecx, edx. (variables)
the fine print: screwing with bx or ebx can do wacky things, as they are reserved for something, forget wut tho.
OFFSETS:
yeh, you can do all kinds of stuff now, but adding one to eax and setting edx equal to it really isn't that exciting. All the jazz is at offsets, some are codes, ie 419CB0 has ML+ at it, but other offsets, like 0049E6CC (current health) are just values which are accessed by the code to do cool things.
BRAKKETS:
so, pretend eax holds 49E6D0.
if you have a bit of code that sez:
mul eax,2
it will multiply eax (49E6D0) by two, doing nuthing in particular.
However, if you have:
mul [eax],2
with the brackets around eax, it doesn't multiply 49E6D0 by two, but rather whatever is at that offset, the max health.