AOP_Tom1 (1021736), страница 35
Текст из файла (страница 35)
ЬЕБЯ (меньше), ЕЦОАЬ (равно) и ОЕЕАТЕЕ (больше)); память (4 000 слов, каждое из которых состоит из 5 байт и знака); устройства ввода-вывода (перфокарты, ленты, диски и т, д.), Структура машинного слова. 5 байт и знак, из которых состоит машинное слово, нумеруются следующим образом: (2) Большинство команд таковы, что программист может при желании использовать только часть слова. В подобных случаях можно задать нестандартную "специФикацию поля". При этом допустимо использовать поля, которые являются соседними в машинном слове; они обозначаются в виде (Ь В), где Ь вЂ” номер левой, а Н вЂ” номер правой части поля. Приведем примеры спецификации полей: (О:0): только знак; (О: 2): знак и первые два байта; (О:5): целое слово; это самая распространенная спецификация поля; (1: 5): все слово, кроме знака; (4:4): только четвертый байт; (4: 5): два младших значащих байта.
Использование спецификации поля несколько меняется от команды к команде; при рассмотрении каждой команды мы поговорим об этом более подробно. На самом деле каждая спецификация поля (Ь:Н) представляется внутри компьютера одним числом — 8Ь+ В.; заметим, что это число легко помещается в одном байте Формат команды. Машинные слова, используемые как команды, имеют следующий формат: Крайний байт справа, С,— это код операции, который указывает, какая операция должна быть выполнена. Например, С = 8 определяет операцию ЬОАе, "загрузить регистр А". Байт Г определяет модификлцию кода операции.
Обычно это спецификация поля (Ь:Н) = 8Ь+ Н. Например, если С = 8 и Г = 11, то операцией будет "загрузить в регистр А поле (1гй)н Иногда Г используется для других целей Например, для команд ввода-вывода à — это номер соответствующего входного или выходного устройства. 11ЗА — сокращение от ноак Ше А герееет" — Прим нерее Форма записи.
Чтобы сделать команды более читабельными, для обозначения команды типа (3) будет использоваться следующая форма записи: (4) ОР АРРЯЕЯЯ,1(Р) . Здесь ОР†символическ имя кода операции (часть С) команды, АРРЯЕЯЯ вЂ” часть ~АА, 1 и Р†по 1 и Г соответственно. Если 1 равно нулю, то зались ",1" опускается.
Если à — стандартилл Г- спецификация для данной команды, то зались "(Р)" использовать не нужно. Практически для всех команд стандартной Г-спецификацией является (О:5), что соответствует целому слову. Если же стандартной является другая спецификация Г, то она будет упомянута особо при описании конкретной команды Например, команда загрузки числа в аккумулятор называется ЬРА и ее код операции — 8. Имеем следующее.
Условное представление Реальное представление команды в цифровом виде ЕРА 2000,2(0:3) ЕРА 2000,2(1:3) ЮА 2000(1:3) ЕРА 2000 ЕРА -2000,4 (5) Команда "ЫА 2000,2(0: 3)" читается следующим образом; "Загрузить в регистр А содержимое ячейки 2000 с индексом 2, поле "нуль — три". Левая часть команды., ~АА, определяет адрес. (Обратите внимание, что знак является частью адреса.) Поле 1, которое следует за адресом, — зто спецификация индекса, которую можно прцменять для модификации фактического адреса. Если 1 = О, то адрес ~АА используется без изменений. В противном случае в поле 1 должно содержаться число 1 от 1 до 6, и тогда содержимое индексного регистра В влгебранчески добавляется к ~АА перед выполнением команды.
Полученный результат используется как адрес. Процесс индексирования выполняется для каждой команды. Обозначим буквой "М" адрес, получаемый после каждой операции индексирования. (Если после добавления содержимого индексного регистра к адресу ~АА получается результат, который не помещается в двух байтах, то значение М будет неопределенным.) Для большинства команд М указывает на ячейку памяти. Термины "ячейка памяти" и "адрес ячейки памяти" в этой книге почти всегда являются эквивалентными. Предполагается, что имеется 4 000 ячеек памяти с номерами от 0 до 3 999 Поэтому адрес каждой ячейки можно представить с помощью двух байтов.
Для каждой команды, в которой М обозначает ячейку памяти, должно выполняться неравенство 0 < М < 3999. В этом случае запись СОвТЕвТЯ(М) будет обозначать величину, которая хранится в ячейке с адресом М. Для некоторых команд "адрес" М имеет несколько иной смысл; он может даже быть отрицательным. Так, например, одна команда добавляет М к индексному регистру и при этом принимается во внимание знак М.
Для представления цифрового содержимого слова М1Х будем использовать клеточную запись, как было сделано выше. Обратите внимание, что в слове + 2000 2 3 8 число +2000 занимает два соседних байта и знак. Заметим, что реальное содержимое байта (1: 1) и байта (2: 2) будет меняться при переходе от одного компьютера М1Х к другому, так как меняется размер байта.
В следующем примере подобной записи 10000 3000 представлено слово, состоящее из двух полей. В первом поле, содержащем три байта и знак, находится число -10000, а во втором поле, размером два байта, — число 3000. Когда слово разбито на несколько полей (т. е. содержит более одного поля), говорят, что оно "упаковано". Описания команд. В замечаниях, следующих за записью (3) (см.
выше), были определены величины Ы, Г и С для любого слова, используемого в качестве команды. А теперь определим действив, соответствующие каждой команде. Команды загрузки ° (.РА (!оаб А †загрузи А). С = 8; Е = поле. Зцдаиное поле СОЯТЕИТЯ(М) заменяет предыдущее содержимое регистра А. Во всех операциях, в которых в качестве входного значения используется частичное поле, знак учитывается, если он является частью этого поля; в противном случае берется знак "+". По мере загрузки поле сдвигается в правую часть регистра.
Примеры. Если à — стандартная спецификация поля (О:5), то все содержимое ячейки М копируется в гА. Если à — спецификация (1:5), то абсолютное значение СОМТЕМТБ(Ы) загружается со знаком "+". Если в М содержится команда и Š— это спецификация (О:2), поле "~АА" загружается как Предположим, в ячейке с адресом 2000 содержится слово (6) 80 3 5 4 тогда, загружая различные частичные поля, получим следующие результаты. Команда Последующее содержимое гА ЫА 2000 (.РА 2000 (1: 5) РРА 2000(3:5) ЬРА 2000(0".3) (.РА 2000(4:4) ЕРА 2000(0:О) ЮА 2000(1:1) (В погледнем примере значение частично не определено, так как размер байта переменный.) ° ЕОХ (1оЫ Х вЂ” загрузить Х).
С = 15; Г = поле. Эта команда идентична ЕОА, за исключением того, что вместо гА загружается гХ. ° ЕОг (1оаг1 г — загрузить г). С = 8+ г; Г = поле. Эта команда идентична ЕОА, только вместо гА загружается г1г. Индексный регистр содержит только два байта (а не пить) и знак; байты 1, 2, 3 всегда считаются нулевыми. Почтому, если установить для байтов 1, 2 или 3 любые значения. не равные нулю, то команда Ыг станет неопределенной. В описаниях всех команд "г" обозначает целое число, 1 ( г < 6. Таким образом. ЕРг обозначает шесть различных команд: 101, Ю2, ..., ЕО6. ° ЕОАЯ (1оаб А пебаггте — загрузить в А с обратным знаком), С = 16; Г = поле. ° ЕОХй (1оаг1 Х пейа1гте — загрузить в Х с обратным знаком). С = 23; Г = поле. ° 10гй (1оаг) г пейагггте — загрузить в г с обратным знаком). С = 16+ г; Г = поле. Эти восемь команд идентичны командам ЫА, ЕОХ и ЕРг соответственно.
но только величины загружаются г обратнмзг знаком. Команды записи в память ° ЯТА (з1оге А — записать А). С = 24: Г = поле. Часть содержимого гА заменяет поле СОяТЕйТЯ(М), которое указано в Г другие части СОаТЕЯТЯ (М) остаются неизменными.
Для операции записи в память поле Г имеет противоположный смысл по сравнению с операцией загрузки. Нужное количество байтов в поле, взятом из правой части регистра, в случае необходимости сдвигаегся влево, а затем помещается в ссютветгтвующее поле СОКТЕяТЯ (51) . Знак меняется только тогда, когда он является частью поля. Содержимое регистра также остается без изменений.
Примеры. Предположим, в ячейке 2000 содержится а в регистре А Тогда получаем следующее. Команда Содержимое ячейки 2000 после выполнения команды ЯТА 2000 БТА 2000(1гб) ЯТА 2000(Б:Я) ЯТА 2000(2:2) ЯТА 2000(2;3) БТА 2000(0:1) ° ЯТХ (з(оге Х вЂ” записать Х) С = 31: Г = поле. Идентична команде ЯТА, но только сохраняется содержимое гХ, а не гА. ° ЯТ( (э(осе( — записать 1). С = 24+1; Р = поле. Идентична команде ЯТА, за исключением того, что сохраняется содержимое г1(, а не гА.
Байты 1, 2 и 3 индексного регистра являются нулевыми, поэтому, если в г11 содержится ['.А Дт и], значит, в нем находится ° БТЗ (ээоге 3 †сохрани 3). С = 32; г = поле. Идентична команде БТг, но только сохраняется гд н знаком всегда является "+".
Для команды БТ) стандартной спецификацией поля для К является (О:2), а не (О: 5). И это естественно, так как БТЛ почти всегда выполняет запись в адресное поле команды. ° ЯТ2 (зФоге сего — записать нуль). С = 33; Г = поле. Идентична команде ЯТА, но только сохраняется нуль со знаком "+".
Другими словами, заданное поле СОИТЕМТЯ(М) обнуляется. Арифметические командьг. При выполнении операций сложения, вычитания, умножения и деления допускается спецификация поля. Спецификацию поля "(О:6)" можно использовать для указания операции с плавающей точкой (см.