Está en la página 1de 37

Microprocesadores

MICROPROCESADORES
Universidad Nacional Federico
Villarreal
Ing. Javier Barriga Hoyle

Unidad 1
Introduccin al
microprocesador

Ing. Javier Barriga Hoyle

Microprocesadores

Contenido
1.
2.
3.
4.
5.
6.
7.

Introduccin.
Definicin y partes del microprocesador (P).
Arquitectura interna del P 8086/8088.
Arquitectura del sistema P.
La memoria y el P.
Modos de direccionamiento.
Direccionamiento de la Pila.

1. Introduccin al Procesador

Ing. Javier Barriga Hoyle

Actualmente casi cualquier equipo elctrico


moderno contiene uno o se ha utilizado uno
para su diseo.
Ha revolucionado casi todos los aspectos de
nuestras vidas.
Ha mejorado la funcionalidad de los sistemas
actuales (Informtica, Biomdica, Comercio
Electrnico, etc.) y a trado otros al mundo.
Siendo la microcomputadora una de las
principales aplicaciones de ste.

Microprocesadores

1. Introduccin al Procesador

El microprocesador surge como el primer


CI altamente complejo, relativamente fcil
de utilizar y totalmente estndar.

Tubo
de
vaco

uP
8088

Transistor

Circuito Integrado

1. Introduccin al Procesador

La unin complejidad-programabilidad se
ha extendido a dos famosos derivados del
Microprocesador: Microcontrolador (C) y
Procesador Digital de Seal (DSP).
DSP

Microcontrolador

Ing. Javier Barriga Hoyle

Procesador de voz

Microprocesadores

1. Introduccin al Procesador

Tambin ha sido aplicada exitosamente


en el otro componente-paradigma
totalmente diferente: la FPGA.

FPGA

2.1 Qu es un Procesador?

Circuito integrado digital de alta escala de


integracin. Por ejemplo: Pentium IV.
Tecnologa 0.13 micrones.
Contiene aprox. 55 millones de
transistores.
Dimensin aprox. 130 mm2.

Totalmente programable.
Opera a grandes velocidades ( 3 GHz).
Parte principal de las microcomputadoras.

Ing. Javier Barriga Hoyle

Microprocesadores

2.1 Qu es un Procesador?

Se programa para realizar funciones especficas


con los datos e instrucciones.
Cuando se conecta a un dispositivo de E/S y
memoria se tiene una microcomputadora.

2.1 Qu es un Procesador?

Otras aplicaciones:
Controladores de buses industriales VME.

Ing. Javier Barriga Hoyle

Microprocesadores

2.1 Qu es un Procesador?
Robtica y control numrico.

2.1 Qu es un Procesador?
Biosensores para el control de procesos
biolgicos.

Ing. Javier Barriga Hoyle

Microprocesadores

2.2 Partes de un Procesador


Unidad
Aritmtico
Lgico
(ALU)

Unidad
de
Registros

Unidad
de
Control

Figura 1. Elementos bsicos de un Microprocesador.

2.2 Partes de un Procesador

Unidad Aritmtico-Lgico (ALU):


Realiza operaciones aritmticas como suma,
resta y lgicas como NOT, AND, etc.

Unidad de Registro:
Almacenan temporalmente los datos cuando
se ejecuta un programa.

Unidad de Control:
Genera las seales de temporizacin y
control para la CPU y los elementos de E/S.

Ing. Javier Barriga Hoyle

Microprocesadores

2.2 Partes de un Procesador

Funciones de la Unidad de control:


Decodificar las instrucciones.
Generar la secuencia de microinstrucciones y
micrordenes asociadas a cada instruccin.
Microinstruccin: Son cada una de las fases de
la ejecucin de una instruccin.
Micrordenes: Son cada una de las tareas en que
se descompone una microinstruccin.

Gestionar la aceptacin, por parte del P, de


los comandos del bus de control.

