Анимация
JavaScript
|
Главная Библионтека 1. Символ - этр строка, содержащая от одной до десяти букв и/или цифр, среди которых должна быть по крайней мере одна буква. Примеры PRIME, TEMP, 20BY20. Специальны символы dE, d¥ и dB, где d - это одна цифра, в целях данного определения будут заменяться другими уникальными символами в соответствии с соглашением о "локальных символах", о котором говорилось выше. 2. Число - это строка, содержащая от одной до десяти цифр. Пример- 00052. 3. В каждом случае появления в программе MIXAL символ называется либо определенным символом, либо ссылкой вперед. Определенный символ - это символ, который появляется в поле МЕТКА одной из предыдущих строк программы MIXAL. Ссылка вперед - это символ, который пока еще не был определен подобным образом. 4. Элементарное выражение - это либо a) число, либо b) определенный символ (обозначающий числовой эквивалент этого символа, см. правило 13), либо c) звездочка (обозначающая значение ®; см. правила 10 и И). 5. Выражение - это либо a) элементарное выражение, либо b) элементарное выражение, перед которым стоит знак "+" или "-", либо c) выражение, за которым следует бинарная операция, а за ней - элементарное выражение. Допустимыми являются шесть следующих бинарных операций: +,-,*,/, и:. Они определяются для числовых слов MIX следующим образом.
Здесь АА, ВВ и СС - ячейки, содержащие соответствующие значения символов А, В и С. Операции внутри выражения выполняются слева направо. Примеры: -1+5 равно 4. -1+5*20/6 равно 4*20/6 равно 80/6 равно 13 (операции выполняются слева направо). 1 3 равно слову MIX, размер которого приблизительно равен ЬЗ, где Ъ - размер байта; т. е. слово, представляющее дробь \ с десятичной точкой слева. 1:3 равно И (обычно используется в частичной спецификации поля). *-3 равно ® минус три. *** равно ®, умноженному на ®. 6. А-частъ (которая используется для описания адресного поля команды MIX) либо a) пуста (и обозначает нулевое значение), либо b) является выражением, либо c) является ссылкой вперед (и обозначает окончательный эквивалент символа; см. правило 13), либо d) является литералом (и обозначает ссылку на внутренний символ; см. правило 12). 7. Индексная часть (которая используется для описания индексного поля команды MIX), либо a) пуста (и обозначает нулевое значение), либо b) состоит из запятой и следующего за ней выражения (и обозначает значение этого выражения). 8. F-часть (которая используется для описания F-поля команды MIX) либо a) пуста (что обозначает стандартное F-значение в зависимости от содержимого поля ОП (см. табл. 1.3.1-1)), либо b) состоит из выражения, заключенного в круглые скобки (и обозначает значение этого выражения). 9. W-значение (которое используется для описания константы MIX, занимающей полное слово) - это либо a) выражение, за которым следует F-часть (в этом случае пустая F-часть обознаг чается через (0:5)), либо b) W-значение, за которым после запятой следует W-значение вида (а). W-значение указывает числовое значение слова MIX, которое определяется следующим образом. Пусть W-значение имеет вид "Ei(Fi) ,Е2(р2),... ,Е„(Р„)", где п > 1, Ej - выражения, а Р, - поля. Желаемый результат - окончательное значение, которое появилось бы в ячейке памяти WVAL после выполнения следующей гипотетической программы: STZ WVAL; LDA Ci; STA WVAL(Pi); ...; LDA C„; STA WVAL(P„). Здесь Cl, ..., Cn обозначают ячейки, содержащие значения выражений Ei, ..., Е„. Каждое Fj должно иметь вид 8L, + R,, где О < L, < R, < 5. Примеры:
10. в процессе трансляции используется величина, которая обозначается через ® (и называется счетчиком адреса). Первоначальное значение счетчика адреса равно нулю. Значение ® всегда должно быть неотрицательным числом, которое помещается в двух байтах. Если в строке поле метки не пусто, то оно должно содержать символ, который не был определен ранее. Эквивалент этого символа затем определяется как текущее значение (§. 11. После обработки поля МЕТКА, как описано в правиле 10, процесс трансляции будет зависеть от значения "содержимого поля ОП. Существует шесть возможностей для ОП. a) В поле ОП содержится символический оператор MIX. В табл. 1 из предыдущего раздела определены стандартные значения С и F для каждого оператора MIX. В этом случае в поле АДРЕС должна находиться А-часть (правило 6), за которой следует индексная часть (правило 7), а затем - Р-часть (правило 8). Таким образом, получаем четыре значения: С, F, А и I. В результате транслируется слово, которое определяется последовательностью "LDA С; STA WORD; LDA F; STA W0RD(4:4); LDA I; STA W0RD(3:3); LDA A; STA W0RD(0:2)" и помещается в ячейку, заданную ®, а затем увеличивается на 1 значение счетчика ®. b) В поле ОП содержится операция "EQU". В поле АДРЕС должно содержаться W-значение (см. правило 9). Если поле МЕТКА не пусто, то значение содержащегося здесь символа устанавливается равным значению, заданному в поле АДРЕС. Это правило имеет более высокий приоритет, чем правило 10. Значение ® не меняется. (В качестве нетривиального примера рассмотрим строку BYTESIZE EQU 1(4:4), позволяющую программисту получить символ, значение которого зависит от размера байта. Эта ситуация допустима до тех пор, пока программа имеет смысл для всех возможных размеров байта.) c) В поле ОП находится "0RIG". В поле АДРЕС должно содержаться W-значение (см. правило 9); значение счетчика адреса ® устанавливается равным этому значению. (Заметьте, что согласно правилу 10 символ, находящийся в поле МЕТКА строки с операцией 0RIG, принимает значение ® до его изменения. Например, TABLE ORIG *+100 делает символ TABLE эквивалентным текущему адресу плюс 100.) d) В поле ОП находится "CON". В поле АДРЕС должно содержаться W-значение. В результате происходит трансляция слова, имеющего это значение, помещение его в ячейку, заданную ®, и увеличение значения счетчика ® на 1. e) В поле ОП находится "ALF". В результате выполняется трансляция слова из символьных кодов, образуемого первыми пятью символами адресного поля; в остальном операция аналогична CON. f) В поле ОП находится "END". В поле ADDRESS должно содержаться W-значение, определяющее в своем поле (4:5) адрес команды, с которой начинается программа. Строка END обозначает окончание программы на языке MIXAL. В завершение ассемблер вставляет в произвольном порядке непосредственно перед строкой END дополнительные строки, соответствующие всем неопределенным символам и литеральным константам (см. правила 12 и 13). Таким образом, символ в поле МЕТКА строки END будет обозначать первую ячейку, след>ющую за вставленными словами. 12. Литеральные константы. W-значение, длина которого - менее 10 символов, можно заключить между знаками "=" и использовать в качестве ссылки вперед. 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 |