Está en la página 1de 17

UNIDAD 02

SESIÓN 07
MANIPULACIÓN
CADENAS
Instrucciones para manipular cadenas de cáracteres

Una cadena es una serie de bytes o palabras de datos disponibles en la


memoria en ubicaciones consecutivas. Se le conoce como cadena de bytes
o cadena de palabras. Su memoria siempre se asigna en orden secuencial.
Las instrucciones que se utilizan para manipular cadenas se denominan
instrucciones de manipulación de cadenas.
NUMERO OPCODE OPERAND EXPLANATION EXAMPLE

moves contents of byte given


MOVSB none MOVSB
1 by DS:SI into ES:DI

moves contents of word given


MOVSW none MOVSW
2 by DS:SI into ES:DI

moves contents of double


MOVD none MOVD
3 word given by DS:SI into ES:DI
moves the byte at address
LODSB none DS:SI into AL; SI is incr/decr by LODSB
4 1
moves the word at address
LODSW none DS: SI into AX; SI is incr/decr LODSW
5 by 2
moves the double word at
LODSD none address DS:SI into EAX; SI is LODSD
6 incr/decr by 4
moves contents of AL to byte
STOSB none address given by ES:DI; DI is STOSB
7 incr/dec by 1
moves the contents of AX to
STOSW none the word address given by STOSW
8 ES:DI; DI is incr/decr by 2
moves contents of EAX to the
STOSD none DOUBLE WORD address STOSD
9 given by ES:DI; DI is incr/decr
compares byte at ES:DI with
SCASB none AL and sets flags according to SCASB
10 result
compares word at ES:DI with
SCASW none SCASW
AX and sets flags
11
compares double word at
SCASD none SCASD
12 ES:DI with EAX and sets flags
compares byte at ES:DI with
CMPSB none CMPSB
byte at DS:SI and sets flags
13
compares word at ES:DI with
CMPSW none CMPSW
14 word at DS:SI and sets flags
compares double word at
CMPSD none ES:DI with double word at CMPSD
15 DS:SI and sets flags
repeat the given instruction till
REP instruction REP MOVSB
16 CX != 0
repeat the given instruction
REPE instruction REPE
17 while CX = 0
repeat the given instruction
REPZ instruction REPZ
18 while ZF = 1
repeat the given instruction
REPNE instruction REPNE
19 while CX != 0
repeat the given instruction
REPNZ instruction REPNZ
20 while ZF = 0
MOVSB

Transfiere un byte con prefijo de repetición REP, es ideal para esta tarea como se
ilustra en el siguiente programa :

Operación:

ES:[DI] <- DS:[SI] (un byte)

DI <- DI±1

SI <- SI±1
MOVSW

Copiar dos bytes de la cadena fuente al destino.

Operación:

ES:[DI] <- DS:[SI] (dos bytes)

DI <- DI±2

SI <- SI±2
LODSB

Poner en el acumulador un byte de la cadena fuente.

Operación:

AL <- DS:[SI] (un byte)

SI <- SI±1
LODSW

Poner en el acumulador dos bytes de la cadena fuente.

Operación:

AX <- DS:[SI] (dos bytes)

SI <- SI±2
STOSB

Almacenar en la cadena destino un byte del acumulador.

Operación:

ES:[DI] <- AL (un byte)

DI <- DI±1
STOSW

Almacenar en la cadena destino dos bytes del acumulador.

Operación:

ES:[DI] <- AX (dos bytes)

DI <- DI±2
CMPSB

Comparar un byte de la cadena fuente con el destino.

Operación:

DS:[SI] - ES:[DI] (Un byte, afecta sólo los bits de estado)

DI <- DI±1

SI <- SI±1
CMPSW

Comparar dos bytes de la cadena fuente con el destino.

Operación:

DS:[SI] - ES:[DI] (Dos bytes, afecta sólo los bits de estado)

DI <- DI±2

SI <- SI±2
SCASB

Comparar un byte del acumulador con la cadena destino.

Operación:

AL - ES:[DI] (Un byte, afecta sólo los flags)

DI <- DI±1
SCASW

Comparar dos bytes del acumulador con la cadena destino.

Operación:

AX - ES:[DI] (Dos byte, afecta sólo los flags)

DI <- DI±2
NOTAS GENERALES:

En todos los casos el signo + se toma si el indicador DF vale cero.

En todos los casos el signo - se toma si el indicador DF vale uno.

Prefijo para las instrucciones MOVSB, MOVSW, LODSB, LODSW, STOSB y STOSW:

REP: Repetir la instrucción CX veces.

Prefijos para las instrucciones CMPSB, CMPSW, SCASB, SCASW:

REPZ/REPE: Repetir mientras que sean iguales hasta un máximo de CX veces.

REPNZ/REPNE: Repetir mientras sean diferentes hasta un máximo de CX veces.

También podría gustarte