2.3 Buses de un Procesador

Bus de datos

Microprocesador Bus de direcciones

Bus de control
Figura 2. Buses de un Microprocesador.

Ing. Javier Barriga Hoyle

Microprocesadores

2.3 Buses de un Procesador

Qu es un Bus?
Son canales o hilos fsicos por donde fluye la
informacin digital (0, 1) en forma de seales
elctricas.

Bus de datos:
Bus bidireccional, sirve para enviar o recibir
datos desde la memoria o dispositivo de E/S.
Su tamao determina la arquitectura del
microprocesador.

2.3 Buses de un Procesador

Bus de direccin:
Bus unidireccional.
Slo el P puede seleccionar alguna posicin
de memoria o dispositivo de E/S.
Su nmero de bits determina la capacidad de
direccionamiento. Por ejemplo, Si n es el
nmero de bits:
n = 10; 2n = 210 = 1024 = 1KB
n = 20; 2n = 220 = 1048576 = 1MB
n = 30; 2n = 230 = 1048576 = 1GB

Ing. Javier Barriga Hoyle

Microprocesadores

3. Arquitectura del P 8086/8088

P 8086:
Registros de 16 bits.
Bus de datos: 16 bits.
Bus de direcciones: 20
bits (220 = 1M).
Memoria total: 1 MB
Frecuencia: 5, 8 y 10
MHz.
Nmero transistores:
29000 (3 micrones).
Fabricacin: 8/6/78.

16 bits

B. Datos
uProcesador
8086
(16 bits)

20 bits

B. Direccin

B. Control

3. Arquitectura del P 8086/8088

P 8088:
Registros de 16 bits.
Bus de datos: 8 bits.
Bus de direcciones de
20 bits (220 = 1M).
Memoria total: 1 MB.
Frecuencia: 5 y 8 MHz
Nmero transistores:
29000 (3 micrones).
Fabricacin: 1/6/79.

Ing. Javier Barriga Hoyle

8 bits

B. Datos
uProcesador
8088
(16 bits)

20 bits

B. Direccin

B. Control

10

Microprocesadores

3. Arquitectura del P 8086/8088


EU: Unidad de ejecucin
AX
BX
CX
DX
8 bits
16 bits

Registros generales
AH
AL
BH
BL
CH
CL
DH
DL
SP
BP
SI
DI

BIU: Unidad de interfaz del bus

Control de programa
CS
DS
SS
ES

CU: Unidad de
control

1
2
3
4

Registro de
banderas

Cola de
instrucciones

ALU: Unidad
aritmtico - lgico

IP: Puntero de
instrucciones

Unidad
de
control
del bus

Bus

Figura 3. Arquitectura
interna del uP Intel
8086/8088.

3.1 Caractersticas del Procesador

Unidad de Ejecucin (EU):


Ejecuta las instrucciones y las operaciones
aritmticas y lgicas.
Contiene la ALU, unidad de control (CU) y
varios registros.

Unidad de Interfaz del Bus (BIU):


Su funcin ms importante es manejar la
unidad de control del bus, los registros de
segmentos y la cola de instrucciones.

Ing. Javier Barriga Hoyle

11

Microprocesadores

3.1 Caractersticas del Procesador

BIU (cont.):
Enva las instrucciones y datos a la EU.
Es capaz de adelantarse y buscar con
anticipacin instrucciones, de manera que
siempre haya una cola de instrucciones listas
para ser ejecutadas.

3.2 Registros programables

Registro AX (acumulador):
Se usa en instrucciones de multiplicacin,
divisin y en ciertas instrucciones de carcter
especfico como entrada, salida y traduccin.
Ejemplo1:
MOV BX, 3450h ;BX = 3450h
MOV AX, 100h ;AX = 100h
MUL BX
;Multiplica AX * BX
;y el resultado lo almacena en:
;AX = Word LSB, y en DX = Word MSB.
;Entonces: AX = 5000h y DX = 0034h

