Команда STOSB


Команда STOSB в Ассемблере записывает байт из регистра AL в память по адресу ES:[DI], и изменяет SI. Синтаксис:

STOSB

С помощью этой команды можно заполнить массив байтов, адрес которого указан в DI.

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

Алгоритм работы:

  • ES:[DI] = AL
  • Если DF = 0, то DI = DI + 1
  • Иначе DI = DI - 1

Подробнее про флаг DF можете почитать здесь.

Таким образом с помощью инструкции STOSB можно заполнить массив байтов значением, которое находится в регистре AL. Перед вызовом этой команды надо адрес массива записать в ES:[DI].

Пример на ассемблере:

  .model	tiny
  .code
  ORG 	100h
	
start:

  LEA  DI,  mas   ;Адрес массива данных в DI 
  MOV  AL,  15h   ;Значение, которым будем заполнять массив (15h)
  MOV  CX,  5     ;Количество байтов для заполнения
  
  REP  STOSB      ;Заполнить массив байтов
            
  RET        

  mas DB 5 DUP(0)
  
END	start

До выполнения программы в массиве находятся mas нули:

Содержимое памяти до выполнения команды STOSB

После выполнения программы во всех элементах массива будет значение 15h:

Содержимое памяти после выполнения команды STOSB

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

STOSB - это STOre String Bytes (записать строку байтов). Почему строку? Потому что в большинстве случаев эта команда используется для работы со строками.



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

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

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

Яндекс.Метрика