|
Поскольку механизм адресации
микропроцессора 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. С помощью одной
команды записать значения
сегмента и смещения нельзя. Программа
должна записывать значение
указателя двумя командами пересылки слов,
а не одной командой
записи указателя. Это приемлемо, так как
программа обычно читает
указатель гораздо чаще, чем записывает
его. Обычно программа
записывает указатель один раз, во время
инициализации, и может
быть, иногда меняет его во время смены
режимов работы системы. А
вот читается указатель, вероятно,
достаточно часто. В последующих
главах есть примеры, в которых значения
указателей и читаются, и
записываются.
|