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

Индексная адресация

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

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

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

Косвенная адресация — это очень эффективный и важный способ адресации в микропроцессорах. При косвенной адресации исходный адрес служит указателем на ячейку, в которой находится эффектив­ный адрес. Таким образом, исходный адрес это «адрес адреса».

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

Примером регистровой косвенной адресации может служить ко­манда ADD R при R = 1111. Значение 1111 в младших четырех битах команды — это ссылка на общие регистры Н и L. Содержимое этих ре­гистров воспринимается как 16-разрядный эффективный адрес.

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

Относительная адресация в чем-то близка к индексной. В ней эф­фективный адрес получается прибавлением исходного адреса к содер­жимому программного счетчика. Исходный адрес интерпретируется как число со знаком, так что относительная адресация, например, в команде перехода позволяет передать управление вперед или назад от текущего адреса на программном счетчике на заданное в программе «расстояние». Этот способ адресации особенно эффективен в командах переходов, когда переход осуществляется в близкие ячейки, поскольку не требует задания полного адреса, по которому осуществляется пе­реход.

Страничная адресация

Часто объем памяти микропроцессора превышает «адресное про­странство», т. е. максимальное число адресов для данного формата команд. В таком случае память можно разбить на страницы, размер которых определяется максимальным числом ячеек, адресуемых в команде. Например, если на адрес отводится только 8 разрядов, то каждая страница должна содержать 28=256 ячеек. Страницам присва­иваются номера в последовательном порядке, начиная с 0. В нашем примере страница 0 будет содержать ячейки от 0 до 255, страница 1 — ячейки 256—511 и т. д. При таком подходе программный счетчик мож­но считать состоящим из двух частей. Старшие разряды — это номер страницы, а младшие — адрес слова внутри страницы.

Метод адресации к текущей странице сводится к тому, что исход­ный адрес в команде считается адресом внутри той страницы, где на­ходится сама команда, т. е. «сдвигом» относительно начала страницы. Этот метод позволяет адресовать ячейки только в текущей странице, а эффективный адрес получается, как сумма адреса начала страницы и исходного адреса в команде. Таким образом, старшие разряды эффек­тивного адреса — это просто старшие разряды программного счетчика, а младшие разряды — это исходный адрес в самой команде.

Другой метод страничной адресации называется адресацией к нуле­вой странице. Исходный адрес трактуется как адрес внутри нулевой страницы. Старшие разряды эффективного адреса полагаются равны­ми нулю, а младшие — равными исходному адресу. Адресация и к те­кущей, и к нулевой странице является одной из форм относительной адресации и называется страничной относительной адресацией.

Описанные методы страничной адресации позволяют обращаться только к ячейкам нулевой и текущей страниц. Чтобы обратиться к лю­бой ячейке памяти, можно воспользоваться косвенной адресацией. Если, например, нужно обратиться к ячейке в странице 7, а програм­мный счетчик показывает, что текущая команда находится в странице 3, то адрес, относящийся к странице 7, нужно запасти либо в стра­нице 0, либо в странице 3, и тогда операнд в странице 7 будет досту­пен по косвенному адресу.