Инструкция LDS


Лучшие книги по Ассемблеру Лучшие книги по Ассемблеру

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

Инструкция LDS в Ассемблере загружает указатель, используя регистр ES. Синтаксис:

LDS REG, MEM

После выполнения этой команды флаги не изменяются.

Команда LDS REG, MEM выполняет те же действия, что и две следующие команды:

MOV REG, WORD PTR MEM
MOV DS,  WORD PTR MEM+2

Инструкция LDS считывает из памяти по указанному адресу двойное слово (32 бит), содержащее указатель (полный адрес какой-либо ячейки памяти), и загружает младшую половину указателя (то есть относительный адрес) в указанный в команде регистр общего назначения, а старшую половину указателя (то есть сегментный адрес) в регистр DS.

В качестве первого операнда (REG) команды LDS указывается регистр общего назначения, а в качестве второго (MEM) - ячейка памяти с двухсловным содержимым. Указатель, содержащийся в этой ячейке, может быть адресом как процедуры, так и поля данных.

А теперь ещё раз кратко:

LDS REG, MEM

Эта команда получает двойное слово, адрес которого находится в МЕМ. Затем первые 16 разрядов из этой области памяти загружаются в регистр REG, а вторая часть двойного слова - в регистр DS.

То есть в памяти по адресу MEM содержится указатель (полный адрес), который мы можем разделить на СЕГМЕНТ:СМЕЩЕНИЕ, и с помощью команды LDS записать сегмент в DS, а смещение в указанный в команде регистр (REG).

В описании инструкции MOV как раз был пример, где загрузка указателя выполняется с помощью двух команд. Сейчас, когда мы знаем об инструкции LDS, мы можем сократить этот пример на одну команду, то есть вместо двух команд MOV использовать одну команду LDS:

  .model	tiny
  .code
  ORG 	100h
	
start:	
                                   
  LDS BX, VIDEO     ; ES = B800h (память VGA), BX = 72Eh 
  MOV CL, 'A'       ; CL = 41h (ASCII-код).
  MOV CH, 01001110b ; CH = атрибуты цвета
                    ; (желтый текст на красном фоне).
  MOV [BX], CX      ; [0B800h:015Eh] = CX.
 	
  RET               ; Выйти из программы
	
VIDEO DW 72Eh
      DW 0B800h

  END start

Напоследок, как всегда, о происхождении аббревиатуры LDS.

LDS - это Load DS (загрузить DS).

См. также команду LES.



Первые шаги в программирование Первые шаги в программирование

Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su