lenguaje ensamblador absalón huízar lucía islas mitzi yaileth arelly martínez hernández yair...

Post on 16-Apr-2015

16 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Lenguaje Ensamblador

Absalón Huízar Lucía

Islas Mitzi Yaileth Arelly

Martínez Hernández Yair Elohim

6CM8

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.

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.

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.

Desde HastaDS: 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.

Pone en el acumulador un byte de la cadena fuente.

Operación:

AL <- DS:SI (un byte) SI <- SI±1

Poner en el acumulador dos bytes de la cadena fuente.

Operación:AX <- DS:SI (dos bytes)

SI <- SI±2

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

STOSBES[DI]<- ALDI = DI ± 1

STOSW

ES[DI]<- AXDI = DI ± 2

STOSDES[DI]<- EAXDI = DI ± 4

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.

La instrucción mas usada es MOVS (MOVe String), 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.

MOVSBES[DI]<-DS:SI

DI = DI ± 1 SI =SI±1

MOVSWES[DI]<-DS:SI

DI = DI ± 2 SI =SI±2

MOVSDES[DI]<-DS:SI

DI = DI ± 4 SI =SI±4

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

INSBES:DI<- [DX]

DI=DI±1

INSW

ES:DI<- [DX]DI=DI±2

INSDES:DI<- [DX]

DI=DI±4

;uso de la instruccion REP INSB para dar entrada de datos a un arreglo de memoria

MOV DI, OFFSET LISTS ;direcciona al arregloMOV DX,3ACH ;direcciona E/S

CLD ;autoincremento MOV CX,50 ;carga la cuenta REP INSB ;lee datos

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

;uso de REP OUTS para dar salida a datos desde un arreglo de memoria

MOV SI,OFFSET Arreglo ;direcciona el arregloMOV DX,3ACH ;direcciona E/SCLD ;autoincrementoMOV CX,100 ;carga la cuentaREP OUTSB ; manda los datos

top related