На главную Назад
Добро пожаловать, уважаемый посетитель!

Программаможеттакжекомбинироватьвычисляемыйадресбазыс

вычисляемыминдексом.КакпоказанонаФиг.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позволяетскладыватьлибо

регистр с ячейкой памяти, либо два регистра. В одной команде нельзя

сложитьдве ячейкипамяти. Этои означает,что команда содержит

только один адрес памяти.


 

Mail.ru