Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.550


Таненбаум Э.- Архитектура компьютера. стр.550

При косвенной регистровой адресации адрес операнда хранится в одном из трех регистров: ВХ, SI или DI. Во всех этих случаях он оказывается в сегменте данных. Кроме того, можно разместить константу перед регистром, и в этом случае адрес устанавливается путем сложения регистра с константой. Этот тип адресации, называемый регистровой адресацией со смещением, удобен при обработке массивов. Так, если регистр SI содержит значение 5, то пятый символ строки, определяемой меткой FORMAT, можно загрузить в регистр AL посредством оператора

MOVB AL.FORMAT(SI)

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

Кроме того, можно поместить базу (то есть нижний числовой адрес) массива в регистр ВХ, сохранив регистры SI или DI для отсчета. Такая схема называется индексной регистровой адресацией. Пример:

PUSH (ВХ)(DI)

Этот код извлекает содержимое ячейки из сегмента данных с адресом, который определяется суммой регистров ВХ и DI. Результирующее значение затем помещается в стек. Сочетание последних двух типов адресации дает индексную регистровую адресацию со смещением:

NOT 20(BX)(DI)

Эта команда обращается к слову памяти по адресам ВХ + DI + 20 и ВХ + DI + 21.

Все способы косвенной адресации, применимые к сегменту данных, актуальны и для стекового сегмента; в последнем случае базовый регистр ВХ заменяется указателем базы В Р. Таким образом, (ВР) — это только режим косвенной адресации стека регистров, однако существуют и более сложные режимы, в частности, косвенная адресация по указателю базы с индексом и смещением: ?1(BP)(SI). Эти режимы полезны при обращении к локальным переменным и параметрам функций, хранящихся по адресам стека в подпрограммах. Соответствующая схема описывается в подразделе «Вызовы подпрограмм».

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

Режим адресации, при котором операндом является константный байт или значение слова, называется непосредственной адресацией. Например:

СМР АХ,50

Эта команда сравнивает значение в регистре АХ с константой 50 и в зависимости от результата устанавливает биты во флаговом регистре.

Наконец, некоторые команды используют неявную адресацию. В таких командах операнд или операнды лишь подразумеваются. К примеру:

PUSH АХ

Эта команда вводит содержимое регистра АХ в стек; для этого она уменьшает значение SP на единицу, а затем копирует содержимое АХ в ячейку, на которую теперь указывает SP. При этом регистр SP в команде не упоминается. Аналогичным образом, регистр флагов состояния не упоминается в командах управления флагами. Неявные операнды применяются и в других командах.


⇐ Предыдущая страница| |Следующая страница ⇒

.