top of page



·         Las instrucciones de cadena permiten trabajar con bloques de memoria a nivel byte o palabra.

·         Las instrucciones de cadena tienen mnemónicos que terminan con  la letra "S", y operan sobre los registros que se especificarán en cada caso.

·         Ya que pueden actuar sobre bytes o palabras, es  necesario indicar este extremo, lo que se conseguirá escribiendo la letra "B“ , "W“ o ”D” tras la "S" del mnemónico.

 

Bandera de dirección

 

La bandera de dirección (D) selecciona la operación de incremento automático (D=0) o la de disminución automática (D=1) para los registro DI y SI durante las operaciones de cadena.

La instrucción CLD borra la bandera D(D=0) y la instrucción STD la activa (D=1). Por lo tanto, la instrucción CLD selecciona el modo de incremento automático (D=0) y STD el de disminución automática (D=1).

DI o SI incrementan en 1 si se transfiere un byte, al transferir una palabra en 2 y una doble palabra en 4. El incremento solo afecta a los registros usados por la instrucción de cadena.

 

Registros DI y SI

 

·         Durante la ejecución de instrucciones de cadena, ocurren accesos a memoria ya se por medio de uno de los dos registros DI y SI.

·         La dirección de desplazamiento DI accede a los datos del segmento adicional (ES) para todas las instrucciones de cadena que se utilizan.

 

La dirección de desplazamiento SI accede por omisión a datos ubicados en el segmento de datos.

 

Al ejecutar una instrucción de cadena, la asignación de segmento para DI siempre está en el segmento adicional. Esta asignación no puede ser cambiada.

 

LODS

 

Desde           Hasta

DS: SI à AL o AX

 

}Carga desde una cadena un elemento a el acumulador AL o AX según la longitud del elemento. Esta instrucción no se usan con prefijos puesto que no tendría sentido ya que cada vez que carga un valor al acumulador borra el anterior.

 

LODSB

 

}Pone 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

 

LODSW

 

 

 

 

 

 

 

STOS

STOS

 

}La instrucción STOS (STOre String) almacena el contenido del  registro AL, AX o EAX en la  dirección de memoria especificada por ES:DI

}

 STOSB

ES[DI]<- AL

DI = DI ± 1

 

STOSW

 

ES[DI]<- AX

DI = DI ± 2

 

STOSD

ES[DI]<- EAX

DI = DI ± 4

 

 

STOS con un REP

 

}El prefijo de repetición REP se agrega a cualquier instrucción de transferencia de cadena de datos excepto la instrucción LODS. El prefijo REP ocasiona que CX disminuya 1 cada vez que se ejecuta una instrucción sobre la cadena.

 

3.3.4 INSTRUCCIONES DIVERSAS PARA TRANSFERENCIAS DE DATOS

bottom of page