Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Способы адресации команд процессора Intel 8086Содержание книги
Поиск на нашем сайте Способы адресации команд определяют правила вычисления адреса команды в сегменте кода, которая должна быть выполнена следующей, при наличии в программе команд передачи управления (условных и безусловных переходов). В зависимости от того, в каком сегменте кода находится требуемая команда и явно или нет указывается её адрес, выделяют следующие режимы адресации команд: 1. Внутрисегментный прямой. Команда, к которой осуществляется переход, находится в том же сегменте кода, что и текущая команда перехода, т.е. при выполнении перехода содержимое регистра CS не изменяется. Эффективный адрес перехода (смещение команды в сегменте кода) вычисляется как сумма текущего содержимого указателя команд IP и 8- или 16- битного относительного смещения (длины пропускаемых команд). Данный режим допустим в условных и безусловных переходах. Например: … cmp ah, al; Сравнивается содержимое регистров ah и al jne met; Если содержимое регистров не равно, ; выполняется переход на команду с адресом met inc al; Увеличение содержимого регистра al на 1 met: inc ah; Увеличение содержимого регистра ah на 1 … Если содержимое регистров ah и al не равно (команда jne), то осуществляется переход к команде с меткой met путём добавления к текущему содержимому регистра IP длины пропускаемой команды (inc al). 2. Межсегментный прямой. Команда, к которой осуществляется переход, находится в другом сегменте кода по отношению к текущей команде перехода, т.е. при выполнении перехода изменяется содержимое регистра CS и регистра IP. В команде указывается пара: сегмент и смещение. Начальный адрес нового сегмента кода загружается в сегментный регистр CS, а смещение – в регистр IP. Данный режим допустим только в командах безусловного перехода. В качестве примера рассмотрим программу, состоящую из двух сегментов кода. c_s1 segment assume cs:c_s1 m1: mov ah,4 add ah,7 jmp c _ s: m 2; Прямой межсегментный переход в сегмент c _ s c_s1 ends c_s segment assume cs:c_s begin: jmp c _ s 1: m 1; Прямой межсегментный переход в сегмент c _ s 1 m2: mov ah,4ch int 21h c_s ends end begin Сегмент кода c _ s является главным (в нём содержится начало и конец программы) и с него начинается выполнение программы. Выделенные жирным шрифтом команды осуществляют прямой межсегментный переход. При этом адрес перехода, указанный в этих командах, является четырёхбайтовым (два старшие байта указывают начальный адрес сегмента, два младшие байта – смещение команды в этом сегменте). При выполнении первого перехода в регистр CS записывается начальный адрес сегмента c _ s 1, а в регистр IP – адрес команды в этом сегменте кода (m 1). Второй межсегментный переход выполняется аналогично. Таким образом, при прямой адресации в адресном поле команды содержится адрес перехода – адрес, по которому размещается следующая выполняемая команда. 3. Внутрисегментный косвенный. В этом случае двухбайтовый адрес перехода размещается в ячейках памяти по некоторому адресу (смещению) в сегменте данных. В команде перехода это смещение указывается в регистре процессора или ячейке памяти с помощью любого режима адресации данных, кроме непосредственного. Содержимое указателя команд IP заменяется соответствующим содержимым регистра или ячейки памяти. Данный способ допустим только в командах безусловного перехода. Например: d_s segment adr dw met; По адресу adr указан адрес команды, ; на которую должен быть выполнен переход d_s ends c_s segment assume ds:d_s, cs:c_s begin: mov ax, d_s mov ds, ax add ah, al; Складывается содержимое регистров ah и al jmp adr; Выполняется переход на команду, адрес которой ; указан по смещению adr в сегменте данных inc al; Увеличение содержимого регистра al на 1 met: inc ah; Увеличение содержимого регистра ah на 1 mov ah, 4ch int 21h c_s ens end begin В приведённом выше примере адрес перехода указан в ячейке памяти по смещению adr относительно начала сегмента данных. В команде безусловного перехода используется прямой режим адресации данных для указания местоположения адреса перехода, т.е. адрес адреса. 4. Межсегментный косвенный. В этом режиме четырёхбайтовый адрес перехода размещается в смежных ячейках памяти по некоторому адресу (смещению) в сегменте данных. В команде перехода это смещение указывается в регистре процессора или ячейке памяти с помощью любого режима адресации данных, кроме непосредственного и регистрового. Содержимое регистров CS и IP заменяется содержимым двух смежных слов памяти, хранящихся по этому смещению в сегменте данных. Младшее слово загружается в регистр IP, старшее – в регистр CS. Данный режим допустим только в командах безусловного перехода. В качестве примера рассмотрим программу, состоящую из двух сегментов кода и одного сегмента данных. В сегменте данных по адресу a указан адрес перехода в виде двойного машинного слова. d_s segment a dd c _ s 1: m 1; По адресу a указан адрес перехода в сегмент c _ s 1 ; по смещению m 1 d_s ends c_s1 segment assume cs:c_s1 m1: mov ah,4 add ah,7 jmp c_s:m2 c_s1 ends c_s segment assume ds:d_s, cs:c_s begin: lea bp, a; В регистр bp загружается адрес ячейки a jmp dword ptr [bp]; Выполняется безусловный межсегментный ; переход по адресу, указанному в регистре bp m2: mov ah,4ch int 21h c_s ends end begin Перед выполнением команды перехода в регистр BP загружается адрес ячейки a, по которому хранится адрес перехода в сегмент c _ s 1 на команду с адресом m 1. В команде перехода с помощью регистра BP указывается местонахождение адреса перехода в виде двойного машинного слова с использованием косвенной регистровой адресации данных. Рассмотренные способы адресации команд используются практически во всех системах команд, расширяя или сокращая список команд конкретного процессора.
|
||
|
Последнее изменение этой страницы: 2020-12-09; просмотров: 211; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.176 (0.009 с.) |