В ЭВМ с ограниченной разрядностью обычно используют аккумулятор в качестве источника и места назначения информации. В команде нет необходимости специально указывать, что должен быть использован аккумулятор. Типичная команда ADD В, означает, что требуется сложить содержимое регистра В с содержимым аккумулятора и результат поместить в аккумулятор. Такие команды называются одноадресными. Они производят действия, аналогичные операциям, выполняемым калькуляторами, в которых в качестве операндов используют самую последнюю вводимую информацию и содержимое аккумулятора, а результат операции вновь помещают в аккумулятор. На рис. 3.2 показан формат одноадресной команды; очевидно, что такая комаада может быть короткой.
Однако программы, содержащие одноадресные команды, требуют дополнительных Рис 3 2 Формат ОДНО- команд, которые предварительно помещают адресной команды информацию в аккумулятор, а затем размещают результаты в памяти или в регистрах общего назначения (РОН). Это вспомогательные команды ЗАГРУЗИТЬ АККУМУЛЯТОР и ЗАПОМНИТЬ СОДЕРЖИМОЕ АККУМУЛЯТОРА (LOAD ACCUMULATOR и STORE ACCUMULATOR). Большинство программ содержит много одноадресных команд, так как по каждой команде выполняется незначительное действие. Так, вычисление выражениятребует следующей последовательности команд:
.jpg)
Команда ЗАГРУЗИТЬ помещает содержимое ячейки памяти W в аккумулятор. Команда ЗАПОМНИТЬ R помещает содержимое аккумулятора в ячейку памяти R.
Хотя исключение адресов делает команды короче, само программирование усложняется. Программист должен следить за содержимым аккумулятора и тщательно документировать программы для того, чтобы избежать типичных ошибок, например таких, как не поместить исходную информацию в аккумулятор или не запомнить в памяти его содержимое после серии операций. Программы, содержащие одноадресные команды, трудны для понимания, так как каждая команда выполняет только часть операций решения задачи и цель последовательности команд часто неясна.
Использование одноадресных команд приводит к тому, что аккумулятор становится «узким местом» ЭВМ. На загрузку и запоминание содержимого аккумулятора может тратиться больше времени, чем на выполнение полезной работы. В некоторых ЭВМ, имеющих короткие команды, эту проблему решают путем использования не одного аккумулятора. При этом в действительности каждая команда содержит два адреса, но один адрес, определяющий источник и место назначения информации, может задавать один из двух, четырех или даже восьми аккумуляторов. В команде требуется несколько бит для адресации аккумулятора. Motorola 6800, National РАСЕ и Signetics 2650 — примеры микропроцессоров, имеющих более одного аккумулятора.