@Notator, ben ce n'est pas non plus très clair quand tu disais "Mais il en est d'autres qui utilisent les registres HL (16 bits) en adressage, et permettent donc d'accéder au champ complet d'adressage du Z80 en I/O", car on pouvais sous-entendre adressage I/O pour HL et non mémoire. Exemple OUTI est plus ou moins équivalent à "LD t, (HL): DEC B : OUT (BC), t : INC HL". On a bien BC pour l'adressage 16-bit du port, HL étant la source en mémoire.
Notez également que B est décrémenté avant le OUT donc du coup si on veut faire un OUT sur $0200, il faut faire "LD BC,$0300 : OUTI". Quel merdier n'est-ce pas ? raison de plus pour "taire" sur l'adressage I/O 16-bit...
The contents of the HL register pair are placed on the address bus to select a location in memory. The byte contained in this memory location is temporarily stored in the CPU. Then, after the byte counter (B) is decremented, the contents of register C are placed on the bottom half (A0 through A7) of the address bus to select the I/O device at one of 256 possible ports. Register B may be used as a byte counter, and its decremented value is placed on the top half (A8 through A15) of the address bus. The byte to be output is placed on the data bus and written to a selected peripheral device. Finally, the register pair HL is incremented.