unidad 1 microprocesadores
TRANSCRIPT
-
7/24/2019 Unidad 1 Microprocesadores
1/37
Microprocesadores
Ing. Javier Barriga Hoyle 1
MICROPROCESADORES
Universidad Nacional Federico
VillarrealIng. Javier Barriga Hoyle
Unidad 1
Introduccin almicroprocesador
-
7/24/2019 Unidad 1 Microprocesadores
2/37
Microprocesadores
Ing. Javier Barriga Hoyle 2
Contenido
1. Introduccin.
2. Definicin y partes del microprocesador (P).
3. Arquitectura interna del P 8086/8088.
4. Arquitectura del sistema P.
5. La memoria y el P.
6. Modos de direccionamiento.
7. Direccionamiento de la Pila.
1. Introduccin al Procesador
Actualmente casi cualquier equipo elctrico
moderno contiene uno o se ha utilizado uno
para su diseo.
Ha revolucionado casi todos los aspectos denuestras 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.
-
7/24/2019 Unidad 1 Microprocesadores
3/37
Microprocesadores
Ing. Javier Barriga Hoyle 3
1. Introduccin al Procesador
El microprocesador surge como el primer
CI altamente complejo, relativamente fcil
de utilizar y totalmente estndar.
Tubo
de
vaco
Transistor
uP
8088
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).
Microcontrolador
DSP
Procesador de voz
-
7/24/2019 Unidad 1 Microprocesadores
4/37
Microprocesadores
Ing. Javier Barriga Hoyle 4
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 deintegracin. Por ejemplo: Pentium IV. Tecnologa 0.13 micrones.
Contiene aprox. 55 millones detransistores.
Dimensin aprox. 130 mm2.
Totalmente programable.
Opera a grandes velocidades ( 3 GHz).
Parte principal de las microcomputadoras.
-
7/24/2019 Unidad 1 Microprocesadores
5/37
Microprocesadores
Ing. Javier Barriga Hoyle 5
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.
-
7/24/2019 Unidad 1 Microprocesadores
6/37
Microprocesadores
Ing. Javier Barriga Hoyle 6
2.1 Qu es un Procesador?
Robtica y control numrico.
2.1 Qu es un Procesador?
Biosensores para el control de procesos
biolgicos.
-
7/24/2019 Unidad 1 Microprocesadores
7/37
Microprocesadores
Ing. Javier Barriga Hoyle 7
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.
-
7/24/2019 Unidad 1 Microprocesadores
8/37
Microprocesadores
Ing. Javier Barriga Hoyle 8
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 dela ejecucin de una instruccin.
Micrordenes : Son cada una de las tareas en quese descompone una microinstruccin.
Gestionar la aceptacin, por parte del P, de
los comandos del bus de control.
2.3 Buses de un Procesador
Microprocesador
Bus de datos
Bus de control
Bus de direcciones
Figura 2. Buses de un Microprocesador.
-
7/24/2019 Unidad 1 Microprocesadores
9/37
Microprocesadores
Ing. Javier Barriga Hoyle 9
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 dedireccionamiento. Por ejemplo, Si n es elnmero de bits:
n = 10; 2n = 210 = 1024 = 1KB
n = 20; 2n = 220 = 1048576 = 1MB
n = 30; 2n = 230 = 1048576 = 1GB
-
7/24/2019 Unidad 1 Microprocesadores
10/37
Microprocesadores
Ing. Javier Barriga Hoyle 10
3. Arquitectura del P 8086/8088 P 8086:
Registros de 16 bits.
Bus de datos: 16 bits.
Bus de direcciones: 20bits (220 = 1M).
Memoria total: 1 MB
Frecuencia: 5, 8 y 10MHz.
Nmero transistores:29000 (3 micrones).
Fabricacin: 8/6/78.
uProcesador
8086
(16 bits)
B. Datos
B. Direccin
B. Control
16 bits
20 bits
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.
uProcesador
8088
(16 bits)
B. Datos
B. Direccin
B. Control
8 bits
20 bits
-
7/24/2019 Unidad 1 Microprocesadores
11/37
Microprocesadores
Ing. Javier Barriga Hoyle 11
3. Arquitectura del P 8086/8088
AH AL
BH BL
CS
DS
SS
ES
BP
SI
CH CL
DH DL
AX
BX
CX
DX
SP
DI
Bus
Control de programa
Registros generales
Cola de
instrucciones
EU: Unidad de ejecucin BIU: Unidad de interfaz del bus
ALU: Unidad
aritmtico - lgico
CU: Unidad de
control
Registro de
banderas
IP: Puntero de
instrucciones
1
23
4
Unidad
de
control
del bus
16 bits
8 bits
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) yvarios 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.
-
7/24/2019 Unidad 1 Microprocesadores
12/37
Microprocesadores
Ing. Javier Barriga Hoyle 12
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 carcterespecfico como entrada, salida y traduccin.
Ejemplo1:
MOV BX, 3450h ;BX = 3450hMOV AX, 100h ;AX = 100hMUL BX ;Multiplica AX * BX
;y el resultado lo almacena en:
;AX = Word LSB, y en DX = Word MSB.
;Entonces: AX = 5000h y DX = 0034h
-
7/24/2019 Unidad 1 Microprocesadores
13/37
Microprocesadores
Ing. Javier Barriga Hoyle 13
3.2 Registros programables Registro AX (cont.):
Ejemplo 2:
MOV BX, 100h ;BX = 100hMOV AX, 3450h ;AX = 3450hDIV BX ;Esta instruccin divide AX / BX
;Entonces: AX = 0034h y DX = 0050h
Ejemplo 3:MOV DX, 0300h ; DX = 0300h, Direccin del puerto (IN)
IN AL, DX ;AL = xxh, almacena dato del puerto.MOV DX, 0301h ; DX = 0301h, puerto de salidaMOV AL, 56h ; AL = 56hOUT DX, AL ; 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 ; BX = 500h
MOV AH, [BX] ;AH = 23h
MOV AL, [BX+2] ;AL = 9Ch
MOV CX, [BX+1] ; CX = 9C42h
ADD AX, CX ;AX = AX+CX = BFDEh
MOV 3[BX], AX ; [503] = BFDE
23
42
9C
500h
501h
502h
503h
504hDE
BF
Memoria
-
7/24/2019 Unidad 1 Microprocesadores
14/37
Microprocesadores
Ing. Javier Barriga Hoyle 14
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 = 0808hMOV AH, 0 ;AH = 0MOV CX, 5 ; CX = 5
L1:ADD AH, [BX] ;AH = AH+[BX]INC BX ; BX = BX + 1LOOP L1 ; CX = CX -1
; CX = 0?, No, regresa a L1Memoria
05
23
50
808h
809h
80Ah
80Bh
80Ch16
4E
3.2 Registros programables
Registro CX (cont.):
Ejemplo 6:
MOV CL, 3 ; CL = 3, veces a rotar.MOV AH, 11100100b ;AH = 0E4h.ROL AH, CL ;AH = 00100111b = 27h.MOV CL, 12 ; CL = 12, veces a rotar.MOV DX, 3456h ; DX = 3456hROR DX, CL ; DX = 4563hMOV CL, 8 ; CL = 8, veces a desplazar.SHR DX, CL ; DX = 0045hMOV CL, 4 ; CL = 4, veces a desplazar.SHL DX, CL ; DX = 0450h
-
7/24/2019 Unidad 1 Microprocesadores
15/37
Microprocesadores
Ing. Javier Barriga Hoyle 15
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:
Figura 4. Registros segmentos del P 8086/8088.
CS
Segmento
de Cdigo
64K
00000h
FFFFFh
IP
DS
Segmento
de Datos
DI
SI
BX
SS
Segmento
de Pila
SP
BP
ES
Segmento
Extra
-
7/24/2019 Unidad 1 Microprocesadores
16/37
Microprocesadores
Ing. Javier Barriga Hoyle 16
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 yPentiums.
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
-
7/24/2019 Unidad 1 Microprocesadores
17/37
Microprocesadores
Ing. Javier Barriga Hoyle 17
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 el8086/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 devideo 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
-
7/24/2019 Unidad 1 Microprocesadores
18/37
Microprocesadores
Ing. Javier Barriga Hoyle 18
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 aejecutarse.
3.4 Registros punteros
Registro IP (cont.):Ejemplo:
30AD:012030AD:012330AD:012530AD:0127
BA0301B409CD21CD20
MOV DX, 0103MOV AH, 09INT 21INT 20
Direccin Cdigo de
mquina
Nemnicos
del Assembler
CS IP
-
7/24/2019 Unidad 1 Microprocesadores
19/37
Microprocesadores
Ing. Javier Barriga Hoyle 19
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 dedesplazamiento en operaciones de cadenas.
CLD ; DF = 0, (incrementar SI)
LEA SI, fuente ; SI = desplazamiento de fuente
LODS fuente ; AL = fuente
-
7/24/2019 Unidad 1 Microprocesadores
20/37
Microprocesadores
Ing. Javier Barriga Hoyle 20
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:
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.
CFPFAFZFSFTFIFDFOF
0123456789101112131415
CFPFAFZFSFTFIFDFOF
0123456789101112131415
-
7/24/2019 Unidad 1 Microprocesadores
21/37
Microprocesadores
Ing. Javier Barriga Hoyle 21
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.
-
7/24/2019 Unidad 1 Microprocesadores
22/37
Microprocesadores
Ing. Javier Barriga Hoyle 22
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]
A continuacin se muestra un cuadro
resumen.
-
7/24/2019 Unidad 1 Microprocesadores
23/37
Microprocesadores
Ing. Javier Barriga Hoyle 23
3.6 Resumen asignacin de punteros
Prefijo*defectoPrefijoPrefijoDIPrefijodefectoPrefijoPrefijoSI
PrefijodefectoPrefijoPrefijoBX
PrefijoPrefijodefectoPrefijoBP
NoNoSiNoSP
NoNoNoSiIP
ESDSSSCS
Prefijo*defectoPrefijoPrefijoDIPrefijodefectoPrefijoPrefijoSI
PrefijodefectoPrefijoPrefijoBX
PrefijoPrefijodefectoPrefijoBP
NoNoSiNoSP
NoNoNoSiIP
ESDSSSCS
* Por defecto en el manejo de cadenas
4. Arquitectura del sistema P
Segn Vonn Newman, toda computadora
debe tener:
ROM RAM E/S
Bus de direcciones
Bus de datos
Bus de control
Memorias
MICRO-
PROCESADOR
Figura 5. Arquitectura de un sistema basado en P.
-
7/24/2019 Unidad 1 Microprocesadores
24/37
Microprocesadores
Ing. Javier Barriga Hoyle 24
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 lamemoria lgica de todos los miembros de la
familia Intel.
5. La memoria y el P
1MB
4 GB
16 MB
FFFFFFFFFE
FFFFD
000020000100000
8 bits
FFFFFF
FFFFFEFFFFFD
000002000001000000
8 bits
FFFFFFFFFFFFFFFEFFFFFFFD
000000020000000100000000
8 bits
(a) (b) (c)
Figura 6. Mapa de memoria lgica:(a) 8086/8088/80186;(b) 80286/80386SX;(c) 80386DX y 80486.
-
7/24/2019 Unidad 1 Microprocesadores
25/37
Microprocesadores
Ing. Javier Barriga Hoyle 25
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; lasmemorias del 80386DX, 80486 y Pentium sonde 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.
-
7/24/2019 Unidad 1 Microprocesadores
26/37
Microprocesadores
Ing. Javier Barriga Hoyle 26
5. La memoria y el P
FFFFFFFFFEFFFFD
1MB
000020000100000
8 bits
FFFFFEFFFFFCFFFFFA
8MB
000004000002000000
FFFFFFFFFFFDFFFFFB
8MB
000005000003000000
Banco alto(banco impar)
Microprocesador
8088/8086
Banco bajo(banco par)
D15 - D8 D7 - D0
Microprocesador 80186Microprocesador 80286Micropro cesador 80386SXMicropro cesador 80386LS (memoria de 32M byt e)
Figura 7. Memoria fsica de los Procesadores.
5. La memoria y el P
Continuacin.
FFFFFFFCFFFFFFF8FFFFFFF4
1MB
000000080000000400000000
FFFFFFFDFFFFFFF9FFFFFFF5
1MB
000000090000000500000001
FFFFFFFEFFFFFFFAFFFFFFF6
1MB
0000000A0000000600000002
FFFFFFFFFFFFFFFBFFFFFFF7
1MB
0000000B0000000700000003
Banco 3 Banco 2 Banco 1 Banco 0
Microprocesador 80386DX
Microprocesador 80486SX
Microprocesador 80486DX
Microprocesador PENTIUM
-
7/24/2019 Unidad 1 Microprocesadores
27/37
Microprocesadores
Ing. Javier Barriga Hoyle 27
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.
T.P.A
640 KB
Area sistema
(BIOS)
384 KB
Memoria Extendida
Modo real Modo protegido
1 MB desde 8086 ==> P IVToda la memoria quetiene el computador
-
7/24/2019 Unidad 1 Microprocesadores
28/37
Microprocesadores
Ing. Javier Barriga Hoyle 28
5.2 Segmentacin de memoria
Consiste en dividir la memoria de 1MB engrupos de 64KB (modo real).
Cada grupo se asocia con un registro de
segmento (CS, DS, SS, ES).
La direccin de segmento define la direccininicial o base de cualquier grupo de 64 KB.
El desplazamiento dentro del segmento loproporciona los registros punteros (IP, SI,
DI, SP, BP).
5.2 Segmentacin de memoria
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 20bits. Esto es:
direccin = segmento * 16 + offset
o
direccin = segmento * 10 + offset
-
7/24/2019 Unidad 1 Microprocesadores
29/37
Microprocesadores
Ing. Javier Barriga Hoyle 29
5.2 Segmentacin de memoria
Ejemplo: Si CS = 1000H e IP = 450H,
ubicar la direccin real.
00000h
10000h
10450h
1FFFFh
FFFFFh
CS = 1000h
desp = 0450h64K
Direccin real = (1000h *10h) + 450h
= 10450h
5.2 Segmentacin de memoria
DOS ycontroladores
00000h
Cdigo
Datos
Pila
FFFFFh
Memoria
0908Fh090F0h
0A0EFh0A0F0h
0A27Fh0A280h
0A47Fh0A480h
SS=0A28h
DS=0A0Fh
CS=090Fh
Cdigo
Datos
Pila
(a) (b)
Memoria
Ejemplo: Un programa requiere1000h bytes de memoria para sucdigo, 109h bytes para los datos
y 200h bytes para la pila.
Nota: Las memorias se traslapan
-
7/24/2019 Unidad 1 Microprocesadores
30/37
Microprocesadores
Ing. Javier Barriga Hoyle 30
6. Modos de direccionamiento
Son los distintos modos de acceder a los
datos en memoria por parte del P.
Sintaxis: (2 operandos)
INSTRUCCIN DESTINO, FUENTE
MOV 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 DESTINO
MUL AXDIV CXPUSH BX
Sintaxis: (0 operandos)INSTRUCCIN
CLISTIPUSHF
-
7/24/2019 Unidad 1 Microprocesadores
31/37
Microprocesadores
Ing. Javier Barriga Hoyle 31
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 = FFhADD 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 ; AX = BX
MOV DS,AX ; DS = AXADD CX,DX ; CX = CX + DXSUB BH,BL ; BH = BH BLXCHGAH,AL ; intercambia valores entre ellos
MOV AX,BLADD BH,CX
SUB DX,AL
No se puede direccionar
porque son de diferentes
tamaos
-
7/24/2019 Unidad 1 Microprocesadores
32/37
Microprocesadores
Ing. Javier Barriga Hoyle 32
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 BXADD [1000H],AL ; [1000h] [1000h] + AL
6.4 Dir. Indirecto por registro
Cualquier operando es un registro quereferencia 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
-
7/24/2019 Unidad 1 Microprocesadores
33/37
Microprocesadores
Ing. Javier Barriga Hoyle 33
6.5 Dir. Base ms Indice La direccin referenciada se encuentra
sealada por un registro Base + un registroIndice.
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 unregistro 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
-
7/24/2019 Unidad 1 Microprocesadores
34/37
Microprocesadores
Ing. Javier Barriga Hoyle 34
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 deestructura 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 delsegmento de pila SS un desplazamientocontenido en el registro puntero de pilaSP.
-
7/24/2019 Unidad 1 Microprocesadores
35/37
Microprocesadores
Ing. Javier Barriga Hoyle 35
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 apuntara 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 enorden 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.
-
7/24/2019 Unidad 1 Microprocesadores
36/37
Microprocesadores
Ing. Javier Barriga Hoyle 36
7. Direccionamiento de pila
En la pila se almacenan las direcciones deretorno (Ej. call delay).
Los compiladores de los lenguajes de altonivel la emplean tambin para pasar losparmetros de los procedimientos y paragenerar en ella las variables automticas
(variables locales que existen durante laejecucin del subprograma y se destruyeninmediatamente despus).
7. Direccionamiento de pila
F3
21
Memoria
Situacin inicialAX = 1234h
14C0:1026
SS:SP34
12
F3
21
Memoria
Despus de
PUSH AXAX = 1234h
14C0:1024
SS:SP
F3
21
Memoria
Despus de
POP AXAX = 1234h
14C0:1026
SS:SP
Figura 8. Manejo de la pila.
-
7/24/2019 Unidad 1 Microprocesadores
37/37
Microprocesadores
7. Direccionamiento de pila
Programa ejemplo de manejo de la pila:
PUSH AX ;se guarda en la pila AX
PUSH BX ;se guarda en la pila BX
PUSH CX ;se guarda en la pila CX
POP CX ;se recupera de la pila CXPOP BX ;se recupera de la pila BX
POP AX ;se recupera de la pila AX
Area de un programa donde pueden
reutilizar los registros AX, BX y CX
7. Direccionamiento de pila
Programa ejemplo: procedimiento delay
delay PROC NEAR ; inicia procedimiento delay
PUSH CX ; se apila el valor de CX0MOV CX, 0FFFFh ; CX1 FFFFh
L2: PUSH CX ; se apila el valor de CX1MOV CX, 1000h ; CX2 1000h
L1: LOOP L1 ; decrementa CX2 hasta que sea ceroPOP CX ; recupero valor de CX1LOOP L2 ; decrementa CX1 hasta que sea ceroPOP CX ; se desapila el valor de CX0RET ; retorna al programa principal
delay ENDP ; fin del procedimiento delay