Com a instrução CMPSB podemos comparar bytes de forma sequencial em memória. O primeiro operando
é recuperado a partir de DS:[SI] e o segundo operando, para comparação, é recuperado a partir de ES:[DI].
A flag D é utilizado para definir a direção em que a comparação é feita.
Operação:
DS:[SI] - ES:[DI]
O, S, Z, Ac, P, Cy alteradas
Flag D = 0
SI <- SI + 1
DI <- DI + 1
Flag D = 1
SI <- SI - 1
DI <- DI - 1
Operandos:
REG, MEM
MEM, REG
REG, REG
MEM, IME
REG, IME
F(Flags)
O: a
S: a
Z: a
Ac:a
P: a
Cy:a
Ex:
MOV AX, CS
MOV DS, AX ;Seta regs. de segmento
MOV ES, AX
LEA SI, vetor1 ; operando1
LEA DI, vetor2m ; operando2
MOV CX, 4 ; qtd bytes
CLD
REPE CMPSB ; comparação
; tratamento não igual
loop:
JMP loop
vetor1 db 1, 2, 3, 4
vetor2 db 1, 2, 3, 4