String Operation Instructions

CLD            clear direction flag to UP (DF←UP←0)
                sets ▲ (Delta) to positive; string ops auto-increment
STD            set direction flag to DN (DF←DN←1)
                sets ▲ (Delta) to negative; string ops auto-decrement

REP/REPE/REPZ  (prefix) repeat: perform string operation repeatedly
                CX←(CX-1); string op repeats until CX==0
REPNE/REPNZ    (prefix) repeat: useful for string ops CMPS and SCAS
                ZF←0; CX←(CX-1); StrOp repeats while (CX!=0 and ZF==0)

MOVSB          copy byte(word) string (byte:▲=1, word:▲=2)
MOVSW           ES:[DI]←DS:[SI]; DI+=▲; SI+=▲
MOVSXB         copy byte(word) with SF (sign) extension                386+
MOVSXW         copy byte(word) with ZF (zero) extension                386+

LODSB          copy string byte(word) into AL(AX)
                AL ← DS:[SI]; SI+=1;
LODSW           AX ← DS:[SI]; SI+=2;

STOSB          store bytes(words) into string
                ES:[DI]←AL; DI+=1;
STOSW           ES:[DI]←AX; DI+=2;

CMPSB          compare byte(word) strings (byte:▲=1, word:▲=2)
CMPSW           flags←(result of CMP DS:[SI],ES:[DI]); DI+=▲; SI+=▲

SCASB          find byte(word) in string
                flags←(result of CMP DS:[DI],AL); DI+=1
SCASW           flags←(result of CMP DS:[DI],AX); DI+=2

INSB           port input byte(word) into string (byte:▲=1, word:▲=2)
INSW                                                                   286+
                ES:[DI]←(byte/word at port DX); DI+=▲;

OUTSB          port output byte(word) from string (byte:▲=1, word:▲=2)
OUTSW                                                                  286+
                [port DX]←DS:[SI]; SI+=▲;
────────────────────────────────────────────────────────────────────────────
                                                            Instruction Set