Assembler для начинающих


Загрузка указателя



Загрузка указателя


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




Содержание раздела