Is this a homework question?
Memory mapped I/O is mapped into the same address space as program memory and/or user memory, and is accessed in the same way.
I/O mapped I/O (also known as port mapped I/O) uses a separate, dedicated address space and is accessed via a dedicated set of microprocessor instructions.
If you're using a microprocessor or microcontroller that doesn't support port mapped I/O, then you have to use memory mapped I/O.
Microprocessors that support port mapped I/O include Intel x86 and compatible processors, and also the Zilog Z80 and Intel 8080.
Microprocessors that DON'T support port mapped I/O (and hence require the use of memory mapped I/O) include the Motorola 6800 and the MOS Technology 6502.
The advantage of port mapped I/O is that it makes for neater code and requires fewer external components to implement I/O. However, it adds to the complexity and pin count of the microprocessor itself.