1 / 19

Instrucciones de cadena

Instrucciones de cadena. Absalón Huízar Lucía Islas Mitzi Yaileth Arelly Martínez Hernández Yair Elohim 6CM8. Lenguaje Ensamblador. Las instrucciones de cadena permiten trabajar con bloques de memoria a nivel byte o palabra.

yoko-lawson
Download Presentation

Instrucciones de cadena

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Instrucciones de cadena Absalón Huízar Lucía Islas Mitzi Yaileth Arelly Martínez Hernández Yair Elohim 6CM8 Lenguaje Ensamblador

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. LODSB • Pone en el acumulador un byte de la cadena fuente. Operación: AL <- DS:SI (un byte) SI <- SI±1

  8. LODSW Poner en el acumulador dos bytes de la cadena fuente. Operación: AX <- DS:SI (dos bytes) SI <- SI±2

  9. LODSW

  10. 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

  11. STOSW ES[DI]<- AX DI = DI ± 2 STOSD ES[DI]<- EAX DI = DI ± 4

  12. 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.

  13. MOVS La instrucción mas usada es MOVS (MOVeString), la cual sirve para trasladar uno (MOVSB) dos bytes (MOVSW) o cuatro bytes (MOVD). Esta instrucción lee un dato de DS:SI y lo almacena en ES:DI. Después, los registro SI y DI se modifican según la misma lógica que para las instrucciones LODS y STOS. Ésta es la única transferencia de memoria a memoria permitida en los microprocesadores 8086 al Pentium II.

  14. MOVSB ES[DI]<-DS:SI DI = DI ± 1 SI =SI±1 MOVSW ES[DI]<-DS:SI DI = DI ± 2 SI =SI±2 MOVSD ES[DI]<-DS:SI DI = DI ± 4 SI =SI±4

  15. INS La instrucción INS transfiere un byte, palabra o doble palabra desde un dispositivo de E/S hacia ES:DI. El registro DX contiene la dirección de E/S INSB ES:DI<- [DX] DI=DI±1

  16. INSW ES:DI<- [DX] DI=DI±2 INSD ES:DI<- [DX] DI=DI±4

  17. Ejemplo ;uso de la instruccion REP INSB para dar entrada de datos a un arreglo de memoria MOV DI, OFFSET LISTS ;direcciona al arreglo MOV DX,3ACH ;direcciona E/S CLD ;autoincremento MOV CX,50 ;carga la cuenta REP INSB ;lee datos

  18. OUTS • La instrucción OUTS transfiere un byte, palabra o doble palabra desde DS:SI a un dispositivo de E/S. OUTSB [DX ]<-DS:SI DI=DI±1

  19. Ejemplo ;uso de REP OUTS para dar salida a datos desde un arreglo de memoria MOV SI,OFFSET Arreglo ;direcciona el arreglo MOV DX,3ACH ;direcciona E/S CLD ;autoincremento MOV CX,100 ;carga la cuenta REP OUTSB ; manda los datos

More Related