Меню
Главная
Авторизация/Регистрация
 
Главная arrow Товароведение arrow Электроника

Режимы адресации и система команд микропроцессора Intel 8086

Режимы адресации

Способ определения местонахождения операнда называется режимом адресации. Различают семь основных режимов адресации данных, которые можно разделить на две группы. К первой относят режимы, в которых место, в котором находится операнд, указывается непосредственно в команде. Это – непосредственный, регистровый и прямой режимы адресации. В непосредственном режиме адресации операнд располагается в самой команде в виде двоичного числа (рис. 4.15, а). В прямом режиме в команде после кода операции располагается внутрисегментный адрес ячейки ОЗУ, в которой хранится операнд (рис. 4.15, б). Наконец, в регистровом режиме в команде указан один из регистров данных или адреса, в котором хранится операнд (рис. 4.15, в).

Ко второй группе режимов адресации относят режимы, в которых содержатся данные для вычисления внутрисегментного адреса ячейки ОЗУ, хранящей операнд. Это – четыре косвенных режима: регистровый косвенный, регистровый относительный, базовый индексный и относительный базовый индексный. При формировании адреса в этих режимах используется содержимое универсальных адресных регистров, дополнительно к которым выделяется регистр данных ВХ.

Самым простым является регистровый косвенный режим (рис. 4.15, г), в котором адрес операнда хранится в одном из индексных регистров, или в регистре ВХ, а в команде указывается код этого регистра. Более сложными являются регистровый относительный (рис. 4.15, д) и базовый индексный (рис. 4.15, е) режимы адресации. В первом адрес образуется путем сложения содержимого одного из указанных регистров и смещения – двоичного числа, хранящегося в команде в поле операнда. Во втором режиме адрес получается путем сложения содержимого одного из базовых регистров (BP, ВХ) с содержимым одного из индексных регистров (SI, DI).

Непосредственный (а), прямой (б), регистровый (в), регистровый косвенный (г), регистровый относительный (б), базовый индексный (е) и относительный базовый индексный (ж) режимы адресации

Рис. 4.15. Непосредственный (а), прямой (б), регистровый (в), регистровый косвенный (г), регистровый относительный (б), базовый индексный (е) и относительный базовый индексный (ж) режимы адресации

Самым сложным косвенным режимом адресации является относительный базовый индексный режим (рис. 4.15, ж). Здесь адрес операнда образуется путем сложения трех чисел: содержимого одного из базовых регистров, одного из индексных регистров и смещения.

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

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

Работу с массивами можно организовать следующим образом. Поместим в базовый регистр (ВХ или ВР) начальный адрес массива, а в индексный регистр (DI или Si) – номер элемента массива. Помер элемента можно в каждом цикле увеличивать на единицу (например, SI: = SI + 1). В результате в каждом новом цикле адрес ячейки ОЗУ, вычисленный в режиме базовой индексной адресации, будет соответствовать новому элементу массива.

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

Кроме режимов адресации, используемых для определения местонахождения операндов, в МП Intel 8086 имеется несколько режимов для определения адреса следующей выполняемой команды в случаях переходов. Переходы возможны как внутри сегмента исполняемой программы, так и в другие сегменты. Для переходов внутри сегмента исполняемой программы используются внутрисегментный прямой и внутрисегментный косвенный режимы адресации. В прямом режиме адрес следующей команды формируется путем сложения содержимого программного счетчика со смещением (положительным или отрицательным), содержащимся в самой команде. В косвенном режиме адрес следующей команды загружается на место текущего непосредственно в программный счетчик. Адрес может быть взят либо из регистра, либо из ячейки ОЗУ. Чтобы указать эту ячейку ОЗУ, используются все возможные режимы адресации данных.

Для перехода из одного сегмента памяти в другой недостаточно изменить только содержимое программного счетчика. Для этого нужно занести новый начальный адрес сегмента в регистр CS. Для этого используют прямой и косвенный межсегментные режимы адресации. В первом из них в команде содержится два адреса – новые адрес сегмента и внутрисегментный. Во втором – оба адреса хранятся в соседних ячейках ОЗУ.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

Популярные страницы