Post on 07-Mar-2015
MANEJO DE CADENASMANEJO DE CADENAS
Equipo 7Equipo 7
Villanueva Martínez Yesenia NallelyVillanueva Martínez Yesenia NallelyOlvera Hernández MaribelOlvera Hernández Maribel
Acevedo Chávez José ErnestoAcevedo Chávez José ErnestoÁvila Puente Tomas EduardoÁvila Puente Tomas Eduardo
Ortiz Alvarado Francisco JavierOrtiz Alvarado Francisco JavierRomero Álvarez AntonioRomero Álvarez Antonio
Operaciones para Cadenas: LODS, STOS, MOVS, CMPS, SCAS, INS, OUTS
Operación Auxiliar: CLD (Auto-incrementa SI y/o DI), STD (Auto-decrementa SI y/o DI)
; INICIALIZACION CLD ; AUTO-INCREMENTO MOV SI, STR ; INICIO-CADENA LODSB ; OPERACION: AL=MEM[SI++]
LODS LODS: LOaD String. Lee un caracter a la vez en
el acumulador
Registros Implicados: Registros que debe inicializar antes de usar la instrucción
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI
AL/AX/EAX: Dato consultado. LODSB usa AL, LODSW usa AX, LODSW usa EAX
DS:SI: Apunta al elemento actual de la cadena consultada
Tabla 1. Variantes de LODSB
Operación Equivalente LODSB MOV AL, DS:
[SI] INC SI
LODSW MOV AX, DS:[SI] ADD SI,2
STOSSTOS: STOre String. Graba un caracter de una
cadena a la vez
Registros Implicados: Registros que debe inicializar antes de usar la instrucción
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de DI
AL/AX/EAX: Dato consultado. STOSB usa AL, STOSW usa AX, STOSW usa EAX
ES:DI: Apunta al elemento actual del bloque de memoria a grabar
Tabla 2. Variantes de STOSB
Operación Equivalente STOSB MOV ES:[DI],
AL INC DI
STOSW MOV ES:[DI], AX ADD DI,2
SCASSCAS: SCAn String. Busca valor del
acumulador en una cadena
Registros Implicados: Registros que debe inicializar antes de usar la instrucción
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de DI
AL/AX/EAX: Dato a comparar. SCASB usa AL, SCASW usa AX, SCASW usa EAX
ES:DI: Indice para la cadena donde se buscará el dato
Tabla 3. Variantes de SCASOperación Equivalente
SCASB CMP AL, ES:[DI] INC DI
SCASW CMP AX, ES:[DI] ADD DI,2
REP SCAS REP SCAS: REPite búsqueda de un dato
mientras sea diferente (REPNE) o igual (REPE) en una cadena. Termina búsqueda si el dato es igual (REPNE), diferente (REPE) o el contador CX es cero
Registros Implicados: Registros que debe inicializar antes de usar la instrucción
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de DI
AL/AX/EAX: Dato a comparar. SCASB usa AL, SCASW usa AX, SCASW usa EAX
ES:DI: Indice para la cadena donde se buscará el dato
CX: Máximo no. comparaciones = Tamaño de la cadena
Tabla 4. Variantes de REP SCAS Operación Equivalente REPE SCASB CYCLE: CMP AL,
ES:[DI] JE END INC DI LOOP CYCLE
REPNE SCASB CYCLE: CMP AL, ES:[DI] JNE END INC DI LOOP CYCLE
MOVSMOVe String. Transfiere una cadena de [SI] a
[DI]. Nota: Existe MOVSB, MOVSW y MOVSD. Además, no se modifica el registro AX
Registros Implicados: Registros que debe inicializar antes de usar la instrucción
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI/DI
DS:SI: Indice para la cadena origen
ES:DI: Indice para la cadena origen
Tabla 5. Variantes de MOVSB Operación Equivalente MOVSB MOV ES:[DI], DS:[SI]
INC SI INC DI
MOVSW MOV ES:[DI], DS:[SI] ADD SI,2 ADD DI,2
REP MOVSREP MOVS: Copia una cadena en una sóla
instrucción. El número de caracteres a copiar se especifica en el registro CX.
Registros Implicados: Registros que debe inicializar antes de usar la instrucción
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI/DI
DS:SI: Indice para la cadena origenES:DI: Indice para la cadena origenCX: Tamaño de la cadena
Tabla 6. Variantes de MOVSB
Operación Equivalente
REP MOVSB CICLO: MOV ES:[DI], DS:[SI] INC SI INC DI LOOP CICLO