Cтраница 2
При разработке листинга ПЗУМК программист должен составить микропрограмму, управляющую всеми БИС, входящими в состав микро - ЭВМ. Кроме этого, ему необходимо решить проблемы, связанные с распределением адресов ПЗУМК, взаимодействием БИС, учетом взаимного влияния их временных диаграмм и выбором правильной синхронизации, учитывающей особенности разрабатываемых микропрограмм. [16]
При составлении библиотечной подпрограммы удобно ее команды, числовые константы, константы переадресации, константы восстановления и рабочие ячейки считать расположенными в виде сплошных массивов. Из дальнейшего читатель увидит, что и для автоматического включения подпрограммы в состав основной программы такое распределение адресов подпрограммы представляет большие удобства. Будем поэтому предполагать, что в библиотечной подпрограмме команды, константы каждого вида ( числовые, переадресации, восстановления) и рабочие ячейки представлены в виде массивов. [17]
Адрес устройства указывает конкретное внешнее устройство и его контроллер в данном канале. Например, адрес указывает конкретный накопитель на магнитной ленте или магнитном диске либо канал связи. В качестве адреса устройства может быть использовано любое число в диапазоне от 0 до 255, что позволяет адресовать в одном канале до 256 устройств. Исключением являются некоторые байт-мультиплексные каналы, не рассчитанные на максимальную конфигурацию подканалов и, следовательно, имеющие ограничения на распределение адресов устройств в данном канале. [18]
Директива BADDR устанавливает счетчик для задания адреса буфера данного типа, длина которого в словах равна значению выражение. Тип буфера может быть или Modulo или Reverse-carry. Если счетчик не равен нулю, эта директива вычисляет базовый адрес, кратный 2 где 2к выражение. Будет выдана ошибка, если недостаточно памяти, чтобы задать базовый адрес. В отличие от других директив распределения адреса буферов, значение счетчика не увеличивается целочисленным выражением в поле операнда; в счетчике остается базовый адрес буфера. Блок памяти, предназначенной для буфера, ни каким значением не инициализируется. Если буфер Modulo определен, выражение должно попадать в диапазон 2 J. Если буфер Reverse-carry обозначен и мощность выражения не равна двум, будет выдано предупреждение. [19]
Магистральная архитектура, называемая также радиальной или архитектурой звезды [ 761, может реализовываться как на число -, так и на кодоимпульсных микропроцессорах. Все блоки МАП объединяются между собой по магистралям через микропроцессор. Под магистралью понимают один проводник или группу упорядоченных проводников для выполнения функциональных преобразований последовательно во времени. В отличие от кольцевой архитектуры, использующей однонаправленную магистраль, радиальная организуется через двунаправленную магистраль. Функциональные преобразования включают передачу информации ( данных), распределение адреса ( приоритетного уровня) и формирование управляющих сигналов. Данная структура, реализованная на кодоимпульсном микропроцессоре, имеет быстродействие на несколько порядков выше, чем кольцевая архитектура. Централизованное управление микропроцессором внешними блоками, организующими второй по приоритету уровень доступа, предполагает наращивание мощности программных и аппаратных средств вширь и вглубь соответственно размещением на втором или периферийном уровнях. [20]
Уже эта относительно простая задача должна быть разложена на очень примитивные этапы, чтобы она стала пригодна для решения на вычислительной машине. Составлением таких логических схем программы работа по программированию еще не доведена до конца, но мы уже приблизились к ЭВМ тем, что эта логическая схема отвечает требованию элементарности этапов. Вслед за выполнением этой задачи должно следовать машинное программирование, или кодирование. Логическая схема программы должна быть превращена в последовательность, машинных команд, записанных на специальном бланке. Часто целый ряд команд описывает то, что в блок-схеме программы обоз -, качается одним блоком. Команды указывают на такие действия, как считать ( данные), выписать, перенести, заслать в память, сложить, вычесть, умножить, разделить, перейти безусловно или при некотором условии1 к выполнению определенной программы. Кроме того, должно быть произведено распределение адресов используемой памяти под обрабатываемые данные. Ручное кодирование и распределение памяти - очень длительная, трудоемкая работа, которая требует большой внимательности. Однако имеется целый ряд возможностей рационализации программирования, о которых мы подробно расскажем в этом разделе. [21]