Меню сайта

Урок 47. Загрузка указателя

Поскольку механизм адресациимикропроцессора 8088 требует
— — — определения как сегмента, так и смещениякаждой переменной,
— — — желательно загрузить всю эту адреснуюинформацию единственной
— — — командой. -Эту работу выполняют команды LDS и LES. — — — — — Команда

— — — — — LDS SI, EXDWORD

— — — — — загружает регистровую пару DS:SIзначениями сегмента и
— — — смещения, содержащимися в переменнойEXDWORD. Команда LDS загружает
— — — в регистр SI значение смещения,расположенное по адресу EXDWORD, а
— — — в регистр DS — значение сегмента,расположенное по адресу
— — — EXDWORD+2. Команда LDS одна загружает два16=битовых регистра
— — — значением указателя, взятого из некоторойячейки памяти. Так как
— — — эта команда устанавливает и сегментныйрегистр, и регистр смещения,
— — — программа может сразу адресоваться кобъекту, на который этот адрес
— — — указывает. Программа может организоватьуказатель из сегмента и
— — — смещения во время ассемблирования спомощью оператора DD, который
— — — порождает 32=битовое поле данных. Еслиоперандом DD является
— — — адресное выражение, двухсловное поле будетсодержать сегмент и
— — — смещение адресного значения в том же самомформате, который
— — — используется в командах LDS и LES.

— — — — — Команда LES идентична LDS, за исключениемтого, что она
— — — загружает регистр ES. С помощью однойкоманды записать значения
— — — сегмента и смещения нельзя. Программадолжна записывать значение
— — — указателя двумя командами пересылки слов,а не одной командой
— — — записи указателя. Это приемлемо, так какпрограмма обычно читает
— — — указатель гораздо чаще, чем записываетего. Обычно программа
— — — записывает указатель один раз, во времяинициализации, и может
— — — быть, иногда меняет его во время сменырежимов работы системы. А
— — — вот читается указатель, вероятно,достаточно часто. В последующих
— — — главах есть примеры, в которых значенияуказателей и читаются, и
— — — записываются.

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

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