fix operator order in math ops
add negative number support
update assembly