Ing. Javier Barriga Hoyle

12

Microprocesadores

3.2 Registros programables

Registro AX (cont.):
Ejemplo 2:
MOV BX, 100h ;BX = 100h
MOV AX, 3450h ;AX = 3450h
DIV BX
;Esta instruccin divide AX / BX
;Entonces: AX = 0034h y DX = 0050h

Ejemplo 3:
MOV DX, 0300h
IN AL, DX
MOV DX, 0301h
MOV AL, 56h
OUT DX, AL

; DX = 0300h, Direccin del puerto (IN)


; AL = xxh, almacena dato del puerto.
; DX = 0301h, puerto de salida
; AL = 56h
; Se enva por el puerto el valor de AL

3.2 Registros programables

Registro BX (base):
Se usa para direccionar memoria en modo de
direccionamiento indirecto.
Ejemplo 4:
MOV BX, 0500h
MOV AH, [BX]
MOV AL, [BX+2]
MOV CX, [BX+1]
ADD AX, CX
MOV 3[BX], AX

Ing. Javier Barriga Hoyle

; BX = 500h
; AH = 23h
; AL = 9Ch
; CX = 9C42h
; AX = AX+CX = BFDEh
; [503] = BFDE

BF
DE
9C
42
23

504h
503h
502h
501h
500h

Memoria

13

Microprocesadores

3.2 Registros programables

Registro CX (contador):
Se emplea como contador en bucles y en
operaciones de manejo de cadenas.
Ejemplo 5:
MOV BX, 808h ; BX = 0808h
MOV AH, 0
; AH = 0
MOV CX, 5
; CX = 5
L1: ADD AH, [BX]; AH = AH+[BX]
INC BX
; BX = BX + 1
LOOP L1
; CX = CX -1
; CX = 0?, No, regresa a L1

4E

16
50
23
05

80Ch
80Bh
80Ah
809h
808h

Memoria

3.2 Registros programables

Registro CX (cont.):
Ejemplo 6:
MOV CL, 3
MOV AH, 11100100b
ROL AH, CL
MOV CL, 12
MOV DX, 3456h
ROR DX, CL
MOV CL, 8
SHR DX, CL
MOV CL, 4
SHL DX, CL

Ing. Javier Barriga Hoyle

; CL = 3, veces a rotar.
; AH = 0E4h.
; AH = 00100111b = 27h.
; CL = 12, veces a rotar.
; DX = 3456h
; DX = 4563h
; CL = 8, veces a desplazar.
; DX = 0045h
; CL = 4, veces a desplazar.
; DX = 0450h

14

Microprocesadores

3.2 Registros programables

Registro DX (datos auxiliar):


Se emplea junto con AX en las operaciones
de multiplicacin y divisin que involucran o
generan datos de 32 bits.
Para especificar la direccin del puerto en las
operaciones de entrada (IN AL, DX) y salida
(OUT DX, AL) de dispositivos perifricos.

3.3 Registros segmentos

Registro CS, DS, SS, ES:


CS

DS

SS

ES

FFFFFh
SI
IP

64K

SP

DI
BX

00000h

Segmento
de Cdigo

Segmento
de Datos

BP
Segmento
de Pila

Segmento
Extra

Figura 4. Registros segmentos del P 8086/8088.

Ing. Javier Barriga Hoyle

15

Microprocesadores

3.3 Registros segmentos

Registro CS (segmento de cdigo):


Indica la direccin de inicio del segmento.
Es una parte de la memoria del computador.
Contiene los programas y procedimientos
utilizados por los programas.
Est limitado a 64KB de longitud para el
8086/8088 y a 4GB en 80386, 80486 y
Pentiums.

3.3 Registros segmentos

Registro DS (segmento de datos):


