메모리에서 특정 포트로 블록을 보내려면 OTIR 명령을 사용할 수 있습니다. 이 명령을 사용하여 출력할 바이트 수를 지정할 수 있습니다. 예를 들어 VDP 명령을 실행하는 루틴에서 사용되는 데 사용되는 이 명령은 일반적으로 명령을 보내는 부분이 다음과 같습니다: 인덱스 레지스터, IX 및 IY는 유연한 16비트 포인터로 사용되어 메모리, 스택 프레임 및 데이터를 조작하는 기능을 향상시킵니다. 구조. 공식적으로, 그들은 16 비트로 처리되었습니다. 실제로 그들은 HL 레지스터와 동일한 방식으로 8 비트 레지스터의 쌍으로 구현되었다[33] HL 레지스터와 같은 방식으로, 이는 16 비트로 또는 별도로 높은 및 낮은 레지스터로 액세스 할 수 있습니다. 이진 opcodes (기계 언어)는 동일 하지만 새 opcode 접두사 앞에. [34] Zilog는 의도된 기능에 대한 opcodes 및 관련 암데모닉스를 발표했지만 H 및 L 레지스터의 조작을 허용하는 모든 opcode가 IX 및 IY 레지스터의 8비트 부분에 대해 동일하게 유효하다는 사실을 문서화하지 않았습니다. 예를 들어 opcode 26h 다음에 즉각적인 바이트 값(LD H,n)이 해당 값을 H 레지스터에 로드합니다. IX 레지스터의 opcode 접두사인 DD를 사용하는 이 2바이트 명령 앞에 는 IX 레지스터의 가장 중요한 8비트가 동일한 값으로 로드됩니다. 이에 대한 주목할 만한 예외는 동일한 명령에서 HL 및 IX 또는 IY 레지스터를 모두 사용하는 LD H(IX+d)와 유사한 명령입니다. [34] 이 경우 DD 접두사는 명령의 (IX+d) 부분에만 적용됩니다. XY 레지스터의 절반은 8 비트 산술, 논리 및 비교 지침에 대한 피연산자를 보유 할 수 있으며, 다른 용도로 일반 8 비트 레지스터를 절약 할 수 있습니다.

인덱스 레지스터의 상반부를 증분하고 감소시킬 수 있는 문서화되지 않은 기능 덕분에 법적 ADD/SBC XY, DE 또는 ADD/SBC XY, BC에 의존하지 않고도 일반 색인된 지침의 범위를 쉽게 확장할 수 있습니다. 더 빠르고 약간 까다로운 방법은 롤을 해제하지 않은 명령의 수를 조절하는 카운트를 기반으로 LDI 시리즈 내부로 이동하는 것입니다. 이것은 다음 예제에서 실행됩니다: 이것은 기술의 핵심입니다. MSB (높은 8 비트)와 LSB (낮은 8 비트)와 16 비트 번호를 감안할 때, 당신은 LSB에 의해 주어진 시간의 양을 반복하여 시작하고, B가 0에 도달하면 당신은 다시 MSB 시간을 할, 각각은 256 번 더 루프됩니다. 예: 이제 Z80이 IO 장치에 읽고 쓰는 방법을 이해했기 때문에 회로를 살펴볼 차례입니다.