Меню сайта

Урок 23. База + индекс + смещение

Программа -может — также — комбинировать — вычисляемый — адрес — — — базы -с
— — — вычисляемым — индексом. — Как — показано -на — Фиг.3.2, программа может
— — — использовать режим адресации с — двумя разными адресными регистрами.
— — — Для формирования исполнительногоадреса — в команде могут сочетаться
— — — любой из -регистров базы (BX и — BP) с любымиз — индексных регистров
— — — (SI -и — DI). — В — программе — — — — — может — — — — — быть — также -указано — смещение,
— — — добавляемое — к — сумме — значений -этих — двух — регистров. Этот способ
— — — адресации -обладает — максимальной — — — — гибкостью, -так — как — позволяет
— — — вычислять во — время выполнения программы и — адресбазы, и индексное
— — — значение. -Такая возможность — не — всегда -требуется, но — доступна в
— — — любой момент.
— — — — — Пример с классным журналом демонстрируетслучай, когда програм-
— — — ма может вычислять и адрес базы, — и индекс вектора. Для того, чтобы
— — — определить отметку — I-го ученика за — J-юконтрольную, потребовалось
— — — бы установить адрес базы на J-й — вектор и индексировать его по I-му
— — — элементу.
— — — — — На — -рис.3.3 — — приведена — — сводка — -восьми — различных — способов
— — — адресации, — — — возможных — в -микропроцессоре — 8088. — В -команде — могут
— — — использоваться любые из четырех — адресных регистров и смещение либо
— — — комбинация — — — базисногорегистра — и индексного — вместе со -смещением.
— — — Смысл колонки, обозначенной R/M, будетобъяснен позже.

— — — — — R/M — — — — — Адрес операнда
— — — — — ——————————
— — — — — 000 — — [BX+ SI + СМЕЩЕНИЕ]
— — — — — 001 — — [BX+ DI + СМЕЩЕНИЕ]
— — — — — 010 — — [BP+ SI + СМЕЩЕНИЕ]
— — — — — 011 — — [BP+ DI + СМЕЩЕНИЕ]
— — — — — 100 — — [SI+ СМЕЩЕНИЕ]
— — — — — 101 — — [DI+ СМЕЩЕНИЕ]
— — — — — 110 — — [BP+ СМЕЩЕНИЕ]
— — — — — 111 — — [BX+ СМЕЩЕНИЕ]
— — — — — —————————— Фиг. 3.3Способы адресации 8088

— — — — — В наборе команд 8088 — поле смещения для адресации оптимизирова-
— — — но таким образом, чтобы минимизироватькличество треуемых байт. Ко-
— — — манда может не содержать поле — смещения, когда смещение равно нулю.
— — — Если смещение — находится в диапазоне — от-127 до — 127, то для — него
— — — достаточно — — — одногобайта. — Когда же — для его -обозначения требуется
— — — полное 16-битовое поле адреса, то — поле смещения будет занимать два
— — — байта. Таким — образом, поле смещения -может по необходимости — иметь
— — — длину 0, 1 — — — или2 байта. Когда оно имеет — длину одинбайт, двоичное
— — — число перед форимроваием адереса получаетраспостранение знака. Это
— — — означает, что процессор перед выполнениемсложения помещает старший
— — — бит смещения — в старшие 8 — бит16-битового значения. — Это позволяет
— — — представлять — отрицательные смещения — водном — байте. Самое — лучшее
— — — здесь -то, что — ассемблер сам — определяет нужную — длину и — выбирает
— — — правильную и наиболее короткую команду длявыполнения этой работы.
— — — — — Но -не — — — — — смотря — — — — — даже -на — все — эти возможности адресации, набор
— — — команд -8088 допускает — только по — одному операнду — — — — — памяти в — одной
— — — команде. -Двухоперандная — команда — ADD -позволяет — складывать — либо
— — — регистр с ячейкой памяти, либо дварегистра. В одной команде нельзя
— — -сложить — две ячейки — памяти. Это -и означает, — что команда содержит
— — — только один адрес памяти.

Категория: Программирование на Ассемблере | Дата: 20.02.13

Меню раздела
Блок