ВУЗ:
Рис. 2.4. Архитектура машины, описанной в приложении В
Рис. 2.5. Формат команды вычислительной машины,
описанной в приложении B
каждой команды размещается в первых ее четырех битах и представляется одной шестнадцатеричной цифрой от 1 до С. В
частности, как можно увидеть в таблице приложения, команда, начинающаяся с цифры 3, является командой сохранения,
команда, начинающаяся с шестнадцатеричной цифры А, является командой циклического сдвига.
Поле операнда каждой команды состоит из трех шестнадцатеричных цифр (12 бит) и во всех случаях (кроме команды
остановки, для которой не требуется никаких уточнений) содержит дополнительные сведения, необходимые для выполнения
команды, заданной кодом операции. Следовательно, если первая шестнадцатеричная цифра команды равна 1 (код операции
считывания ячейки памяти), то следующая шестнадцатеричная цифра команды указывает общий регистр, в который требу-
ется загрузить считанное из основной памяти значение, а последние две шестнадцатеричные цифры задают адрес ячейки
памяти, из которой требуется считать данные. Например, команда 1347 (шестнадцатеричное число) воспринимается машиной
как "Загрузить в регистр 3 содержимое ячейки памяти с адресом 47". Если код операции представлен шестнадцатеричной
цифрой 7 (операция ОR над содержимым двух регистров общего назначения), то следующая шестнадцатеричная цифра ука-
зывает номер регистра, в который следует поместить результат операции, а две последние шестнадцатеричные цифры поля
операндов задают номера тех регистров, над содержимым которых необходимо выполнить операцию ОR. В результате ко-
манда 70С5 понимается как инструкция "Выполнить операцию ОR с содержимым регистров С и 5, а результат поместить в
регистр 0".
Существует тонкое отличие между двумя командами загрузки. Код операции 1 (шестнадцатеричный) относится к ко-
манде загрузки регистра общего назначения содержимым ячейки основной памяти, тогда как код операции 2 (шестнадцате-
ричный) – к команде загрузки регистра общего назначения указанным числовым значением. Различие заключается в том, что
поле операндов в команде первого типа содержит адрес, тогда как в команде второго типа поле операндов содержит ту бито-
вую комбинацию, которую требуется загрузить в регистр.
В машине есть две команды сложения: одна – для сложения чисел в двоичном дополнительном коде, а другая – для
сложения чисел в формате с плавающей точкой. Такое разделение обусловлено тем, что сложение чисел в двоичном допол-
нительном коде потребует от арифметико-логического блока выполнения совершенно иных действий, чем в случае сложе-
ния чисел в формате с плавающей точкой.
Интересное решение принято в отношении команды перехода (код операции – шестнадцатеричная цифра В). Первая
шестнадцатеричная цифра поля операндов указывает, какой регистр общего назначения следует сравнить с регистром 0. Ес-
ли указанный регистр содержит ту же битовую комбинацию, что и регистр 0, то машина выполняет переход посредством
выбора следующей команды по тому адресу, который указан в двух последних шестнадцатеричных цифрах поля операндов.
В противном случае программа продолжает нормальную последовательность выполнения команд. По сути, это пример ко-
манды условного перехода. Однако если первая шестнадцатеричная цифра поля операндов будет равна 0, то данная команда
запрашивает сравнить регистр 0 с регистром 0. Так как содержимое любого регистра всегда равно самому себе, то в этом
случае переход всегда выполняется. Следовательно, команда, код которой начинается с шестнадцатеричных цифр B0, вос-
принимается как команда безусловного перехода.
Закончим этот раздел примером закодированной последовательности команд, приведенной на рис. 2.2. Предположим,
что суммируемые числа представлены в дополнительном двоичном коде и хранятся в ячейках памяти с адресами 6С и 6D, а
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »
