Анимация
JavaScript
|
Главная Библионтека компьютер с какой арифметикой они программируют - с двоичной или десятичной Поэтому алгоритмы, написанные для MIX, с небольшими изменениями можно использовать на любом изэтих типов компьютеров и MIX можно легко имитировать на этих компьютерах. Те программисты, которые привыкли к двоичному компьютеру, могут считать MIX двоичным, а те, которые привыкли к десятичному, могут считать MIX десятичным. Программисты же с другой планеты могут считать MIX троичным компьютером. Слова. Основной единицей информации является байт. Каждый байт должен принимать по меньшей мере 64 различных значения, но реальный объем содержащейся в байте информации может быть разным. Таким образом, в одном байте может содержаться любое число от О до 63 включительно. Более того, в каждом байте может содержаться максимум 100 различных значений. Следовательно, в двоичном компьютере байт должен состоять из шести разрядов, а в десятичном - из двух*. Программы на языке MIX должны быть написаны так, чтобы в байте содержалось не более 64 значений. Так, для представления числа 80 мы всегда будем выделять два байта, хотя в десятичном компьютере для этого достаточно одного байта. Алгоритм на языке MIX должен работать правильно независимо от размера байта. Конечно, вполне возможно написать программы, зависящие от размера байта, но в данной книге такие действия осуждаются и допустимыми считаются только те программы, которые дают правильный результат независимо от размера байта Обычно придерживаться этого основного правила совсем нетрудно, и, таким образом, мы обнаружим, что программирование на десятичном компьютере не особенно отличается от программирования на двоичном. С помощью двух соседних байтов можно выразить числа от О до 4 095. С помощью трех соседних байтов можно выразить числа от О до 262 143. С помощью четырех соседних байтов можно выразить числа от О до 16 777 215. С помощью пяти соседних байтов можно выразить числа от О до 1 073 741 823. Машгшное слово состоит из пятя бантов и знака. Знак может принимать только два значения: и Регистры. В компьютере MIX всего девять регистров (рис. 13). Регистр А (аккумулятор) содержит 5 байт и знак. Регистр X (расширение аккумулятора) тоже содержит 5 байт и знак В регистрах I (индексных регистрах) II, 12, 13, 14, 15 и 16 содержится по два байта и знак. Регистр J (адрес перехода) содержит два байта; его знак -всегда "-Ь". Для обозначения регистра компьютера MIX будем использовать в качестве приставки к имени регистра строчную букву "г". Таким образом, "гА" обозначает "регистр А". Регистр А имеет много применений, особенно часто он используется при выполнении арифметических действий и операций над данными. Регистр X используется * Приблизительно с 1975 года слово "байт" стало обозначать последовательность, состоящую ровно из восьми двоичных цифр, что позволяет представлять числа от О до 255 Поэтому размери байтов реальных компьютеров больше, чем размеры байтов гипотетической машины MIX И в самом деле, старомодные байты компьютера MIX только чуть-чуть больше, чем половина байта реального компьютера Говоря о байтах применительно к MIX, мы будем придерживаться прежнего значения этого слова, вновь возвращаясь к тем дням, когда понятие байта еще не было так стандартизовано Регистр A Регистр X
Регистр 11 Регистр 12 Регистр 13 Регистр 14 Регистр 15
.. Флаг (е) Индикатор переполнения сравнения Магнитные ленты
Рис. 13. Компьютер MIX. для расширения вправо регистра А и вместе с г А -для хранения 10 байт произведения или делимого. Он может применяться и для хранения информации, сдвинутой вправо из гА, Индексные регистры гП, г12, г13, г14, г15 и г16 используются, главным образом, как счетчики и для ссылок на различные адреса памяти. В регистре J всегда хранится адрес команды, которая следует за последней операцией "перехода"; этот регистр используется, главным образом, для вызова подпрограмм. Помимо регистров, компьютер MIX содержит следующие элементы: триггер переполнения (один бит, который может принимать значение "нуль" или "единица"); флаг сравнения (принимающий одно из трех значений. LESS (меньше), EQUAL (равно) и GREATER (больше)); память (4 ООО слов, каждое из которых состоит из 5 байт и знака); устройства ввода-вывода (перфокарты, ленты, диски и т. д.). Структура машинного слова. 5 байт и знак, из которых состоит машинное слово, нумеруются следующим образом:
Большинство команд таковы, что программист может при желании использовать только часть слова. В подобных случаях можно задать нестандартную "спецификацию поля". При этом допустимо использовать поля, которые являются соседними в машинном слове; они обозначаются в виде (L-R), где L - номер левой, а R - номер правой части поля. Приведем примеры спецификации полей: (0:0): только знак; (0:2): знак и первые два байта; (0:5): целое слово; это самая распространенная спецификация поля; (1:5): все слово, кроме знака; (4:4): только четвертый байт; (4:5): два младших значащих байта. Использование спецификации поля несколько меняется от команды к команде; при рассмотрении каждой команды мы поговорим об этом более подробно. На самом деле каждая спецификация поля (L:R) представляется внутри компьютера одним числом - 8L + R; заметим, что это число легко помещается в одном байте Формат команды. Машинные слова, используемые как команды, имеют следующий формат:
Крайний байт справа. С, - это код операции, который указывает, какая операция должна быть выполнена. Например, С = 8 определяет операцию LDA*, "загрузить регистр А". Байт F определяет модификацию кода операции. Обычно это спецификация поля (L:R) = 8L-I-R. Например, если C = 8hF = 11,to операцией будет "загрузить в регистр А поле (1:3)" Иногда F используется для других целей Например, для команд ввода-вывода F - это номер соответствующего входного или выходного устройства. LDA - сокращение от "load the А register" -Прим перев 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 |