def step(steps = 1)
      steps.times do
        @instruction = Instruction.new(@memory.read(@PC))
        @PC += 1

        op  = @instruction.op
        a   = get_operand(@instruction.a)
        b   = get_operand(@instruction.b) if @instruction.b

        if @skip
          @skip = false
        else
          if b # Basic Instruction
            result = self.send(op, a.value, b.value)
          else # Non-Basic Instruction
            result = self.send(op, a.value)
          end
          a.write(result) if result
        end

        # Notify observers
        changed
        notify_observers(self)
      end
    end
def step(steps = 1)
      steps.times do
        @instruction = Instruction.new(@memory.read(@PC))
        @PC += 1

        op  = @instruction.op
        a   = get_operand(@instruction.a)
        b   = get_operand(@instruction.b) if @instruction.b

        if @skip
          @skip = false
        else
          if b # Basic Instruction
            result = self.send(op, a.value, b.value)
          else # Non-Basic Instruction
            result = self.send(op, a.value)
          end
          a.write(result) if result
        end

        # Notify observers
        changed
        notify_observers(self)
      end
    end
Perform a single step
 TODO: Refacor if/else/if/else ... hacky mess here