Первая версия сумматора выполняла единственное действие — сложение содержимого ячейки памяти со значением в 8-битной защелке, которую я назвал аккумулятором. Теперь необходимо, чтобы сумматор выполнял четыре различных действия . Для начала суммирования потребуется, чтобы сумматор передал байт из памяти в аккумулятор.
Назовем эту операцию загрузкой . Вторая операция — сложение байта из памяти с содержимым аккумулятора, третья — сохранение в памяти суммы из аккумулятора. В конце нам нужно каким-то образом остановить работу сумматора.
Давайте подробно распишем действия, которые должен выполнить сумматор в данном конкретном примере:
загрузить значение из ячейки 0000h в аккумулятор;
сложить значение из ячейки 0001h со значением в аккумуляторе;
сложить значение из ячейки 0002h со значением в аккумуляторе;
сохранить содержимое аккумулятора в ячейке 0003h;
загрузить значение из ячейки 0004h в аккумулятор;
сложить значение из ячейки 0005h со значением в аккумуляторе;
сохранить содержимое аккумулятора в ячейке 0006h;
загрузить значение из ячейки 0007h в аккумулятор;
сложить значение из ячейки 0008h со значением в аккумуляторе;
сложить значение из ячейки 0009h со значением в аккумуляторе;
сохранить содержимое аккумулятора в ячейке 000Ah;
остановить работу сумматора.
Обратите внимание: как и в исходной версии сумматора, адресация байтов памяти происходит последовательно, начиная с ячейки 0000h. Исходный сумматор просто прибавлял содержимое ячейки памяти по этому адресу к содержимому аккумулятора. В некоторых случаях это действие по-прежнему уместно. Однако иногда нам требуется загрузить значение из памяти непосредственно в аккумулятор или сохранить содержимое аккумулятора в памяти. После выполнения всех этих операций мы хотим, чтобы сумматор прекратил работу и можно было бы проверить содержимое памяти.
Как это реализовать? Важно понимать, что мы не можем просто записать в память кучу чисел и ожидать, что сумматор догадается, что с ними делать. Для каждого числа в массиве RAM необходимо предусмотреть некий числовой код, соответствующий операциям « Загрузка» , « Сложение» , « Сохранение» и « Остановка» .
Вероятно, проще всего (и, разумеется, затратнее) хранить эти коды в отдельном массиве RAM. Доступ к этому второму массиву осуществляется одновременно с доступом к исходному массиву. Однако вместо слагаемых он будет содержать коды, указывающие на то, что должен сделать сумматор с содержимым соответствующей ячейки исходного массива RAM. Исходный массив можно обозначить словом «Данные», а новый массив — словом «Код».
Мы уже выяснили, что наш новый сумматор должен записывать суммы в исходный массив «Данные». Однако в новый массив «Код» значения будут сохраняться только при помощи пульта управления.
Нам нужны четыре кода для обозначения четырех действий, которые должен выполнять новый сумматор. Мы можем назначить этим действиям любые коды, например следующие.
Операция
Код
Загрузить
10h
Сохранить
11h
Сложить
20h
Остановить
FFh
Итак, чтобы выполнить три операции сложения из приведенного выше примера, нужно использовать пульт управления для сохранения следующих значений в массиве «Код».
Возможно, вам захочется сравнить содержимое этого массива RAM с массивом, в котором хранятся слагаемые. В результате вы заметите, что каждый код в массиве «Код» соответствует значению в массиве «Данные», которое должно быть загружено в аккумулятор, прибавлено к его содержимому или сохранено в памяти. Используемые таким образом числовые коды часто называются кодами команд или кодами операций . Они дают схеме «команду» выполнить определенную «операцию».
Как я уже упоминал, выход 8-битной защелки исходного сумматора должен быть входом массива RAM «Данные». Так работает команда «Сохранить». Однако нам требуется внести еще одно изменение: изначально выход 8-битного сумматора — вход 8-битной защелки. Теперь для выполнения команды «Загрузить» выход массива «Данные» иногда должен соединяться со входом 8-битной защелки. Для этого необходим селектор двух линий на одну. Пересмотренная схема сумматора выглядит следующим образом.
Читать дальше
Конец ознакомительного отрывка
Купить книгу