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