Indica la direccin de inicio del segmento.
Es una parte de la memoria del computador.
Contiene los datos a usarse en el programa.
Se accede a stos datos empleando los
registros BX, SI o DI (Ej. mov ax, [bx+si]).
Est limitado a 64K Bytes de longitud para el
8086/8088 y a 4GB en 80386 hasta Pentiums

Ing. Javier Barriga Hoyle

16

Microprocesadores

3.3 Registros segmentos

Registro SS (segmento de pila o stack):


Indica la direccin de inicio del segmento.
Es una parte de la memoria del computador.
Contiene los datos a usarse por la pila (LIFO).
Utiliza las instrucciones PUSH y POP.
El registro SP apunta al ltimo dato ingresado
Est limitado a 64K Bytes de longitud para el
8086/8088 y a 4GB en 80386 hasta Pentiums
El registro BP, tambin direcciona la pila.

3.3 Registros segmentos

Registro ES (segmento extra):


Indica la direccin de inicio del segmento.
Es una parte de la memoria del computador.
Contiene los datos a usarse por el rea de
video y manejo de cadenas.
Puede direccionarse con los registros BX, SI,
DI o BP usando prefijos (Ej. mov ax, es:[bx]).
Est limitado a 64K Bytes de longitud para el
8086/8088 y a 4GB en 80386 hasta Pentiums

Ing. Javier Barriga Hoyle

17

Microprocesadores

3.4 Registros punteros

Registro IP (puntero de instruccin):


Marca el desplazamiento de la instruccin en
curso dentro del segmento de cdigo.
Opera exclusivamente con el registro CS:IP.
Se actualiza cada vez que se ejecuta una
instruccin de lectura o escritura.
Siempre apunta a la prxima instruccin a
ejecutarse.

3.4 Registros punteros

Registro IP (cont.):
Ejemplo:
Direccin
30AD:0120
30AD:0123
30AD:0125
30AD:0127
CS

Ing. Javier Barriga Hoyle

Cdigo de
Nemnicos
mquina del Assembler
BA0301
B409
CD21
CD20

MOV DX, 0103


MOV AH, 09
INT 21
INT 20

IP

18

Microprocesadores

3.4 Registros punteros

Registro SP (puntero de pila):


Apunta a la cima de la pila en el segmento SS
Se usa en las instrucciones PUSH y POP.
PUSH AX ; SP = SP 2 (guarda dato en la pila)
POP AX ; SP = SP + 2 (extrae dato de la pila)

Registro BP (puntero base de pila)


apunta a una zona dentro de la pila dedicada
al almacenamiento de datos.
Variables locales en los programas compilados.

3.4 Registros punteros

Registro SI (ndice fuente):


Se utiliza en el modo de direccionamiento
indirecto.
MOV AH, [BX + SI] ;Lee un Byte de la memoria.
MOV [SI], CX
; Enva dos Bytes a la memoria.

Tambin se emplea para guardar un valor de


desplazamiento en operaciones de cadenas.
CLD
; DF = 0, (incrementar SI)
LEA SI, fuente ; SI = desplazamiento de fuente
LODS fuente ; AL = fuente

Ing. Javier Barriga Hoyle

19

Microprocesadores

3.4 Registros punteros

Registro DI (ndice destino):


Se utiliza en direccionamiento indirecto.
Se emplea operaciones de cadenas.
CLD

; DF = 0, (incrementa SI y DI)

LEA SI, fuente

; SI = direccin de fuente

LEA DI, destino ; DI = direccin de destino


MOV CX, 100

; CX = 100 Bytes a mover

REP MOVS [DI],[SI] ; mueve los elementos

3.5 Registro flag

Registro de estado o flags:


15 14 13 12 11 10

OF DF

IF

TF SF ZF

4
AF

PF

0
CF

CF (Carry Flag): Indica acarreo.


Es lo llevamos en una suma o resta.

OF (Overflow Flag): Indica desbordamiento.


Resultado de una operacin no cabe en el
tamao del operando destino.

