def read_from_stack(self) -> int:
    """
    Read from the stack.

    Parameters
    ----------
    self: Processor, mandatory
        The instance of the processor containing the registers, accumulator etc

    Returns
    -------
    value
        the 12-bit number read from the stack

    Raises
    ------
    N/A

    Notes
    -----
    The stack pointer begins at 2, and then moves toward 0

        First Read             Second Read          Third Read
        +------------+       +------------+        +------------+
        |     d      | <--SP |      d     |        |      d     |
        |     b      |       |      b     |        |      b     | <---SP
        |     c      |       |      c     | <--SP  |      c     |
        +------------+       +------------+        +------------+

    """
    if self.STACK_POINTER == 2:
        self.STACK_POINTER = 0
    else:
        self.STACK_POINTER = self.STACK_POINTER + 1
    value = self.STACK[self.STACK_POINTER]

    return value