It looks like your question will be about the differences between I / O with memory mapping and IO with port mapping. Typically, two methods for the processor are connected to external devices that relate to memory or port input mapping.
Memory input / output
Memory I / Os use the same address space to address both memory and I / O devices. Therefore, when the address gets access to the CPU, it can refer to part of the physical RAM, but it can also refer to the memory of the I / O device (based on the I / O with memory in the Wiki ).
The value 0x16D34 in your first example will be virtual memory and will be mapped to physical memory. An I / O device will reference the same physical memory to provide access to the CPU.
Port mapping with port mapping
Port-mapped inputs / outputs use a separate dedicated address space and are accessible through a special set of microprocessor instructions. For 0x3F8 in the second example, this is the address of its own address specific to memory and input / output devices. This is not an address shared between memory and I / O, as previously mentioned in memory I / O. You can get more information in IO mapping with map mapping with IO port mapping
source share