Ing. Javier Barriga Hoyle

20

Microprocesadores

3.5 Registro flag

Registro de estado o flags (cont.):


ZF (Zero Flag): Indica resultado 0.
En las operaciones o comparaciones.

SF (Sign Flag): Indica el signo


En las operaciones o comparacin negativa.

PF (Parity Flag): Indicador de paridad.


En operaciones aritmtico-lgicas indica que el
nmero de bits a uno resultante es par.

3.5 Registro flag

Registro de estado o flags (cont.):


AF (Auxiliary Flag):
Para ajuste en operaciones BCD.

DF (Direction Flag): Indica direccin.


Manipulando bloques de memoria, indica el
sentido de avance (ascendente/descendente).

IF (Interrupt Flag): Indica interrupciones.


Puesto a 1 estn permitidas.

Ing. Javier Barriga Hoyle

21

Microprocesadores

3.5 Registro flag

Registro de estado o flags (cont.):


AF (Auxiliary Flag):
Para ajuste en operaciones BCD.

DF (Direction Flag): Indica direccin.


Manejo de cadenas, avance (up/down).

IF (Interrupt Flag): Indica interrupciones.


Puesto a 1 estn permitidas.

TF (Trap flag): Ejecucin paso a paso.

3.6 Resumen asignacin de punteros


El P tiene asignado los punteros a cada
segmento por defecto.
Los registros punteros pueden emplearse
en otros segmentos usando prefijos.

MOV AX, SS:[BX]


MOV CH, ES:[SI]
MOV DX, DS:[BP]

Ing. Javier Barriga Hoyle

A continuacin se muestra un cuadro


resumen.

22

Microprocesadores

3.6 Resumen asignacin de punteros


CS

SS

DS

ES

IP

Si

No

No

No

SP

No

Si

No

No

BP

Prefijo

defecto

Prefijo

Prefijo

BX

Prefijo

Prefijo

defecto

Prefijo

SI

Prefijo

Prefijo

defecto

Prefijo

DI

Prefijo

Prefijo

defecto

Prefijo*

* Por defecto en el manejo de cadenas

4. Arquitectura del sistema P

Segn Vonn Newman, toda computadora


debe tener:
Bus de direcciones

Memorias
MICROPROCESADOR

ROM

RAM

E/S

Bus de datos
Bus de control

Figura 5. Arquitectura de un sistema basado en P.

Ing. Javier Barriga Hoyle

23

Microprocesadores

5. La memoria y el P

Memoria Lgica:
Es el sistema de memoria como lo ve el
programador o usuario final.
Realmente es la memoria instalada en la PC.
Es el mismo en todos los microprocesadores
INTEL y se numera por bytes.
En la figura 6, se ilustra el mapa de la
memoria lgica de todos los miembros de la
familia Intel.

5. La memoria y el P
8 bits

Figura 6. Mapa de memoria lgica:


(a) 8086/8088/80186;
(b) 80286/80386SX;
(c) 80386DX y 80486.

FFFFFFFF
FFFFFFFE
FFFFFFFD

8 bits

8 bits

FFFFFF
FFFFFE
FFFFFD

FFFFF
FFFFE
FFFFD

4 GB

16 MB
1MB

(a)

Ing. Javier Barriga Hoyle

00000002
00000001
00000000

000002
000001
000000

00002
00001
00000

(b)

(c)

24

Microprocesadores

5. La memoria y el P

Memoria Fsica:
Las memorias fsicas de los miembros de la
familia Intel difieren en ancho. Es decir,
depende del bus de datos del Procesador
(Figura 7).
La memoria del 8088 es de 8 bits de ancho,
Las memorias del 8086, 80186, 80286 y
80386SX tienen 16 bits de ancho; las
memorias del 80386DX, 80486 y Pentium son
de 32 bits de ancho.

5. La memoria y el P

Memoria Fsica (cont.):


