code compiles, i've fixed way of addressing (must multiply register value after register, not before) and corrected pointless square brackets in last mov inside macros.