STOS             Store String (Byte or Word)         Flags: not altered

STOS destination-string

Logic:    (ES:DI)   Accumulator
if DF = 0
DI   DI + n         ; n = 1 for byte, 2 for word scan
DI   DI - n

STOS copies the value (byte or word) in AL or AX into the location
pointed to by ES:DI. DI is then incremented (if the direction flag is
cleared) or decremented (if the direction flag is set), in preparation
for storing the accumulator in the next location.

Operands                  Clocks   Transfers  Bytes   Example
dest-string               11(15)       1        1     STOS WORD_ARRAY
(repeat) dest-string  9 + 10(14)/rep 1/rep      1     REP STOS BYTE_ARRAY

Notes:         This instruction is always translated by the
assembler into either STOSB, Store String Byte, or
STOSW, Store String Word, depending upon whether
destination-string refers to a string of bytes or
words. In either case, however, you must explicitly
load the DI register with the offset of the string.


When used in conjunction with the REP prefixes, the Store String
instructions are useful for initializing a block of memory. For
example, the following code would initialize the 100-byte memory block
at BUFFER to 0:

MOV     AL,0            ;The value to initialize BUFFER to
LEA     DI,BUFFER       ;Starting location of BUFFER
MOV     CX,100          ;Size of BUFFER
CLD                     ;Let's move in forward direction
REP     STOS BUFFER     ;Compare this line to example for STOSB

See also: STOSB
See also: STOSW
See also: CMPS
See also: LODS
See also: MOVS
See also: SCAS
See also: REP
See also: CLD
See also: STD

STOS Store String (Byte or Word)