Вы здесь: HomeSTOS/STOSB/STOSW

STOS/STOSB/STOSW

STOS/STOSB/STOSW: Запись однобайтовой или двухбайтовой строки. Сохраняет байт или слово в памяти. При использовании префикса REP операция дублирует  значение  байта  или  слова  определенное число раз, что делает ее удобной для очистки областей памяти.  Для команды STOSB необходимый байт загружается в  регистр AL,  а  для  команды  STOSW необходимое  слово  загружается  в  регистр  АХ.  Регистровая  пара  ES:DI указывает область памяти, куда должен быть записан байт  или  слово.  Если флаг DF равен нулю, то  операция  записывает в  память  слева  направо  и увеличивает регистр DI. Если флаг DF равен единице, то операция записывает в память справа налево и уменьшает значение в регистре DI.

Пример программы на FASM ассемблере с использованием STOSB. Программа принимает строку до энтера а затем выводит содержимое на экран:

 

org 100h
mov di, buf
@@:
mov ah,1
int 21h
stosb
cmp  al,13
jne @r
mov al,'$'
stosb
mov ah,9
mov dx,buf
int 21h
mov ax,4c00h
int 21h
buf db 512 dup (0)

Следующий пример показывает как можно обнулить строку размером в 100 слов( двойных байт) командой STOSW и с применением префикса REP :

org 100h
mov di, buf
xor ax,ax
mov cx,100
rep stosw
mov ax,4c00h
int 21h
buf dw 100 dup (?) 

CX содержит количество повторений которое должна сделать команда  stosw также нужно заменить что при занесении значения из регистра AX в память AL заноситься в первый байт а AH во второй

Добавить комментарий


Защитный код
Обновить