La memoria est organizada en bancos de
memoria:
Procesador de 8 bits 1 banco de memoria.
Procesador de 16 bits 2 bancos de memoria
y se direccionan por bytes o words.
Procesador de 32 bits 4 bancos de memoria
y se direccionan como bytes, words o dobles
words.

Ing. Javier Barriga Hoyle

25

Microprocesadores

5. La memoria y el P
Banco alto
(banco impar)

FFFFF
FFFFE
FFFFD

FFFFFF
FFFFFD
FFFFFB

Banco bajo
(banco par)

FFFFFE
FFFFFC
FFFFFA

8 bits
1MB

8MB

00002
00001
00000

000005
000003
000000

8MB
000004
000002
000000

D15 - D8

Microprocesador
8088/8086

D7 - D0

Microprocesador 80186
Microprocesador 80286
Microprocesador 80386SX
Microprocesador 80386LS (memoria de 32M byte)

Figura 7. Memoria fsica de los Procesadores.

5. La memoria y el P
Continuacin.
Banco 3

FFFFFFFF
FFFFFFFB
FFFFFFF7

Banco 2

FFFFFFFE
FFFFFFFA
FFFFFFF6
1MB

0000000B
00000007
00000003

Banco 1

FFFFFFFD
FFFFFFF9
FFFFFFF5
1MB

0000000A
00000006
00000002

Banco 0

FFFFFFFC
FFFFFFF8
FFFFFFF4
1MB

00000009
00000005
00000001

1MB
00000008
00000004
00000000

Microprocesador 80386DX
Microprocesador 80486SX
Microprocesador 80486DX
Microprocesador PENTIUM

Ing. Javier Barriga Hoyle

26

Microprocesadores

5.1 La memoria en la Computadora


Para acceder a la memoria se tiene 2
formas:
Modo real: Opera con memoria de 1 MB.
Slo los P 8086/8088 operan en este modo.

Modo protegido: Opera por encima de 1


MB y con toda la memoria instalada.
A partir de la 286 todos pueden operar en
modo real o protegido.

5.1 La memoria en la Computadora

Toda computadora personal dispone de


una memoria principal de 1 MB.
Esta memoria fue usada por el P 8088 en la
PC-XT.
1 MB desde 8086 ==> P IV

T.P.A
640 KB

Area sistema
(BIOS)
384 KB

Modo real

Ing. Javier Barriga Hoyle

Toda la memoria que


tiene el computador

Memoria Extendida

Modo protegido

27

Microprocesadores

5.2 Segmentacin de memoria


Consiste en dividir la memoria de 1MB en
grupos de 64KB (modo real).
Cada grupo se asocia con un registro de
segmento (CS, DS, SS, ES).

La direccin de segmento define la direccin


inicial o base de cualquier grupo de 64 KB.

El desplazamiento dentro del segmento lo


proporciona los registros punteros (IP, SI,
DI, SP, BP).

5.2 Segmentacin de memoria

Ing. Javier Barriga Hoyle

La direccin real o absoluta se calcula


multiplicando por 16 (10h) el valor del
registro de segmento y sumando el offset,
obtenindose una direccin efectiva de 20
bits. Esto es:
direccin = segmento * 16 + offset
o
direccin = segmento * 10 + offset

28

Microprocesadores

5.2 Segmentacin de memoria

Ejemplo: Si CS = 1000H e IP = 450H,


ubicar la direccin real.
FFFFFh

64K

1FFFFh

Direccin real = (1000h *10h) + 450h


= 10450h

10450h

desp = 0450h

10000h

CS = 1000h

00000h

5.2 Segmentacin de memoria


Memoria

Memoria
FFFFFh

Ejemplo: Un programa requiere


1000h bytes de memoria para su
cdigo, 109h bytes para los datos
y 200h bytes para la pila.

Pila

Nota: Las memorias se traslapan


Datos

0A480h
0A47Fh
Cdigo

