Выбрать главу

В табл. 6.4 приводятся состояния сигналов шины ISA для различных вариантов записи в порты ввода-вывода, проверенные экспериментальным путем. Вывод 16-разрядных данных выполнялся командой OUT DX, AXDX — адрес порта, в АХ — данные; AL содержит младший байт, АН — старший), вывод 8-разрядных — командой OUT DX, AL. Несколько неожиданные (для автора) варианты 3 и 6 с декрементом адреса, возможно, будут иметь место не на всех системных платах, но их следует иметь в виду при проектировании устройств, претендующих на глобальную совместимость. Правда на практике 16-битных передач по нечетным адресам обычно избегают (даже чисто подсознательно), и побочные эффекты от такого порядка маловероятны.

Таблица 6.4. Состояние сигналов при 8- и 16-битных обращениях к устройству ISA

Сигнал (шина) 1 цикл 2 цикл
1. Вывод 16-разрядных данных в 16-битное устройство по четному адресу
SBHE# L -
SA DX(A0=0) -
D[15:8] АН -
D[7:0] AL -
IOCS16# L -
2. Вывод 16-разрядных данных в 16-битное устройство по нечетному адресу ххх1, ххх5, xxx9, xxxD
SBHE# L H
SA DX(A0=1) DX+1 (A0=0)
D[15:8] AL 0
D[7:0] AL AH
IOCS16# L L
3. Вывод 16-разрядных данных в 16-битное устройство
SBHE# H L
SA DX+1 (A0=0) DX (A0=1)
D[15:8] 0 AL
D[7:0] AH 0
IOCS16# L L
4. Вывод 16-разрядных данных в 8-битное устройство по четному адресу
SBHE# L L
SA[1:0] DX(A0=0) DX+1 (A0=1)
D[15:8] AH AH
D[7:0] AL AH
IOCS16# H H
5. Вывод 16-разрядных данных в 8-битное устройство по нечетному адресу ххх1, ххх5, xxx9, xxxD
SBHE# L H
SA[1:0] DX(A0=1) DX+1 (A0=0)
D[15:8] AL 0
D[7:0] AL AH
IOCS16# H H
6. Вывод 16-разрядных данных в 8-битное устройство по нечетному адресу xxx3, ххх7, xxxB, xxxF
SBHE# H L
SA[1:0] DX+1(A0=0) DX(A0=1)
D[15:8] 0 AL
D[7:0] AH AL
IOCS16# H H
7. Вывод 8-разрядных данных в 16-битное устройство по четному адресу
SBHE# H -
SA[1:0] DX(A0=0) -
D[15:8] 0 -
D[7:0] AL -
IOCS16# L -
8. Вывод 8-разрядных данных в 16-битное устройство по нечетному адресу
SBHE# L -
SA[1:0] DX(A0=1) -
D[15:8] AL -
D[7:0] 0(AL?) -
IOCS16# L -