4.-la pila

18
Microprocesadores y Microcontroladores Introducción al Lenguaje Ensamblador (IV) Culiacán, Sin. Febrero de 2015.

Upload: felipe-acosta

Post on 12-Nov-2015

3 views

Category:

Documents


0 download

DESCRIPTION

kl,..

TRANSCRIPT

  • Microprocesadores y Microcontroladores

    Introduccin al Lenguaje Ensamblador (IV)

    Culiacn, Sin. Febrero de 2015.

  • *La Pila (Stack)Mantiene un espacio para el almacenamiento temporal de direcciones y datos.

    Cada elemento de dato en la pila es una palabra (2 bytes).

    El registro SS, es inicializado por el DOS; contiene la direccin del inicio de la pila.

    Inicialmente SP contiene el tamao de la pila, un valor que apunta al byte que est pasando el final de la pila.

  • *La Pila (Stack)La pila difiere de otros segmentos en su mtodo de almacenar los datos:

    Empieza en la localidad ms altaAlmacena los datos hacia abajo por la memoria.

    ................... . .SSSPDireccin del segmento de la pilaTope de la pila

  • *La Pila (Stack)La instruccin PUSH (entre otras) disminuye el SP en 2 hacia abajo;

    Hacia la siguiente palabra almacenada de la pila y coloca (empuja) un valor ah.

    La instruccin POP (entre otras) regresa el valor de la pila e incrementa el SP hacia arriba;

    Hacia la siguiente palabra almacenada.

  • *La Pila (Stack)En el siguiente ejemplo se mete el contenido de los registros AX y BX a la pila y la subsiguiente extraccin de ellos.

  • *La Pila (Stack)Suponga que AX contiene 015AH, el BX contiene 03D2H y el SP contiene 28H (No importa la direccin en el SS).

    1. Al comienzo la pila est vaca y ve as:................... . .SSSP=28HDireccin del segmento de la pilaTope de la pila

  • *La Pila (Stack)2. PUSH AX: Disminuye el SP en 2 (a 26H) y almacena el contenido del AX, 015AH, en la pila.

    La operacin invierte la secuencia de bytes almacenados, de tal forma que 015A 5A01:...............5A01. . .SSSP=26HDireccin del segmento de la pilaTope de la pila

  • *La Pila (Stack)3. PUSH BX: Disminuye el SP en 2 (a 24H) y almacena el contenido del BX, 03D2H, en la pila.

    La operacin invierte la secuencia de bytes almacenados, de tal forma que 03D2 D203:............D2035A01. . .SSSP=24HDireccin del segmento de la pilaTope de la pila

  • *La Pila (Stack)4. POP BX: Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la enva al registro BX e incrementa el SP en 2 (a 26H).El BX ahora contiene 03D2H, con los bytes correctamente invertidos.............D2035A01. . .SSSP=26HDireccin del segmento de la pilaTope de la pila

  • *La Pila (Stack)5. POP AX: Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la enva al registro AX e incrementa el SP en 2 (a 28H).El AX ahora contiene 015AH, con los bytes correctamente invertidos.............D2035A01. . .SSSP=28HDireccin del segmento de la pilaTope de la pila

  • *La Pila (Stack)Las instrucciones POP son codificadas en secuencia inversa a las instrucciones PUSH.

    Los valores de la pila permanecen ah aunque SP no apunta a ellos.

    En cada programa se debe asegurar que coordine los valores que guarda en la pila con los valores que se saca de ella.

  • *Direccionamiento de ProgramasCada instruccin contiene al menos una operacin, como mover, sumar o regresar.

    Dependiendo de la operacin, una instruccin puede tener uno o ms operandos que referencian los datos que la operacin procesa.

  • *Direccionamiento de ProgramasEl registro CS proporciona la direccin de inicio de un segmento de cdigo del programa.

    El registro DS ofrece la direccin de inicio del segmento de datos.

    El segmento de cdigo contiene las instrucciones que sern ejecutadas.

    El segmento de datos contiene todos los datos que las instrucciones referencian.

  • *Direccionamiento de ProgramasEl registro IP indica la direccin actual del desplazamiento de la instruccin actual, en el segmento de cdigo que es ejecutada.

  • *Direccionamiento de ProgramasProblema: El DOS asigna al registro CS la direccin del segmento 04AF[0]H y al DS la direccin de segmento 04B1[0]H. El programa tiene un IP con un desplazamiento de 0023H y un desplazamiento del segmento de datos de 0012H.Determine la direccin de la instruccin y la direccin del dato?Direccin de la sig. Instruccin: 04B13HDireccin del sig. Dato: 04B22H

  • *Referencias a memorias y registrosUna prctica muy comn en las instrucciones es el uso de nombres de operandos, de nombre entre corchetes y de nmeros.

  • *Referencias a memorias y registrosEjemplo:

    WORDA DW 0; Define una palabra....MOV AX,BX; Mueve los contenidos de BX a AX

    MOV AX,WORDA; Mueve el contenido de WORDA A AX

    MOV AX,25; Mueve el valor 25 a AX

    MOV AX,[BX] ; Mueve los contenidos de la localidad ; especificada por BX

  • *ReferenciaAbel, P. Lenguaje ensamblador y programacin para PC IBM y compatibles. Pearson Educacin. Mxico.

    ****************Se define WORDA como una palabra de 2 bytes

    DW: Instruccin para definir la palabra0: Inicializada en 0**