Fix subtle bug in exec() (issue #33)

I forgot to change esp to ebp in one of the previous commits so exec()
wrote public's return value to wrong memory address (e.g. AMX data)
instead of 'retval'.
Replace "cmp reg, 0" with a "test reg, reg"