Fixed the stack so that index zero is used correctly

- The index during a push is incremented first and that address is used.
- When performing a pop the address is decremented after extracting the current
  value.
Added push and pop to the assembler