Анимация
JavaScript
|
Главная Библионтека Остановка работы компьютера. Пока оператор будет его перезапускать, все будет выглядеть так, как будто работает команда NOP (т. е. никакие действия не выполняются) . Команды ввода-вывода. MIX можно оснастить достаточно большим количеством устройств ввода-вьшода (причем все они поставляются за дополнительную плату). Каждому устройству соответствует определенный номер. Номер устройства Периферийное устройство Размер блока, слов t Накопитель на магнитной ленте номер t 100 (О < < < 7) d Диск или барабан номер d (8 < d < 15) 100 16 Устройство чтения перфокарт 16 17 Перфоратор 16 18 Принтер 24 19 Терминал ввода данных 14 20 Перфолента 14 Не каждый компьютер MIX будет оснащен всеми этими устройствами, поэтому время от времени мы будем специально упоминать о наличии тех или иных устройств. Некоторые из них нельзя использовать и для ввода, и для вывода. В приведенной выше таблице указаны фиксированные размеры блоков (в словах) для каждого устройства. При вводе или выводе с помощью таких устройств, как накопитель на магнитной ленте, диск или барабан, происходит чтение или запись полных слов (состоящих из пяти байтов и знака). Но устройства ввода-вьшода с номерами от 16 до 20 всегда работают в символьном коде, в котором каждый байт представляет один буквенно-цифровой символ. Поэтому с помощью каждого слова MIX передается сразу пять символов. Символьный код приведен в верхней части табл. 1, которая находится в конце данного раздела, и на форзацах в конце книги. Код 00 соответствует символу "и", который обозначает пробел. Коды 01-29 представляют буквы от А до Z, среди которых есть несколько греческих букв; коды 30-39 представляют цифры О, 1,..., 9, а следующие коды 40, 41, ... -знаки пунктуации и другие специальные символы. (Набор символов MIX отражает положение дел на то время, когда компьютеры еще не могли справиться со строчными буквами.) С помощью символьного кода нельзя прочитать или записать все возможные величины, которые могут содержаться в байте, так как некоторые комбинации не определены. Более того, некоторые устройства ввода-вьшода могут оказаться не предназначенными для обработки всех элементов из набора символов, например символы Е и П, встречающиеся в тексте, скорее всего, не будут восприняты устройством чтения перфокарт. Когда данные вводятся в символьном коде, всем словам присваиваются знаки "4-", а при выводе знаки игнорируются. Если данные вводятся с терминала, то набор в конце каждой строки символа возврата каретки приводит к тому, что остаток строки заполняется пробелами. Дисковые и барабанные устройства - это внешние устройства памяти, каждое из которых содержит блоки из 100 слов. При выполнении каждой команды IN, OUT или ЮС (см. ниже) конкретный блок из 100 слов, на который ссылается команда, определяется текущим содержимым гХ и не должен превосходить емкость используемого диска или барабана. • IN (input - ввод). С = 36; F = номер устройства. Эта команда реализует передачу информации из заданного устройства ввода в последовательно расположенные ячейки, начиная с ячейки М. Число ячеек, из которых передается информация, соответствует размеру блока для данного устройства (см. приведенную выше таблицу). Если предыдущая операция на этом же устройстве еще не закончена, то компьютер будет ожидать ее завершения. Время, в течение которого будет длиться передача информации, начатая по этой команде, зависит от скорости работы устройства ввода. Поэтому до момента завершения передачи информации программа не должна обращаться к этой инфор.мации в памяти. Не следует пытаться прочитать с магнитной ленты любой блок, следующий за блоком, который был записан последним. • OUT (output - вывод). С = 37; F = номер устройства. Эта команда реализует передачу информации из ячеек памяти, начиная с ячейки М, на заданное устройство вывода. Если сначала устройство не было готово, то компьютер будет ждать его готовности. Время, в течение которого будет длиться передача информации, начатая по этой команде, зависит от скорости устройства вывода. Поэтому до момента завершения передачи информации программа не должна производить изменения в соответствующих ячейках памяти. • ЮС (input-output control - управление вводом-выводом). С = 35; F = номер устройства. В случае необходимости компьютер ожидает, порса освободится заданное устройство. Затем выполняется управляющая ко.манда, которая зависит от типа применяемого устройства. В этой книге будут использоваться следующие примеры. Магнитная лента. Если М = О, то лента перематьшается в начало. Если М < О, то лента перематьшается на -М блоков (т. е. на М блоков назад) или в начало, в зависимости от того, что произойдет раньше. Если М > О, то лента перематывается вперед; перематывая ленту вперед, нельзя заходить дальше блока, который был записан последним. Например, последовательность команд "OUT 1000(3): ЮС -1(3); IN 2000(3)" записывает сто слов на ленту 3, а затем снова считывает их. Если надежность ленты не ставится под сомнение, то использование последних двух команд этой последовательности представляет собой медленный способ перемещения слов 1000-1099 в ячейки 2000-2099. Последовательность команд "OUT 1000(3); ЮС +1(3)" некорректна. Диск или барабан. М должно быть равно нулю. В результате устройство позиционируется в соответствии с содержимым гХ, чтобы следующая операция IN или OUT на этом устройстве выполнялась быстрее в случае, если используется то же значение гХ. Принтер. М должно быть равно нулю. Команда "ЮС 0(18)" заставит принтер перейти к началу (т. е. к верху) следующей страницы. Перфолента. М должно быть равно нулю. Команда "ЮС 0(20)" перематывает ленту в начало. • JRED (jump ready - переход при готовности). С = 38; F = номер устройства. Переход происходит в случае, если заданное устройство готово, т. е. завершена предыд>щая операция, инициированная командой IN, OUT или ЮС. • JBUS (jump busy - переход при занятости). С = 34; F = номер устройства. Антипод команды JRED: переход происходит, если заданное устройство не готово. Пример. Команда "JBUS 1000(16)" из ячейки 1000будет повторно выполняться до тех пор, порса устройство 16 не будет готово. Перечисленные выше простые команды исчерпывают набор команд ввода-вывода компьютера MIX. В этом компьютере нет индикаторов контроля ленты и т. д., служащих для предотвращения аварийных ситуаций на периферийных устройствах. Любая подобная ситуация (бумага застревает, устройство отключается, лента отсутствует и т. д.) приводит к тому, что устройство остается занятым, звенит звонок и опытный оператор устраняет проблемы вручную, вьшолняя обычные процедуры обслуживания. О более сложных периферийных устройствах, которые являются более дорогими и более типичными представителями современного оборудования по сравнению с описанными здесь лентами, барабанами и дисками с фиксированным размером блоков, пойдет речь в разделах 5.4.6 и 5.4.9. Команды преобразования • NUM (convert to numeric - преобразовать в число). С = 5; F = 0. Эта команда используется для преобразования символьного кода в число. М игнорируется. Предполагается, что регистры А и X содержат 10-байтовое число в символьном коде и команда NUM заносит в гА полученное числовое значение (которое рассматривается рсак десятичное чисяо). Содержимое гХ и знак г А не меняются. Байты 00, 10, 20, 30, 40, ... преобразуются в нулевые; в байты 01, И, 21, ... заносится цифра 1 и т. д. Если происходит переполнение (что вполне возможно), сохраняется остаток по модулю Ь, где b - размер байта. • CHAR (convert to characters - преобразовать в символы). С = 5; F = 1. Эта операция используется для преобразования машинного кода в символьный код, который воспринимается устройством вывода на перфокарты, ленту или на принтер. Значение из гА преобразуется в 10-байтовое десятичное число, которое заносится в регистры А и X в символьном коде. Знаки гА и гХ не меняются. М игнорируется. Примеры Первоначальное содержимое NUM О INCA 1 CHAR О Регистр А Регистр X
Время выполнения. Чтобы определить количественные характеристики эффективности программ для MIX, для каждой его команды задано время выполнения, которое типично для компьютеров "урожая 1970 года". ADD, SUB, все команды LOAD, все команды STORE (включая STZ), все команды сдвига и все команды сравнения выполняются в течение двух тактов. Для выполнения команды MOVE требуется один такт плюс еще два на каждое перемещаемое слово. Для каждой команды MUL, NUM, CHAR требуется 10 тактов, а для DIV-12. Время выполнения операций с плавающей точкой определяется в разделе 4.2.1. Для всех остальных операций необходим один такт плюс время, в течение которого компьютер может ожидать завершения выполнения команд IN, OUT, IOC и HLT. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [ 52 ] 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |