As a program runs its evolving state resides largely in an address space that the program lives in and owns. It remembers what it is doing largely by putting new bytes in the slots of its address space—keeping notes to itself as it were. For us, memory refers to the address space used by the program under consideration.
These days addresses are binary numbers. Today an address is usually 4 bytes long but sometimes 8 bytes long. Such a number is stored in successive slots (slots with consecutive addresses). Whether the most significant or least significant byte is placed in the slot whose address is smallest, is a continuing battle. It is referred to as Big or Little endian issue. In big endian architectures the most significant part of a number or address is stored in the smallest address. In little endian systems the least significant byte of the number is put in the low address. In either case the smallest slot address is used to refer to the four slots. It is good or even mandatory for this address to be a multiple of 4.
Usually each slot has just one address, some addresses may not correspond to any slot. (Sometimes one slot has more than one address which is called aliasing.) Unusual things happen to programs that use an address with no associated slot.
Except for a few special instructions, instructions are fetched from slots in the address space whose addresses are consecutive. The branch above is one of these and the subroutine call is another. On most machines the address of the subroutine is in the instruction. After executing the call the machine is fetching instructions from the subroutine and the address following the call instruction has been placed in some particular register awaiting an instruction at the routine’s end to use the value to resume obeying the instructions after the call. Input to and output from the routine is typically in registers.