Pila
0A280h
0A27Fh
Datos
0A0F0h
0A0EFh
Cdigo
090F0h
0908Fh

(a)

Ing. Javier Barriga Hoyle

00000h

SS=0A28h
DS=0A0Fh
CS=090Fh

DOS y
controladores
(b)

29

Microprocesadores

6. Modos de direccionamiento

Son los distintos modos de acceder a los


datos en memoria por parte del P.
Sintaxis: (2 operandos)
INSTRUCCIN
MOV

DESTINO, FUENTE
AX,

CX

Donde, DESTINO indica donde se deja el resultado


de la operacin, FUENTE indica donde se encuentra
el dato o registro a cargar.

6. Modos de direccionamiento
Sintaxis: (1 operando)
INSTRUCCIN
MUL
DIV
PUSH

DESTINO
AX
CX
BX

Sintaxis: (0 operandos)
INSTRUCCIN
CLI
STI
PUSHF

Ing. Javier Barriga Hoyle

30

Microprocesadores

6.1 Direccionamiento inmediato

El operando fuente es una constante.


Ejemplos:

MOV AX,1000
; AX = 03E8h
MOV BX,500h
; BX = 0500h
ADD CX,0F45Ah ; CX = CX + F45A
SUB BX,100
; BX = BX 64
MOV AH, 255
; AH = FFh
ADD DL,0A5h
; DL = DL + A5
NOTA: Cuando una constante empieza con una letra
(A,B,C,D,E o F), se debe anteponer un cero.

6.2 Direccionamiento por registro

Los operandos son registros de igual tamao.


Ejemplos:
MOV AX,BX
MOV DS,AX
ADD CX,DX
SUB BH,BL
XCHG AH,AL

; AX = BX
; DS = AX
; CX = CX + DX
; BH = BH BL
; intercambia valores entre ellos

MOV AX,BL
ADD BH,CX

No se puede direccionar
porque son de diferentes
tamaos

SUB DX,AL

Ing. Javier Barriga Hoyle

31

Microprocesadores

6.3 Direccionamiento directo

Cualquier operando es una constante que


referencia a memoria.
Ejemplos:
MOV AX,[500h] ; AX = word que est en [0500h]
MOV BX,[14A0h] ; BX = word que est en [14A0h]
MOV AH,[1000] ; AH = byte que est en [03E8h]
ADD CH,[100]
; CH = CH + byte [0064h]
MOV [255],BX
; [00FFh] se almacena BX
ADD [1000H],AL ; [1000h] [1000h] + AL

6.4 Dir. Indirecto por registro

Cualquier operando es un registro que


referencia a memoria.
Ejemplos:
MOV AX, [BP]
; AX word [BP]
direccin real = SS*10 + BP
MOV ES:[DI], AH
; [DI] byte AH
direccin real = ES*10 + DI
MOV CX, [BX]
; CX word [BX]
direccin real = DS*10 + BX

Ing. Javier Barriga Hoyle

32

Microprocesadores

6.5 Dir. Base ms Indice

La direccin referenciada se encuentra


sealada por un registro Base + un registro
Indice.
Ejemplos:
MOV AX, [BP+SI]
; AX word [BP+SI]
direccin real = SS*10 + BP + SI
MOV ES:[BX+DI], AH
; [BX+DI] byte AH
direccin real = ES*10 + BX + DI
MOV CX, [BX][SI]
; CX word [BX+SI]
direccin real = DS*10 + BX + SI

6.6 Dir. Relativo por registro

La direccin se encuentra sealada por un


registro Base o Indice + un desplazamiento.
Ejemplos:
MOV AX, [BX+1000h] ; AX word [BX+1000h]
direccin real = DS*10 + BX + 1000h
MOV ES:[DI+500], AH ; [DI+01F4h] byte AH
direccin real = ES*10 + DI + 01F4h
MOV DX, tabla[SI]
; DX word [tabla+SI]
direccin real = DS*10 + tabla + SI

