Меню сайта

Урок 21. Вычисление адресов

В способе -прямой адресации — памятипривлекательна — — — — — простота, но во
— — — многих случаях программа вынужденавычислять действительный адрес в
— — — памяти. -Простейший — пример — — — -операции — с — вектором, -одномерным
— — — массивом. -В — программе — на -языке — — — Фортран — такую — — — структуруможно
— — — создать оператором

— — — — — DIMENTION — — OPND(20)

— — — В других -языках — высокого — — — — — уровня — — — — — существуют — аналогичные способы
— — — создания -массивов. — При — выполнении -программа — получает — доступ к
— — — разным -элементам в — соответствии со — значением индекса, — например,
— — — OPND(5). -Написание — программы — на — — — языке — — — — — ассемблера — требует -от
— — — программиста — вычисления -местонахождения — пятого — элемента -в поле
— — — данных OPND. Затем программа можетиспользовать полученное значение
— — — для прямой адресации. Однако, в — случае с выражением OPND(I), где I
— — — вычисляется в — ходе выполнения программы, -способа прямого указания
— — — правильного адреса для программы на языкеассемблера не существует.
— — — Адрес должен вычисляться в ходе выполненияпрограммы.
— — — — — Набор команд 8088 допускает — несколько способов определения ис-
— — — полнительного адреса (Effective Address -EA) операнда. Эти способы
— — — вычисления — — — адреса — — — — — называют -способами — адресации. — Их -количество
— — — предназначено — для — облегчения — задачи -определения — исполнительных
— — — адресов. Благодаря правильному выборуспособа адресации программист
— — — может минимизировать количество вычисленийв программе.
— — — — — Формула для определения I-го элементамассива OPND такова:

— — — — — EA = адрес базы OPND + (I * длина),

— — — где длина — это длина — каждого элементамассива. — В данном примере
— — — OPND — массив, — состоящий из — слов, поэтому — каждый элемент — в нем
— — — имеет длину 2 байта. Тогда формулавыглядит так:

— — — — — EA = адрес базы + (I * 2)

— — — — — Для вычисления этого адреса требуется покрайней мере один — ре-
— — — гистр, -содержащий адрес операнда. Программа может вычислить испол-
— — — нительный адрес, оставив результат в — одном -из — регистров. — Тогда,
— — — вместо указния адреса в самой команде INC, — можно -просто — указать,
— — — какой из регистров его содержит.
— — — — — Для хранения адресов операндов программаможет использовать лю-
— — — бой -из — четырех адресных регистров.Так, в нашем примере программа
— — — добавляет к адресу базы 2*I и помещаетрезультат в регистр BX. — Со-
— — — ответствующий элемент вектора в этомслучае будет увеличиваться ко-
— — — мандой

— — — — — INC — — -WORD PTR [BX]

— — — — — Выражение [BX] сообщает ассемблеру, чторегистр BX содержит ад-
— — — рес операнда, — а не является операндом -сам по себе. Скобки — [ и ],
— — — заключающие — какое-либо — значение, — — — указывают -ассемблеру, — что это
— — — значение — адрес. — Другая часть — операндного выражения, — WORD PTR,
— — — требуется — — — — ассемблеру — — для — -информации, — — — — — что — операнд -является
— — — переменной типа — WORD (слово). Далее мы -обсудим оператор PTR более
— — — подробно.

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

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