Прямая адресация означает, что действительный адрес является частью команды. Одноадресная команда ADD 100 заставляет ЦП сложить содержимое ячейки памяти 100 с содержимым аккумулятора, т. е. (А) = (А) + (100). Заметим, что ячейка памяти 100 не обязательно содержит число 100. На рис. 3.3 показана последовательность команд, использующих прямую адресацию, которая складывает содержимое ячеек памяти 100 и 101 и сумму помещает в ячейку памяти 102.
.jpg)
Прямая адресация не требует вычислений, легка для понимания и позволяет всегда выбрать любую ячейку памяти. Однако для прямой адресапии необходим большой формат команды. Например, 8-бнтный процессор с памятью 64 Кбайт требует 16-битного адреса, который должен выбираться из двух 8-битных ячеек.
Формат команд с прямой адресацией может быть уменьшен путем разделения памяти на секции,, или страницы. Тогда эту часть адреса можно держать в регистре страницы и только по команде включать ее в полный адрес. На рис. 3.4 показаны два примера прямой адресации с регистром страницы. Естественно, отдельные команды должны загружать адрес в регистр страницы, но если изменять номера страниц требуется редко, то это делает программу короче.
Если ограничить число страниц, к которому может обращаться ЦП, то регистр страниц можно исключить. Например, если ЦП может обращаться только к ячейкам памяти на странице то этот метод называется адресацией к нулевой странице. Для выборки из ячеек памяти на других страницах потребуются дополнительные методы адресации. Можно ограничить ЦП возможностью обращаться только к одной странице памяти. Этот метод называется адресацией к текущей странице. Оба эти метода могут быть использованы совместно путем добавления одного бита в каждую команду, как показано на рис. 3.5. Эти методы не требуют регистра страниц, но позволяют ЦП работать с одной или с двумя страницами памяти.
.jpg)
Прямой адресации не хватает гибкости, необходимой для обработки массивов данных. Окончательные команды могут обеспечивать доступ только к отдельным ячейкам памяти. Заметим, что прямая адресация требует дополнительных обращений к памяти, выдает прямой адрес в шину адреса и использует его для передачи данных.