Why can't an I/O Base Address Register be set to greater than 256 bytes on an x86 processor?
No, an I/O Base Address Register should never be set to greater than 256 bytes on an Intel x86 system.
Early Intel x86 microprocessors only supported 64K I/O address space. However, early IBM PCs used the first ten bits (SA<0-9>), thus limiting the maximum range of the I/O addresses to 1K. The upper 6 lines (SA<10-15>) were not decoded and were treated as DON'T CARE bits. The ultimate effect of this is the 1K space is "aliased", or repeated, 64 times.
The first 256 bytes of this 1K were used by the PC, leaving 768 bytes for ISA cards that decode the 10 bits only. When the full 16 bits were decoded on later machines, such as the XT, 16-bit PC cards could not use the initial 768 bytes or any of its 63 other aliases, as any 10-bit card would be sitting in all 64 spaces. The only solution was to use one of the 63 256 byte aliases. Therefore, to prevent I/O space conflicts, only the first 256 byte range of each 1K of I/O space is available.