| 
 При описании 
портов - адресуемых элементов в пространстве вввода-вывода процессора, параметры портов и 
их интерфейс с системной шиной задаются в макроопределениях как константы PNum - адpес поpта; PType - тип поpта; PSize - pазpядность порта.
  Принципиальная схема платы 
расширения должна быть составлена точно для реализации вполне определенных функций и программа 
обмена процессора с платой должна точно учитывать все особенности схемы.
  По системной шине обмен может 
производиться только байтами (8 разрядов) или словами (16 разрядов) как результат выполнения 
различных команд ввода-вывода: 
  
in   al, dx ; ввод байта в регистр al из порта, адрес которого указан в 
регистре dx,
  
in   ax, dx ; ввод слова в регистр ax из порта, адрес которого указан в 
регистре dx,
  
out   dx, al ; вывод байта из регистра al в порт, адресуемый первым 
операндом,
  
out   dx, ax ; вывод слова из регистра ax в порт, адресуемый первым 
операндом.
  Для предотвращения ошибочного 
выполнения программы (например, искажения содержимого аккумулятора) или ошибочной реакции на 
команды ввода-вывода во внешних устройствах необходимо строго соблюдать соответствие между 
используемыми командами, схемной реализацией интерфейса порта платы с линиями данных системной 
шины и, соответственно, описанием порта в макроопределениях - выбором константы 
PSize, равной PS_Byte или PS_Word. Реально в разрабатываемых в практикуме системах разрядность портов 
равна 8. Поэтому в СВО по умолчанию считается, что поpты имеют pазpядность один байт. При этом 
следует иметь в виду, что при обращении к порту на запись или на чтение по линиям данных 
системной шины всегда передается 8 разрядов, независимо от того - все 8 разрядов порта 
подключены к шине или только некоторые их них.
  После разработки принципиальной 
схемы платы расширения становятся известными общее количество занимаемых адресов в пространстве 
ввода-вывода, причем всегда определяется также определенный набор базовых адресов (Абаз), на 
которые могут быть настроены как плата расширения, так и программа обмена с платой. Это 
позволяет определить для портов константы PNum, а также выбрать типы 
макроопределений Memory, MemDual, или 
System, в котором указывается эта константа. 
  В программе отладки между 
макроопределениями StartRedirect и StopRedirect 
команды ввода-вывода могут использоваться для обращения к различным типам внешних устройств:
  - Устройствам, расположенным на плате 
расширения. Для таких устройств типом макроопределения может быть Memory 
или MemDual.
  - Реальным устройствам ПК, которые 
в момент отладки используются только самой отлаживаемой программой. Вероятнее всего этими 
устройствами будут последовательный или параллельный порт ПК. Для таких устройств типом 
макроопределения может быть System. Однако задавать и контролировать 
состояния регистров этих устройств можно только имитацией в отладчике команд ввода-вывода. 
Поэтому более удобно использовать макроопределения Memory или MemDual.
  - Реальным устройствам ПК, которые 
в процессе отладки используются и другими программами. Чаще всего такими устройствами являются 
системный таймер и контроллер прерываний. Можно для описания портов этих устройства 
воспользоваться макроопределением System, однако настоятельно 
рекомендуется применять Memory.
  Макроопределения должны быть 
составлены для всех портов имеющихся на схеме и для всех адресов, которые встречаются в 
программе. Указание лишних адресов - адресов портов, которых нет на плате расширения, 
считается ошибкой. Однако, не возбраняется для используемых на плате интерфейсных БИС или 
портов ПК описывать все адресуемые порты, даже те, к которым нет обращений в программе 
обмена - эти порты имеются в БИС или портах и указание адресов свидетельствует о знании 
структуры этих устройств. | 
 | 
 |