Так по этой доке и получается, что в В задаётся счётчик и он же (уменьшенный на 1) выставляется на старший байт адресной шины.
Register B can be used as a byte counter, and its decremented value is placed on the top half (A8 through A15) of the address bus.

Example
If Register C contains 07h, Register B contains 10h, the HL register pair contains 100014
and memory address 1000h contains 5914, then upon the execution of an OUTI instruction,
Register B contains 0Fh, the HL register pair contains 1001h, and byte 59h is written
to the peripheral device mapped to I/O port address 07h.
Получается, никак не выдать в 16 битный порт (к примеру, #FDFD) массив из 12 байт командой OUTI?