Принципы работы системы IBM/370
Описание логической структуры вычислительных машин Системы 370. Особенности мультипроцессирования. Команды общего назначения и управления системой, обработки десятичных данных и команды с плавающей точкой. Средства обработки машинных ошибок (коррекция).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | книга |
Язык | русский |
Дата добавления | 12.06.2014 |
Размер файла | 658,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
При формировании адреса базовый адрес и индекс рассматриваются в качестве 24-битовых положительных двоичных чисел. Аналогично смещение рассматривается в качестве 12-битового положительного двоичного числа, к которому слева приписывается 12 нулей. Все три компонента складываются как 24-битовые двоичные числа, причем переполнение в результате игнорируется. Сумма всегда имеет 24 бита. Биты адреса нумеруются числами 8-31 в соответствии с нумерацией битов базового адреса и битов индекса в общем регистре.
Нули в любом из полей X2, B1 и B2 указывают на отсутствие соответствующего компонента адреса. В этом случае при формировании адреса должно быть использовано нулевое значение соответствующего компонента независимо от содержимого общего регистра 0. Использование смещения, равного 0, ничем не отличается от использования смещений, не равных 0.
В команде может быть задан один и тот же общий регистр как для вычисления адреса, так и в качестве хранилища операнда. Вычисление адреса осуществляется до выполнения операции.
Если в определении команды нет иных указаний, вычисленный адрес операнда определяет операнд в основной памяти. Если операнд находится в основной памяти, то адрес указывает его самый левый байт. В командах перехода адрес второго операнда служит адресом, по которому осуществляется переход, в команда сдвига второй операнд задает величину сдвига.
3.2 Слова состояния программы
Общее назначение слова состояния программы (PSW) - управление последовательностью выборки команд, а также фиксация и индикация состояния технических средств по отношению к выполняемой в настоящий момент программе. PSW, используемое в данный момент времени, называется текущим. Запоминая текущее PSW во время прерывания, можно сохранить состояние процессора для последующего анализа. Загружая новое PSW или его часть, можно изменить состояние процессора полностью или частично.
3.3 Выполнение команд
Адрес команды в текущем PSW определяет ячейку, из которой производится выборка команды. Затем адрес команды увеличивается на количество байтов в этой команде, чтобы получить адрес следующей команды. Данная команда выполняется, и те же действия повторяются с использованием нового значения адреса команды.
Переходы
Обычная последовательность выполнения команд нарушается командами перехода с целью обращения к подпрограмме, при выполнении цикла, а также в том случае, когда в результате анализа информации требуется принять решение.
Обращение к подпрограммам осуществляется командой ПЕРЕХОД С ВОЗВРАТОМ, которая позволяет не только ввести адрес новой команды, но и сохранить адрес возврата и всю необходимую для возврата информацию.
Принятие решений производится с помощью команды УСЛОВНЫЙ ПЕРЕХОД. Эта команда проверяет двухбитовый признак результата, который отражает результат при выполнении большинства арифметических и логических операций, а также операций ввода-вывода. В зависимости от результата выполнения этих операций устанавливается одно из четырех возможных значений признака результата, а команда условного перехода может использовать эти значения в качестве критерия для выполнения перехода. Например, признак результата отражает такие случаи, как неравенство результата операции нулю, первый операнд больше второго или не равен ему, переполнение, занятость канала, нулевое значение результата операции. Однажды установленный признак результата не изменяется до тех пор, пока не встретится команда, которая установит другое его значение.
Двухбитовый признак результата может иметь четыре значения: 0, 1, 2 и 3. Каждое значение признака имеет определенный смысл только для операции, в результате выполнения которой он установлен.
Управление циклом можно осуществить с помощью команды УСЛОВНЫЙ ПЕРЕХОД, анализируя результаты операций над адресами или производя счет числа повторений. Для некоторых часто встречающихся комбинаций арифметических действий и проверок результата предусмотрены команды ПЕРЕХОД ПО СЧЕТЧИКУ и ПЕРЕХОД ПО ИНДЕКСУ. Такие переходы в силу большой специализации в определенных случаях значительно повышают производительность вычислительной установки.
Прерывания
Система прерываний позволяет изменять состояние процессора при возникновении определенных условий вне системы, во внешних устройствах или в нем самом. Насчитывается шесть классов прерываний: прерывания при обращении к супервизору, программные прерывания, внешние прерывания, прерывания ввода-вывода, прерывание повторного пуска и прерывания от схем контроля.
Каждому классу прерываний соответствуют два PSW, которые называются старым и новым и помещаются в специально отведенных для этой цели ячейках реальной основной памяти. Прерывание любого класса состоит в запоминании информации, указывающей причину прерывания, в запоминании текущего PSW в ячейке, предназначенной для старого PSW, и выборке нового PSW в качестве текущего.
Старое PSW хранит всю необходимую информацию о состоянии процессора в момент прерывания. Если в конце программы, получившей управление в результате прерывания, имеется команда, заменяющая текущее PSW на старое, то процессор восстановит состояние, предшествующее прерыванию, и выполнение прерванной программы будет продолжено.
3.4 Порядок обращения в память
С точки зрения логики работы процессор обрабатывает команды по одной, причем выполнение следующей команды не начинается до тех пор, пока не будет выполнена предыдущая команда; после осуществления перехода выполняется команда, указанная адресом перехода. Точно так же прерывание происходит после выполнения предыдущей команды, но до начала выполнения последующей. Последовательность событий, соответствующая такому порядку работы, иногда называется концептуальной последовательностью или концептуальным порядком.
Хотя в зависимости от ширины физического доступа к памяти и совмещения выполнения команды с доступом к памяти могут возникать вариации фактического хода обработки, каждая операция выполняется последовательно в том смысле, что по отношению к процессору, выполняющему данную последовательность операций, выборка последующей команды происходит после окончания выполнения предыдущей операции, за исключением особых случаев, рассмотренных в разделе “Взаимосвязь обращений по логическим и реальным адресам” главы 5. Полученные результаты будут такими же, как если бы операции выполнялись в концептуальном порядке. В частности, команда в памяти может быть модифицирована командой, которая непосредственно ей предшествует.
В очень простых вычислительных машинах, где нет совмещения операций, концептуальный и действительный порядки полностью совпадают. Однако в более сложных машинах совмещение операций, буферизация операндов и результатов, а также сравнимость времени выполнения операций с временем распространения сигналов между блоками технических средств, могут вызывать значительные расхождения между концептуальным и фактическим порядками. В таких машинах предусмотрены специальные схемы, выявляющие зависимость между операциями и обеспечивающие получение тех же результатов, как и в случае выполнения операций в концептуальном порядке. Однако по отношению к каналам и другим процессорам фактическая последовательность действий может отличаться от концептуальной.
При работе одного процессора можно, как правило, допустить, что выполнение каждой команды происходит как неделимое событие. Но фактически выполнение команды может распадаться на последовательность отдельных шагов. В некоторых командах выборка и запись операндов осуществляются по частям и поэтому между выборкой и записью результата может произойти определенная задержка, вследствие чего другой процессор или канал может натолкнуться на промежуточные или частично завершенные результаты.
Когда программа, выполняемая одним процессором, взаимодействует с программой канала или другого процессор, то в этой программе должно учитываться, что одна операция может слагаться из серии обращений к памяти, что обращение к памяти может, в свою очередь, состоять из серии доступов и что концептуальная и действительная последовательности осуществления этих доступов могут отличаться друг от друга. Обращения к памяти, связанные с выполнением команды, бывают следующих типов: выборка команды, выборка из таблиц динамической переадресации, обращение к операндам в памяти и доступ к ключу защиты памяти.
Выборка команды
Выборка команды состоит в том, что по адресу команды, указанному в текущем PSW, производится выборка одного, двух или трех полуслов. Доступ к полю команды, содержащему непосредственный операнд, выполняется в процессе выборки команды. Если же команда и ее операнд расположены в одной и той же ячейке, то из этой ячейки производится выборка как команды, так и операнда. Выборка подчиненной команды при выполнении команды ВЫПОЛНИТЬ считается выборкой команды.
Байты команды могут подвергаться выборке порознь (группами в различных сочетаниях) и не обязательно в направлении слева направо. В некоторых случаях при однократном выполнении команды выборка ее производится несколько раз: например, выборка может производиться с целью проверки таблицы динамической переадресации или обнаружения программного события; для действительного выполнения операции выборка команды может быть в этом случае произведена дополнительно.
Выборка команд не обязательно производится в соответствии с концептуальной последовательностью их выполнения; не обязательно также и то, чтобы выборка команды производилась всякий раз, когда она выполняется. Выборка какой-либо команды, в частности, может предшествовать обращению к операнду в памяти для выполнения команды, которая концептуально должна быть выполнена раньше. Выборка данной команды предшествует любым обращениям к операндам в памяти, которые вызваны выполнением команд, концептуально следующих за данной командой.
Нет никаких ограничений на количество команд, которые могут быть выбраны предварительно, и на количество копий, которые могут быть сделаны с содержимого одной и той же ячейки памяти. Это может привести к тому, что будет выполнена не самая последняя копия команды. Запись в память, выполненная каналом или другим процессором, не обязательно изменяет копию команды, выборка которой произведена предварительно. Если, однако, запись в память является концептуально более ранней и производится тем же самым процессором с использованием того же самого логического адреса, по которому произведена выборка команды, то учитывается модифицированная информация.
Все копии предварительно выбранных команд сбрасываются в тех случаях, когда процессор переходит в режим переадресации или выходит из этого режима, когда в управляющих регистра 0 и 1 изменяются параметры переадресации (при установленном режиме переадресации), при временной отмене совмещения, а также когда процессор переходит в состояние “работа”.
Замечания по программированию
Далее приводятся примеры влияния предварительной выборки команд на выполнение программы.
Если программа, выполняемая одним из процессоров, изменяет содержимое некоторой ячейки памяти и затем устанавливает флажок, указывающий на это изменение, то программа, выполняемая другим процессором, может проверить, установлен ли флажок, и, обнаружив, что он установлен, осуществить переход к этой области с модифицированным содержимым, но выполнить команду, отвечающую ее начальному содержимому. Кроме того, если канал или другой процессор модифицирует команду, то данный процессор имеет возможность распознавать изменение не во всех, а только в части битов этой команды.
Когда программа модифицирует содержимое ячейки памяти, используя для этого один логический адрес, а потом делает выборку из нее по другому логическому адресу, то такая модификация не всегда распознается, даже если модификацию и выборку выполняет один и тот же процессор.
Процессор может осуществить предварительную выборку команды, а затем другой процессор может до выполнения этой команды изменить ключ памяти. В результате может оказаться, что процессор выполнит команду из защищенной области памяти.
Выборка из таблиц динамической переадресации
При выборке из таблиц динамической переадресации (DAT) соблюдаются следующие правила:
1. Строки таблицы могут быть предварительно выбраны в буфер быстрой переадресации (TLB), и, если не выполнена команда ОЧИСТКА TLB, их можно использовать без повторной выборки из памяти. Выборка строк таблицы DAT может производиться в любое время, когда они присоединены и доступны, в частности, во время выполнения концептуально предшествующей команды; их выборка не обязательно производится в концептуальном порядке.
2. Выборка строк таблицы DAT из основной памяти может производиться порциями - по одному байту за выборку. Однако в промежутках между этими выборками ни один процессор не может выполнить запись операнда в ту же ячейку.
3. Выборка строки таблицы DAT может производиться при каждом использовании адреса, в частности при предварительном тестировании, если оно выполняется, а также при каждом обращении к каждому байту каждого операнда.
4. Выборка строки таблицы DAT может производиться даже после того, как выполнены некоторые обращения к операндам текущей команды. Эта выборка может произойти непосредственно перед фактическим обращением к байту, при котором используется строка таблицы DAT.
5. Выборка строки таблицы страниц предшествует обращению к странице. Когда строка таблицы страниц из неактивной становится активной, ее выборке предшествует выборка соответствующей строки таблицы сегментов.
При обработке второго операнда команды ЗАГРУЗКА РЕАЛЬНОГО АДРЕСА выборка строки таблицы сегментов предшествует выборке строки таблицы страниц. Выборка этих строк осуществляется в соответствии с приведенным выше правилом 2. Эти выборки сочетаются с другими обращениями, как и выборки операндов из памяти.
Доступ к ключу памяти
Обращение к ключу памяти подчиняется следующим правилам.
1. Каждый раз, когда производится обращение к основной памяти, при котором действует защита, одновременно с обращением к ячейке памяти проверяются 5 битов, связанных с этой ячейкой и служащих для управления доступом.
2. Когда выполняется запись, то одновременно с операцией записи в соответствующем ключе памяти устанавливается бит изменения.
3. Команда УСТАНОВИТЬ КЛЮЧ ПАМЯТИ вызывает одновременную установку в ключе памяти бита изменения и 5 битов для управления доступом. При выполнении команды УСТАНОВИТЬ КЛЮЧ ПАМЯТИ доступ к ключу памяти осуществляется согласно правилам, которые действуют при обращении к операндам памяти для записи, и является обращением с одноразовым доступом.
4. Команда ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ позволяет получить образ поля, состоящего из 5 битов, служащих для управления доступом, и бита изменения. Доступ к ключу памяти по команде ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ осуществляется согласно правилам, которые действуют при обращении к операндам, хранящимся в памяти, с целью их выборки, и является обращением с одноразовым доступом.
5. При выполнении команды СБРОСИТЬ БИТ ОБРАЩЕНИЯ не изменяются никакие биты ключа памяти, кроме бита обращения. Доступ к ключу памяти осуществляется по правилам, которые действуют при обращении к операндам, хранящимся в памяти, с целью их модификации. Бит обращения является единственным модифицируемым битом.
Учет обращений с помощью бита обращения не всегда бывает полным, и правила установки бита обращения не всегда согласуются с правилами, определяющими единовременность в действиях процессора. Но в большинстве случаев момент обращения к памяти приблизительно совпадает с моментом его регистрации.
Обращение к операндам, хранящимся в памяти
Обращение к операндам, хранящимся в памяти, представляет собой обращение с целью выборки или записи одного или нескольких явно заданных операндов из соответствующих ячеек основной памяти, которые указаны командой.
В процессе выполнения команды производится полная или частичная выборка ее операндов из памяти. Промежуточные результаты могут сохраняться для последующей модификации, а окончательные результаты могут быть временно задержаны до помещения их в основную память. Запись, выполняемая каналами или другими процессорами, не всегда влияет на эти промежуточные результаты. Различаются три типа обращения к операндам, находящимся в памяти: обращения к памяти для выборки, обращения к памяти для записи и обращения к памяти для модификации.
Обращение к памяти для выборки операнда
Когда байты операнда, находящегося в памяти, участвуют в выполнении команды только в качестве источника информации, обращение к ним называется обращением к памяти для выборки операнда. Если в описании команды указано, что при ее выполнении возможен особый случай при выборке, то это означает, что при реализации этой команды происходит обращение для выборки.
Если к байту осуществляется обращение для выборки, то доступ ко всем битам этого байта производится одновременно. Если операнд состоит более чем из одного байта, выборка из основной памяти может производиться порциями - по одному байту за выборку. Если нет специальных указаний, то выборка байтов может идти в произвольном порядке. Для некоторых команд указано, что при обращении к операнду, находящемуся в памяти, осуществляется единовременная в пределах блока выборка всех байтов операнда. В этом случае в промежутках между выборками байтов, входящих в блок, не допускаются записи в этот блок со стороны другого процессора.
Обращение к памяти для записи операнда
Когда байты операнда, хранящегося в памяти, участвуют в выполнении команды только постольку, поскольку их заменяет результат ее выполнения, обращение к ним называется обращением к памяти для записи операнда. Если в описании команды указано, что при ее выполнении возможен особый случай при записи, то это означает, что при выполнении этой команды происходит обращение для записи.
Если к байту производится обращение для записи, то доступ ко всем битам этого байта осуществляется одновременно. Если операнд состоит более чем из одного байта, запись его в основную память может осуществляться порциями по одному байту при каждой записи. Если нет специальных указаний, запись байтов в память может идти в произвольном порядке. Для некоторых команд указано, что при обращении к памяти осуществляется единовременная в пределах блока запись байтов операнда. В этом случае в промежутках между записью байтов, входящих в блок, не допускается записи или выборки со стороны другого процессора.
Процессор может задержать запись результатов в основную память. При этом время задержки не ограничивается. Эта задержка не влияет на порядок, в котором производится запись результатов в основную память. Результаты выполнения команды записываются в основную память после занесения туда результатов предыдущей команды и до того, как туда же будут записаны результаты выполнения последующей команды. Запись результатов выполнения отдельной команды происходит в порядке, указанном для этой команды.
До тех пор пока процессор не запишет в ячейку реальной основной памяти всю информацию, предназначенную для этой ячейки, выборка операндов или строк таблицы DAT из этой области не производится. Предварительно выбранные команды могут быть модифицированы до того, как будут модифицированы их образы в памяти.
Обращение для записи завершается в обязательном порядке только при временной отмене совмещений или перед тем, как процессор перейдет в состояние “стоп”.
Обращение к памяти для модификации операнда
При выполнении некоторых команд область памяти, содержащая операнд, выступает и как источник информации, и как область, в которую заносится результат. В этих случаях обращение складывается, во-первых, из выборки, во-вторых, из записи. Сочетание этих двух доступов называется обращением для модификации. Команды ПЕРЕСЫЛКА ЗОН, ПЕРЕКОДИРОВАТЬ, ИЛИ, ИЛИ НЕПОСРЕДСТВЕННОЕ и СЛОЖЕНИЕ ДЕСЯТИЧНОЕ вызывают модификацию содержимого области первого операнда. В большинстве случаев в период между выборкой и записью не предусматривается никакого специального блокирования доступа к памяти со стороны каналов и других процессоров. Если в описании команды указано, что при ее выполнении возможны особый случай при выборке и особый случай при записи, это означает, что при выполнении этой команды происходит обращение для модификации.
Выборка и запись при обращении для модификации необязательно следуют одна за другой, поэтому канал или другой процессор может вклиниться между выборкой и записью, обращаясь к той же ячейке памяти. Вклиниться могут доступы как для выборки, так и для записи, выполняемые в ходе обращения с целью как просто модификации, так и модификации с блокированием.
Существуют три команды, осуществляющие модификацию так, что при их выполнении производится блокирование доступа к модифицируемой области памяти. Команда ПРОВЕРИТЬ И УСТАНОВИТЬ вызывает модификацию с блокированием, а команды СРАВНЕНИЕ С ОБМЕНОМ и СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ вызывает модификацию с блокированием, если они устанавливают признак результата, равный 0.
При обращении для модификации с блокированием доступы для выборки и записи не обязательно следуют непосредственно друг за другом, однако на доступы к блокируемой области памяти накладываются ограничения. Между доступом для выборки и доступом для записи, производимыми в ходе обращения к памяти с целью модификации с блокированием, запрещен доступ для выборки другому процессору, выполняющему модификацию с блокированием, и любой доступ другому процессору с целью записи. В период блокирования процессор может выполнять выборки, которые являются этапом модификации с блокированием. В частности, такие выборки имеют место в ходе выполнения команд СРАВНЕНИЕ С ОБМЕНОМ и СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ, которые заканчиваются с признаком результата 1. В период блокирования разрешен доступ системе ввода-вывода, причем как для выборки, так и для записи.
Если не считать ограничений, о которых говорилось выше, доступы для выборки и для записи, связанные с модификацией, подчиняются тем же правилам, которые действуют при выборках и при записях.
Замечания по программированию
Когда два процессора пытаются модифицировать содержимое одной и той же ячейки основной памяти, выполняя команду, которая вызывает выборку и последующую запись модифицированной информации, оба они могут сначала осуществить выборку, а потом производить обращение для записи. В этом случае изменения, внесенные первым процессором при записи результата, теряются. Точно так же, если один процессор модифицирует содержимое поля, а другой производит запись в это поле в промежутке между выборкой и записью в ходе модификации, которая выполняется первым процессором, то результат записи теряется. Если вместо доступа для записи процессор осуществляет модификацию общего поля памяти с блокированием в период между выборкой и записью, которые выполняются другим процессором с целью модификации, то любые изменения содержимого поля, осуществленные в результате модификации с блокированием, теряются.
В общее поле основной памяти входят только те байты, которые входят в поле результата выполнения обеих операций. Однако все биты общего байта считаются общими, даже если среди этих битов нет ни одного, который бы модифицировался обеими операциями. Например, если один из процессоров выполняет команду ИЛИ и в поле непосредственного операнда содержится шестнадцатеричный код 80, а другой процессор выполняет команду И, причем в поле непосредственного операнда содержится шестнадцатеричный код FE и первые операнды в обеих операциях совпадают, то один из модифицированных результатов может быть потерян.
Если доступ для записи составляет часть обращения для модификации со стороны процессора, то выполнение записи не зависит от того, отличается ли информация, которая должна быть записана, от первоначального содержимого области или нет.
Примеры случаев осуществления доступа к памяти для записи:
а) выполняется команда ИЛИ (OI или OC) и все биты второго операнда равны нулю;
б) выполняется команда ИЛИ (OC) и содержимое полей первого и второго операндов совпадает;
в) выполняется команда ПЕРЕКОДИРОВАТЬ и для некоторых байтов первого операнда аргумент равен функции.
В результате выполнения команд ПРОВЕРИТЬ И УСТАНОВИТЬ, СРАВНЕНИЕ С ОБМЕНОМ, СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ два процессора модифицируют общее поле памяти. Для того чтобы ни один из процессоров не потерял измененной информации, оба процессора должны пользоваться командой так, чтобы осуществлялась модификация с блокированием. Канал может, однако, обращаться к той же самой области памяти между выборкой и записью и при модификации с блокированием.
Согласованность операндов в памяти
Обращения с одноразовым доступом
Обращения за операндами в память являются обращениями с одноразовым доступом при выполнении всех команд, за исключением команд обработки десятичных данных. Говорят, что обращение для выборки является обращением с одноразовым доступом, если величина, получаемая в результате операции, складывается из величин, полученных в результате однократных доступов к каждому байту поля данных. В случае, когда операнды перекрывают друг друга, доступ в занятую ими область памяти может осуществляться по одному разу для каждого операнда. Обращение для записи называется обращением с одноразовым доступом, если в пределах поля данных осуществляется однократный доступ для записи к каждому байту. Обращение для модификации называется обращением с одноразовым доступом, если доступ как при выборке, так и при записи является одноразовым.
Обращения к памяти по командам обработки десятичных данных и командам ПРЕОБРАЗОВАНИЕ В ДВОИЧНУЮ, ПРЕОБРАЗОВАНИЕ В ДЕСЯТИЧНУЮ, ПЕРЕСЫЛКА СО СДВИГОМ, УПАКОВАТЬ и РАСПАКОВАТЬ не обязательно являются обращениями с одноразовым доступом.
Когда обращение за операндом в память не является обращением с одноразовым доступом, содержимое байта может быть различным при каждом доступе для записи; следовательно, каналы или другие процессоры могут обнаружить в некотором байте промежуточные результаты.
Замечания по программированию
Когда к некоторому байту, изменяемому каналом или другим процессором, осуществляется несколько обращений для выборки, результат не обязательно является тем, который был бы получен, если бы производилась выборка битов по отдельности. Например, процесс выполнения команды УМНОЖЕНИЕ ДЕСЯТИЧНОЕ может состоять из повторных сложений и вычитаний, каждое из которых может вызвать выборку второго операнда из памяти.
Единовременные обращения в пределах блока
При некоторых обращениях доступы ко всем байтам в пределах блока (группы последовательно расположенных байтов) будут единовременными для данного процессора, т.е. одновременными по отношению к другим процессорам. Однако может оказаться, что по отношению к системе ввода-вывода каждому доступу отвечает обмен отдельными частями вплоть до байта. Когда обращение для выборки является единовременным в пределах блока, то не допускается обращение другого процессора в этот блок, пока производится выборка байтов из этого блока. Однако допускается доступ между выборками к байтам в пределах блока со стороны системы ввода-вывода.
Если обращение для записи является единовременным в пределах блока, то не допускается доступ к блоку с целью выборки или записи в то время, пока в этот блок производится запись. Между записями могут осуществляться доступы к байтам блока со стороны системы ввода-вывода.
Обеспечение согласованности
Обращение к операндам, хранящимся в памяти, при выполнении всех команд формата S и всех команд формата RX, за исключением команд ПРЕОБРАЗОВАНИЕ В ДЕСЯТИЧНУЮ и ПРЕОБРАЗОВАНИЕ В ДВОИЧНУЮ, являются единовременными в пределах блока при условии, что адреса операндов установлены по границе, целочисленной относительно длины операнда.
Все доступы в память за операндами при выполнении команд СРАВНЕНИЕ С ОБМЕНОМ и СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ являются единовременными в пределах блока.
При выполнении команд СРАВНЕНИЕ СИМВОЛОВ ПО МАСКЕ, ПРОЧИТАТЬ СИМВОЛЫ ПО МАСКЕ и ЗАПИСЬ В ПАМЯТЬ СИМВОЛОВ ПО МАСКЕ, а также команд ЗАГРУЗКА и ЗАПИСЬ В ПАМЯТЬ ГРУППОВАЯ доступ к операндам в памяти осуществляется в направлении слева направо и по отношению к действиям всех процессоров доступ ко всем байтам в пределах каждого двойного слова оказывается единовременным.
Если нет перекрытия с разрушением, доступ к операндам команды ПЕРЕСЫЛКА осуществляется следующим образом:
-- доступ к первому операнду идет в направлении слева направо; доступ ко всем байтам в пределах некоторого двойного слова оказывается единовременным;
-- доступ ко второму операнду осуществляется слева направо, и выборка всех байтов в пределах двойного слова второго операнда, пересылаемых в единственное двойное слово первого операнда, оказывается единовременной. Таким образом, если первый и второй операнды смещены по отношению к границе двойного слова на одно и то же целое число байтов, выборка второго операнда из двойного слова оказывается единовременной в пределах двойного слова. Если смещение по отношению к границе двойного слова отличается на 4 байта, то выборка второго операнда оказывается единовременной в пределах слова.
Считается, что перекрытие с разрушением происходит в том случае, когда ячейка памяти, отведенная для результата, используется как источник информации уже после того, как результаты записаны в память, и при этом допускается, что обработка выполняется побайтно.
Если оба операнда команд ПЕРЕСЫЛКА ДЛИННАЯ и СРАВНЕНИЕ КОДОВ ДЛИННОЕ начинаются на границе двойного слова, их длина равна целому числу двойных слов, а операнды команды ПЕРЕСЫЛКА ДЛИННАЯ не перекрываются, то по отношению к действиям всех процессоров доступ к операндам осуществляется единовременно в пределах двойного слова. Если при выполнении команды ИСКЛЮЧАЮЩЕЕ ИЛИ первый и второй операнды совпадают, то по отношению к действиям всех процессоров доступы к операндам единовременны в пределах двойного слова.
Замечания по программированию
Следует отметить, что, когда операнды в команде ИСКЛЮЧАЮЩЕЕ ИЛИ полностью совпадают, доступ к байтам в пределах поля может происходить три раза: первым будет выборка при модификации первого операнда, вторым - выборка второго операнда и третьим - запись при модификации первого операнда. По отношению к другим процессорам каждый из этих доступов является единовременным в пределах двойного слова, но необязательно, чтобы все три доступа осуществлялись непосредственно один за другим.
Взаимосвязь между доступами к операндам
Выборка операндов из памяти при выполнении команды предшествует всем обращениям к памяти за операндами для выполнения концептуально следующих команд. Запись операндов в память, указанная в одной команде, предшествует всем записям операндов в память для выполнения концептуально следующей команды, но не обязательно, чтобы эта запись предшествовала выборке операндов из памяти, заданных концептуально следующими командами. Однако для одной и той же ячейки реальной памяти запись операндов в память предшествует концептуально последующей выборке операндов из памяти.
Если в команде заданы два операнда, находящиеся в памяти и вызывающие обращения для выборки, то нельзя предсказать, выборка какого операнда произойдет в первую очередь или выборка какой части первого операнда будет произведена до начала выборки второго операнда. Когда два операнда перекрываются, выборка из общих ячеек памяти может произойти независимо для каждого операнда.
Если в команде заданы два операнда. находящиеся в памяти, первый из которых вызывает обращение для записи, а второй - для выборки, то нельзя предсказать, выборка какой части второго операнда произойдет до момента записи результатов. Если операнды перекрываются с разрушением, то выборка из памяти части второго операнда, общей с первым операндом, может не произойти.
Если два операнда команды находятся в памяти и к первому из них происходит обращение для модификации, а ко второму - обращение для выборки, то невозможно предсказать, выборка которого из них произойдет раньше и какое количество байтов первого операнда будет выбрано прежде, чем начнется выборка второго операнда. Точно так же невозможно предсказать, сколько байтов результата будет получено до его возвращения в память. В случае, когда имеет место перекрытие с разрушением, выборка из памяти общей части второго операнда может не произойти.
Замечания по программированию
Независимость выборки из одной области памяти каждого из двух операндов может влиять на выполнение программы при следующих условиях: если адреса двух операндов некоторой команды указывают на одну и ту же ячейку памяти, а канал или другой процессор в ходе выполнения команды изменяет содержимое этой ячейки памяти, то новое содержимое этой ячейки памяти может оказаться использованным одновременно со старым. Например, сравнение поля с самим собой может дать результат “не равно” или выполнение команды ИСКЛЮЧАЮЩЕЕ ИЛИ с совпадающими операндами может дать результат, отличный от 0.
3.5 Временная отмена совмещений
Выполнение некоторых команд, а также все прерывания вызывают в процессоре временную отмену совмещений, которая проявляется в том, что по отношению к каналам и другим процессорам все концептуально более ранние доступы процессора к памяти осуществляются до выполнения концептуально более поздних доступов. Временная отмена влияет на порядок, в котором процессор осуществляет все доступы к памяти и к ключу памяти, если не считать доступов для выборки строк таблиц динамической переадресации.
Временная отмена совмещений происходит при прерываниях и при выполнении следующих команд.
1. Общие команды: команда УСЛОВНЫЙ ПЕРЕХОД, в которой поля R1 и R2 содержат соответственно только единицы и только нули, команды СРАВНЕНИЕ С ОБМЕНОМ, СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ, ЗАПИСЬ В ПАМЯТЬ ПОКАЗАНИЙ ЧАСОВ, ОБРАЩЕНИЕ К СУПЕРВИЗОРУ и ПРОВЕРИТЬ И УСТАНОВИТЬ.
2. Команда ЗАГРУЗКА PSW.
3. Команды ОЧИСТКА TLB и УСТАНОВИТЬ ПРЕФИКС; эти команды вызывают также очистку буфера быстрой переадресации.
4. Все команды ввода-вывода.
5. Команды сигнализации: ПРЯМОЕ ЧТЕНИЕ, ПРЯМАЯ ЗАПИСЬ и СИГНАЛ ПРОЦЕССОРУ.
При временной отмене совмещений события происходят в следующем порядке.
Все концептуально более ранние по отношению к каналам и другим процессорам обращения данного процессора к памяти завершаются. В частности, завершаются все концептуально более ранние обращения к памяти для записи и изменения ключей.
Выполняются основные действия операции, вызвавшей временную отмену совмещений. При выполнении команды производится выборка операндов и завершается запись результатов. Исключение составляют команды ЗАГРУЗКА PSW и УСТАНОВИТЬ ПРЕФИКС, в которых выборка операндов может производиться до завершения более ранних записей, и прерывания, при которых код прерывания и соответствующие поля могут записываться в память до выполнения временной отмены совмещений. Выборка команды, вызывающей временную отмену совмещений, может произойти до выполнения этой команды и может предшествовать выполнению более ранних команд, но не может предшествовать завершению более ранней операции, также вызывающей временную отмену совмещений. В случае прерываний записываются старые PSW, код прерывания и прочая информация, если она имеется, а затем производится выборка нового PSW.
И, наконец, могут продолжаться выборка команд и доступы к операндам для выполнения концептуально следующих операций.
Временная отмена совмещений влияет на порядок доступов в память, управляемых процессором, в котором выполняется эта временная отмена совмещений. Она не влияет на порядок обращений к памяти, вызываемых программой в канале или другом процессоре.
Замечания по программированию
Последствия временной отмены совмещений:
1. Если некоторая команда изменяет содержимое ячейки памяти, используемой в качестве источника информации при выполнении следующей команды, и если для указания этой ячейки памяти при записи результата и при выборке команды используются различные адреса, то временная отмена совмещений, следующая за этим изменением, обеспечивает выполнение модифицированной команды.
2. Когда выполняется операция, вызывающая временную отмену совмещений для каналов и других процессоров, выборка команды и операндов, а также запись результатов представляются в таком порядке, который установлен для этой операции.
Запись в ячейку памяти, из которой производится выборка команды, вызывающей отмену совмещений, не всегда оказывает влияние на ход этой команды, если только временная отмена совмещений не была произведена после записи в эту ячейку памяти и до начала выполнения данной команды, вызывающей временную отмену совмещений.
Глава 4. Управление системой
В этой главе дается подробное описание совокупности средств, обеспечивающих переключение состояний системы, защиту программ от взаимного влияния и запуск отдельных операций посредством внешнего вмешательства, а также описание способов выполнения других функций, которые повышают эффективность использования системы, обеспечивают удобство работы с ней и расширяют возможности программирования в системе.
Информация, определяющая состояние процессора и его действия, содержится в слове состояния программы (PSW) и в управляющих регистрах. Дополнительная информация о состоянии и дополнительная управляющая информация находится в ячейках основной памяти, имеющих младшие адреса. Благодаря наличию состояния “супервизор”, а также тому, что выполнение определенных команд, изменяющих содержание PSW и управляющих регистров, разрешается только в этом состоянии, имеется возможность для устранения несанкционированных, преднамеренных или случайных изменений состояния системы.
Средства защиты позволяют защитить содержимое основной памяти от разрушения или неправильного использования, вызываемого ошибочной или несанкционированной записью или выборкой информации во время выполнения программы.
В системе предусмотрены следующие средства отсчета времени: аппаратные часы календарного времени, имеющие точность 1 мкс и общий цикл работы более ста лет; компаратор, позволяющий посылать сигнал программе при наступлении определенного момента времени; таймер CPU и интервальный таймер, которые обеспечивают оповещение программы по истечении заданных временных интервалов.
Кроме того, имеются средства обеспечения мониторных программ, регистрации программных событий и прямого управления. Средство обеспечения мониторных программ может быть полезным при выполнении различных измерений, а средство регистрации программных событий - при отладке программ.
Для приведения системы в готовность и проверки ее состояния предусматривается выполнение ряда функций, вызываемых внешним управлением. Это функции сброса, записи состояния и начальной загрузки программы.
4.1 Состояния процессора
Если не принимать во внимание средства, предназначенные для технического обслуживания оборудования, в процессоре различаются три пары взаимно исключающих состояний: “ожидание/счет”, “задача/супервизор” и “стоп/работа”. Эти состояния различаются характером влияния каждого из них на работу процессора и организацией их индикации и переключения.
Состояние “ожидание/счет”
В состоянии “счет” выборка и выполнение команд происходят обычным образом, а в состоянии “ожидание” команды не обрабатываются. В состоянии “ожидание” процессор доступен для прерываний, если прерывание от данного источника разрешено.
Процессор находится в состоянии “ожидание”, когда бит 14 PSW установлен в 1. Если бит 14 установлен в 0, процессор находится в состоянии “счет”.
Состояние “ожидание” индицируется лампочкой “ожидание”, расположенной на операторской части пульта управления системой. Никаких средств для изменения этого состояния оператором не предусмотрено.
Работа средств отсчета времени не зависит от того, находится ли процессор в состоянии “ожидание” или в состоянии “счет”.
Состояние “задача/супервизор”
Допустимость каждой из команд зависит от того, какое состояние установлено - “задача” или “супервизор”.
В состоянии “супервизор” разрешается выполнение всех команд. В состоянии “задача” допустимыми являются только те команды, выполнение которых не может повлиять на целостность системы и которые не связаны с функциями технического обслуживания оборудования или функциями, зависящими от типа используемой модели. Команды, не допустимые в состоянии “задача”, называются привилегированными; к ним относятся команды изменения и проверки ключей памяти, полей управления системой в PSW и управляющих регистрах, а также команды, относящиеся к средствам отсчета времени, обеспечению префиксации, средствам связи между несколькими процессорами и к управлению вводом-выводом.
Появление привилегированной команды в состоянии “задача” называется особым случаем по привилегированной операции и вызывает программное прерывание.
Процессор находится в состоянии “задача”, если бит 15 PSW равен 1. Если бит 15 равен 0, процессор находится в состоянии “супервизор”.
Работа средств отсчета времени не зависит от того, находится ли CPU в состоянии “задача” или “супервизор”.
Замечания по программированию
Переключение состояний “ожидание/счет” и “задача/супервизор” осуществляется только путем занесения нового PSW при выполнении команды ЗАГРУЗКА PSW, в случае прерывания, включая прерывание при обращении к супервизору, а также в процессе начальной загрузки программы.
Команда ЗАГРУЗКА PSW может использоваться только для перехода из состояния “супервизор” в состояние “задача” и из состояния “счет” в состояние “ожидание”, но не наоборот. Для того чтобы обеспечить возврат из программы обработки прерываний с помощью команды ЗАГРУЗКА PSW, в PSW этой программы должно быть задано состояние “супервизор”.
В состоянии “ожидание” процессор не обращается к основной памяти; поэтому состояние “ожидание” удобно использовать для приостановки работы до тех пор, пока не произойдет прерывание. Это не препятствует, однако, обращениям к памяти, формируемым при выполнении операций ввода-вывода и при работе интервального таймера. Для того чтобы можно было выйти из состояния “ожидание” без вмешательства оператора, процессор должен допускать прерывания.
Состояние “стоп/работа”
Если процессор находится в состоянии “стоп”, команды не выполняются и прерывания не обрабатываются. Исключение составляет прерывание повторного пуска. В состоянии “работа” осуществляется выполнение команд и обработка прерываний под управляющим воздействием бита ожидания и битов маски, а также режима выполнения команд, задаваемого с пульта системы.
Переход из состояния “стоп” в состояние “работа” или обратно может быть выполнен посредством ручного вмешательства или с помощью команды СИГНАЛ ПРОЦЕССОРУ. Состояние “стоп” не управляется и не идентифицируется посредством какого-либо бита в PSW.
Переход процессора из состояния “стоп” в состояние “работа” происходит в следующих случаях:
-- при нажатии кнопки пуска на пульте управления системой;
-- при получении приказа на пуск, задаваемого в команде СИГНАЛ ПРОЦЕССОРУ, адресованной данному процессору;
-- в случае прерывания повторного пуска, возникающего в результате нажатия кнопки повторного пуска или в результате выполнения приказа повторного пуска в команде СИГНАЛ ПРОЦЕССОРУ;
-- при успешном завершении начальной загрузки программы.
Переход процессора из состояния “работа” в состояние “стоп” происходит посредством выполнения операции останова в следующих случаях:
-- при нажатии на пульте управления системой кнопки “стоп”, когда процессор находится в состоянии “работа”;
-- при получении приказа “стоп” или “стоп с записью состояния”, задаваемого в команде СИГНАЛ ПРОЦЕССОРУ, адресуемой данному процессору, когда он находится в состоянии “работа”;
-- по окончании выполнения команды, если переключатель режима работы находится в положении покомандной работы.
Переход из состояния “работа” в состояние “стоп” происходит после завершения выполнения текущего элемента операции. Если процессор находится в состоянии “ожидание”, этот переход происходит немедленно при условии, что отсутствуют ожидающие обработки запросы на прерывания, от которых процессор не защищен маской. При выполнении команд, допускающих прерывание, количество данных, обрабатываемых при выполнении элемента операции, зависит от команды и модели.
Все ожидающие обработки незамаскированные запросы на прерывание принимаются, пока процессор находится в состоянии “работа”. Они вызывают запоминание старого PSW и занесение нового PSW перед тем, как процессор перейдет в состояние “стоп”. Когда процессор находится в состоянии “стоп”, запросы на прерывания могут игнорироваться или сохраняться для последующей обработки аналогично тому, как это имеет место в случае, когда процессор защищен от запросов на прерывание соответствующей маской.
Кроме того, процессор переходит в состояние “стоп” в следующих случаях:
-- после завершения сброса процессора, если только операция сброса не являлась частью процедуры начальной загрузки программы;
-- при установлении равенства адресов, если задан останов при их совпадении.
Выполнение сброса процессора описывается в разделе “Сбросы” этой главы, а описание останова по совпадению адреса дано в разделе “Переключатели сравнения адреса” главы 14.
Кроме того, в некоторых моделях процессор может временно переходить в состояние “стоп” при возникновении прерывания повторного пуска, когда процессор находится в состоянии “работа”.
Когда процессор находится в состоянии “стоп”, на пульте системы горит лампочка ручного управления.
Состояниям “стоп/работа” соответствуют еще два альтернативных состояния: состояние загрузки и состояние “стоп при сбое”. Процессор находится в состоянии “загрузка” при выполнении начальной загрузки программы. Состояние “стоп при сбое” устанавливается при возникновении ряда неисправностей, описанных в главе 12.
В процессоре имеются также и другие состояния, которые используются при техническом обслуживании, выполнении диагностических операций, а также вводе и индикации информации на пульте.
Интервальный таймер изменяет свои показания только тогда, когда процессор находится в состоянии “работа” или в состоянии “загрузка”.
Замечания по программированию
Перевод процессора в состояние “стоп” не влияет на выполнение программы, если только для нее не является существенным соотношение между временем выполнения и реальным временем.
Если в результате машинного сбоя процессор не может закончить выполнение команды, в состояние “стоп” можно перейти только посредством сброса. Подобная ситуация имеет место и в случае бесконечной последовательности прерываний, возникшей из-за неправильного формата PSW или постоянного условия прерывания, например от таймера CPU.
Выполнение начавшихся операций ввода-вывода продолжается и после того, как процессор перейдет в состояние “стоп”, вплоть до их завершения. Запросы на прерывания, возникшие в результате завершения операций ввода-вывода, сохраняются для последующей обработки.
4.2 Режимы управления
Предусмотрены два режима управления, определяющие структуру и использование управляющей информации и информации о состоянии: режим основного управления (режим BC) и режим расширенного управления (режим EC). Режим задается значением бита 12 в слове состояния программы.
Режимы управления определяют: назначение позиций в PSW, использование постоянно распределенных ячеек основной памяти для запоминания кода прерывания и кода длины команды при прерываниях некоторых классов, обработку прерываний ввода-вывода для каналов 0-5 и способ обработки битов обращения и изменения при выполнении команды ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ. Кроме того, средства регистрации программных событий и динамической переадресации могут использоваться только в режиме EC, поскольку соответствующие управляющие биты в PSW предусматриваются только в этом режиме.
Режим BC
В режиме BC слово состояния программы имеет тот же самый формат, что и в Системе 360. Код прерывания и код длины команды при прерывании заносятся в старое PSW. Исключение составляет PSW, запоминаемое при прерывании от схем контроля. Как и в Системе 360, прерывания от каналов 0-5 управляются битами 0-5 PSW; в результате выполнения команды ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ биты 29 и 30 регистра R1, соответствующие битам обращения и изменения, устанавливаются равными нулю. Однако во время прерываний, связанных с расширенными или новыми функциями, используется ряд дополнительных постоянно распределенных ячеек основной памяти, в том числе для запоминания кода прерывания от схем контроля, а также кода обращения к монитору и номера класса монитора при вызове монитора.
Нулевое состояние бита 12 PSW определяет режим BC. Этот режим предусмотрен во всех моделях процессоров.
Режим EC
В режиме EC поле маски каналов 0-5, поле кода прерывания и поле кода длины команды вынесены из PSW, а поля маски программы и признака результата расположены в PSW на других местах. Кроме того, в PSW введены два дополнительных бита: маска регистрации программных событий и бит режима переадресации.
Для запоминания кода прерывания и кода длины команды во время прерываний определенных классов выделены отдельные ячейки основной памяти. Прерывания ввода-вывода от каналов 0-5 управляются битом 6 PSW, а также битами маски каналов в управляющем регистре 2. Команда ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ обеспечивает получение значений битов обращения и изменения.
Режим EC обеспечивается с помощью аппаратных средств расширенного управления. Этот режим задается значением бита 12 PSW, равным 1.
Если средства расширенного управления установлены, процессор может работать как в режиме BC, так и в режиме EC в зависимости от состояния бита 12 PSW. Если же бит 12 PSW равен 1, а средства расширенного управления отсутствуют, фиксируется особый случай спецификации.
Замечания по программированию
Выбор режима управления влияет только на те функции, которые в двух режимах определяются как различные. Выбор режимов не влияет на работу средств, которые не связаны с битами управления, предусмотренными в PSW только для расширенного режима, а допустимость любой команды не зависит от выбора режима. Несмотря на то что динамическая переадресация не может быть задана в режиме BC, команды ЗАГРУЗКА РЕАЛЬНОГО АДРЕСА, СБРОСИТЬ БИТ ОБРАЩЕНИЯ и ОЧИСТКА TLB являются допустимыми и выполняют в этом режиме определенные функции. Команды УСТАНОВИТЬ МАСКУ СИСТЕМЫ, ЗАПИСЬ В ПАМЯТЬ И МОДИФИКАЦИЯ МАСКИ СИСТЕМЫ ЛОГИЧЕСКИМ УМНОЖЕНИЕМ и ЗАПИСЬ В ПАМЯТЬ И МОДИФИКАЦИЯ МАСКИ СИСТЕМЫ ЛОГИЧЕСКИМ СЛОЖЕНИЕМ выполняют заданную операцию над крайним левым байтом PSW независимо от того, какой режим указан в текущем PSW. Команда УСТАНОВИТЬ МАСКУ ПРОГРАММЫ устанавливает новую маску программы независимо от того, какие биты PSW заняты маской.
Подобные документы
Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
курсовая работа [266,9 K], добавлен 24.12.2013Общая характеристика и преимущество использования двоично-десятичных чисел с плавающей точкой. Разработка цифрового автомата. Функциональное назначение выводов корпуса МК51, арифметико-логического устройства, портов. Примеры деления данных чисел.
курсовая работа [719,3 K], добавлен 12.09.2015Сущность и роль бухгалтерской отчетности. Характеристика хозяйственных операции и системы обработки данных в первичные учетные документы. Особенности логической структуры реляционной базы данных. Описание методов работы с информационной системой.
курсовая работа [1,1 M], добавлен 26.04.2015Операции, осуществляемые при реализации алгоритмов цифровой обработки сигналов. Применение процессора ADSP-2106x для операций с фиксированной и плавающей точкой. Исключения при выполнении операций с плавающей точкой, режимы и границы округления.
реферат [35,2 K], добавлен 13.11.2009Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.
курсовая работа [78,9 K], добавлен 09.09.2014Проектирование блоков устройства контроля по модулю три матричного умножителя с сокращением вычислений для обработки мантисс чисел с плавающей точкой. Методика выполнения арифметических операций, порядок обработки мантисс по n-разрядным операндам.
курсовая работа [125,2 K], добавлен 24.09.2010Периоды применения средств вычислительной техники. Переход к новому поколению электронно-вычислительных машин. Системы, основанные на знаниях. Экспертные системы и искусственный интеллект. Этапы обработки данных на ЭВМ. Иерархическая структура знания.
презентация [170,6 K], добавлен 14.08.2013Общее представление о записи данных. Виды регистров и типов данных с плавающей точкой. Модель выполнения программы SIMD. Формат данных в памяти регистра с плавающей точкой. Состояние и управление потоковым разрешением. Поле управления округлением.
реферат [1,1 M], добавлен 06.01.2011Понятие машинной команды как закодированного по определенным правилам указания микропроцессору на выполнение некоторой операции или действия. Элементы машинных команд (код операции, операнд) и их виды (передачи данных, управления, арифметико-логические).
презентация [120,6 K], добавлен 14.10.2013Арифметические команды языка Assembler в архитектуре x86. Организация ветвлений и циклов в программах. Ввод строк с клавиатуры и команды пакетной обработки (строковые команды). Алгоритм вывода на экран в текстовом режиме с использованием средств BIOS.
контрольная работа [18,0 K], добавлен 05.07.2014