Справочник по языку Ассемблера IBM PC

       

STOS/STOSB/STOSW/STOSD


(Store String Byte/Word/Double word operands)

Сохранение строки байтов/слов/двойных слов

 

Схема команды:  stos приемник 
stosb 
stosw 
stosd

Назначение: сохранение элемента из регистра-аккумулятора al/ax/eax в последовательности (цепочке).


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

записать элемент из регистра al/ax/eax в ячейку памяти, адресуемую парой es:di/edi. Размер элемента определяется неявно (для команды stos) или конкретной применяемой командой (для команд stosb, stosw, stosd);

изменить значение регистра di на величину, равную длине элемента цепочки. Знак этого изменения зависит от состояния флага df:

df=0 — увеличить, что означает просмотр от начала цепочки к ее концу;



df=1 — уменьшить, что означает просмотр от конца цепочки к ее началу.

Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги

Применение:


Команды сохраняют элемент из регистров al/ax/eax в ячейку памяти. Перед командой stos можно указать префикс повторения rep, в этом случае появляется возможность работы с блоками памяти, заполняя их значениями в соответствии с содержимым регистра ecx/cx.

;заполнить некоторую область памяти пробелами str     db      'Какая-то строка' len_str=$-str ...         mov     ax,@data         mov     ds,ax         mov     es,ax         cld         mov     al,' '         lea     di,str         mov     cx,len_str rep     stosb           ;заполняем пробелами строку str         

 

;пример совместной работы stosb и lodsb: ;копировать одну строку в другую до первого пробела str1    db      'Какая-то строка' len_str1=$-str str2    db      len_str1 dup (' ') ...         mov     ax,@data         mov     ds,ax         mov     es,ax         cld         mov     cx,len_str1         lea     si,str1         lea     di,str2 m1:     lodsb         cmp     al,' '         jc      exit    ;выход, если пробел         stosb         loop    m1 exit:         

См. также: урок 11 и команды , , , , ,



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