Ing. Javier Barriga Hoyle

33

Microprocesadores

6.7 Dir. Relativo base + indice

La direccin solicitada se encuentra sealada


por un registro Base + reg. Indice + un offset.
Ejemplos:
MOV AX, [BX+SI+desp] ; AX word [BX+SI+desp]
direccin real = DS*10 + BX + SI + desp
MOV SS:desp[BP][SI], DL ; [BP+SI+desp] byte DL
direccin real = SS*10 + BP + SI + desp
MOV DX, tabla[BX+DI] ; DX word [tabla+BX+DI]
direccin real = DS*10 + BX + tabla + DI

7. Direccionamiento de pila
La pila es un bloque de memoria de
estructura LIFO (Last Input First Output).
Se direcciona mediante desplazamientos
desde el registro SS.
Las posiciones individuales dentro de la
pila se calculan sumando al contenido del
segmento de pila SS un desplazamiento
contenido en el registro puntero de pila
SP.

Ing. Javier Barriga Hoyle

34

Microprocesadores

7. Direccionamiento de pila
Todos los datos que se almacenan en la
pila son de longitud palabra (16 bits).
Para acceder a la pila se usa:

PUSH R16 ; puntero SP decrementa en dos.


POP R16 ; puntero SP incrementa en dos.

El registro BP suele utilizarse para apuntar


a una cierta posicin de la pila, trabaja
similar al BX en DS.

7. Direccionamiento de pila
La pila es utilizada frecuentemente al
principio de una subrutina para preservar
los registros que no se desean modificar;
al final de la subrutina se recuperan en
orden inverso al que fueron depositados.
La pila permite que algunas subrutinas
llamen a otras, que a su vez pueden
llamar a otras y as sucesivamente.

Ing. Javier Barriga Hoyle

35

Microprocesadores

7. Direccionamiento de pila
En la pila se almacenan las direcciones de
retorno (Ej. call delay).
Los compiladores de los lenguajes de alto
nivel la emplean tambin para pasar los
parmetros de los procedimientos y para
generar en ella las variables automticas
(variables locales que existen durante la
ejecucin del subprograma y se destruyen
inmediatamente despus).

7. Direccionamiento de pila
Memoria

Memoria

Memoria
SS:SP
14C0:1024

34
SS:SP

SS:SP
12

14C0:1026

14C0:1026

F3

F3

F3

21

21

21

Despus de
PUSH AX
AX = 1234h

Despus de
POP AX
AX = 1234h

Situacin inicial
AX = 1234h

Figura 8. Manejo de la pila.

Ing. Javier Barriga Hoyle

36

Microprocesadores

7. Direccionamiento de pila

Programa ejemplo de manejo de la pila:


PUSH AX
PUSH BX
PUSH CX

;se guarda en la pila AX


;se guarda en la pila BX
;se guarda en la pila CX

Area de un programa donde pueden


reutilizar los registros AX, BX y CX
POP
POP
POP

CX
BX
AX

;se recupera de la pila CX


;se recupera de la pila BX
;se recupera de la pila AX

7. Direccionamiento de pila

Programa ejemplo: procedimiento delay

delay

L2:
L1:

delay

Ing. Javier Barriga Hoyle

PROC
PUSH
MOV
PUSH
MOV
LOOP
POP
LOOP
POP
RET
ENDP

NEAR
CX
CX, 0FFFFh
CX
CX, 1000h
L1
CX
L2
CX

; inicia procedimiento delay


; se apila el valor de CX0
; CX1 FFFFh
; se apila el valor de CX1
; CX2 1000h
; decrementa CX2 hasta que sea cero
; recupero valor de CX1
; decrementa CX1 hasta que sea cero
; se desapila el valor de CX0
; retorna al programa principal
; fin del procedimiento delay

37

También podría gustarte