Está en la página 1de 18

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

La Pila (Stack)

La pila difiere de otros segmentos en su


mtodo de almacenar los datos:

Empieza en la localidad ms alta


Almacena los datos hacia abajo por la memoria.

...

...

...

SS
Direccin del segmento de la pila

...

...

...

...
SP
Tope de la pila
3

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.


4

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,


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

...

...

SS
Direccin del segmento de la pila

...

...

...

...
SP=28H
Tope de la pila
6

La Pila (Stack)

2. PUSH AX:
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:

...

...

...

SS
Direccin del segmento de la pila

...

...

... 5A01
SP=26H
Tope de la pila
7

La Pila (Stack)

3. PUSH BX:
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:

...

...

...

SS
Direccin del segmento de la pila

...

... D203 5A01


SP=24H
Tope de la pila
8

La Pila (Stack)

4. POP BX:
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.

...

...

...

SS
Direccin del segmento de la pila

...

... D203 5A01


SP=26H
Tope de la pila
9

La Pila (Stack)

5. POP AX:
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.

...

...

...

SS
Direccin del segmento de la pila

...

... D203 5A01


SP=28H
Tope de la pila
10

La Pila (Stack)

Las instrucciones POP son codificadas en


secuencia inversa a las instrucciones
PUSH.
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.
11

Direccionamiento de
Programas

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

Direccionamiento de
Programas

El 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
instrucciones que sern ejecutadas.

El segmento de datos contiene todos los datos


que las instrucciones referencian.

las

13

Direccionamiento de
Programas

El registro IP indica la direccin


actual del desplazamiento de la
instruccin actual, en el segmento
de cdigo que es ejecutada.

14

Direccionamiento de
Programas

Problema: El DOS asigna al registro CS la


direccin del segmento 04AF[0]H y al DS
la direccin de segmento 04B1[0]H.
04B1[0]H El
programa
tiene
un
IP
con
un
desplazamiento
de
0023H
y
un
desplazamiento del segmento de datos
de 0012H.
0012H
Determine la direccin de la instruccin
y la direccin del dato?
Direccin de la sig. Instruccin: 04B13H
Direccin del sig. Dato: 04B22H
15

Referencias a memorias y
registros

Una prctica muy comn en las


instrucciones es el uso de nombres
de operandos, de nombre entre
corchetes y de nmeros.

16

Referencias a memorias y
registros

Ejemplo:

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]
localidad

; Mueve los contenidos de la


; especificada por BX

17

Referencia

Abel, P. Lenguaje ensamblador y


programacin para PC IBM y
compatibles.
Pearson
Educacin.
Mxico.

18

También podría gustarte