Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры к госам.doc
Скачиваний:
10
Добавлен:
01.04.2025
Размер:
7.08 Mб
Скачать

16. Непосредственная, прямая, косвенная адресация и относительная адресация(Женатов)

Для взаимодействия с различными модулями в ЭВМ должны быть средства идентификации ячеек внешней памяти, ячеек внутренней памяти, регистров МП и регистров устройств ввода/вывода. Поэтому каждой из запоминающих ячеек присваивается адрес, т.е. однозначная комбинация бит. Количество бит определяет число идентифицируемых ячеек. Обычно ЭВМ имеет различные адресные пространства памяти и регистров МП, а иногда - отдельные адресные пространства регистров устройств ввода/вывода и внутренней памяти. Кроме того, память хранит как данные, так и команды. Поэтому для ЭВМ разработано множество способов обращения к памяти, называемых режимами адресации.

Способами адресации называются различные режимы интерполяции поля адреса команды.

Часть команды, которая используется для задания адреса памяти, называется полем адреса.

Содержимое поля адреса называют исходным адресом.

Ячейки памяти, в которой в конце концов формируется ссылка и которая содержит перерабатываемые данные, будем называть эффективным адресом.

Способы создания эффективного адреса через исходный адрес, называются адресацией.

Прямая адресация

Наиболее естественный способ адресации – это прямая адресация. При прямой адресации в команде просто задается эффективный адрес, т. е. исходный адрес равен эффективному. Примером может служить команда LDR. Два байта из трех в команде содержит фактический адрес ячейки памяти.

Непосредственная адресация

При непосредственной адресации операнд команды является частью команды, т.е. операнд в памяти расположен непосредственно вслед за ячейкой, содержащей операционную часть команды.

Пример: LRI К – команда с непосредственной адресацией. Выполняется за два машинных цикла, второй строчкой команды являются данные, которые нужно записать в регистр R. Второй байт команды – операнд.

Косвенная адресация

Это очень эффективный и важный способ адресации в микропроцессорах. При косвенной адресации исходный адрес служит указателем на ячейку, в которой находится эффективный адрес. Таким образом, исходный адрес это “адрес адреса”.

Регистр при обращении к нему меняет содержимое на единичку.

Случай, когда исходный адрес указывает на общий регистр, со­держащий эффективный адрес, по существу, является частным случаем косвенной адресации. Он называется регистровой косвенной адресацией. Регистровая косвенная адресация повышает эффективность программы, поскольку в команде в этом случае адресное поле должно вмещать только ссылку на общий регистр.

Относительная адресация

При относительной адресации эффективный адрес получается путем прибавлением исходного адреса к содержимому программного счетчика.

17. Разветвление в программах(Женатов)

О дно из наиболее мощных свойств компьютеров заключается в их способности принимать решения в ходе выполнения программы.

Эти решения принимаются в зависимости от простых условий, склонявшихся на данный момент. Обычно в результате принятия решения либо сохраняется последовательный порядок выполнения программ, либо происходит переход на другую часть программы. Сложные решения реализуются в виде нескольких простых разветвлений.

Рассмотрим пример. Необходимо выбрать наибольшее их трех 8-битовых целых положительных чисел x, y и z наибольшее

Задание:

Найти наибольшее из чисел, 001В – число х, 001С – число y, 001D – число z, и сохранить его в регистре 3.

ячейка памяти

символическая форма

комментарий

0000

LDR 0

Загрузка числа х в Асс

0001

00

0002

1B

0003

LRI 1

Загрузка числа y в регистр 1

0004

00

0005

1C

0006

SUB 1

Вычитание из Асс числа 1, т.е. x-y. Триггер С устанавливается, если y>x

0007

LDR 2

Передача числа x в регистр 2, как возможного наибольшего

0008

00

0009

1B

000А

JCZ

Проверка C на наличия заема, если нет заема, то x>y, и следующая команда продолжается если заем есть

000В

00

000С

10

000D

LDR 2

Загрузка в регистр 2 числа y как возможного наибольшего

000Е

00

000F

1C

0010

LDR 1

Передача z из памяти в регистр 1

0011

00

0012

1D

0013

MOV 0 from 2

Передача из регистра 2 в Асс числа наибольшего (x или y)

0014

SUB 1

Вычитание из наибольшего (x или y) числа z (Асс)-(1)

0015

LDR 1

Загрузка в регистр 2 числа z как возможно наибольшего

0016

00

0017

1A

0018

YCN

Проверка триггера С на наличие наибольшего заема, если заем есть, то z > (x или y), если заема нет, то команда не выполняется

0019

00

001A

1F

001E

MOV 2t03

Передача наибольшего числа (x или y) в регистр 3 как возможного наибольшего

001F

HLT

остановка

Наибольше число хранится в регистре 3