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