Você está na página 1de 39

IPN

Escuela Superior de Cmputo


MICROPROCESADORES II

CONTENIDO:
I. INTRODUCCION
1.1. Importancia del lenguaje ensamblador
1.2. Descripcin y caractersticas del lenguaje ensamblador
1.3. Modelos de arquitectura de computadoras
1.4. Caractersticas de los microprocesadores de la familia x86
II. EL MICROPROCESADOR Y SU ARQUITECTURA
2.1. Descripcin de la unidad procesadora de una microprocesador de la familia x86
2.2. Registros del microprocesador
2.3. Modo Real y Modo Protegido del Microprocesador
2.4 Segmentacin
2.5. Modos de direccionamiento de datos

III.
3.1.
3.2.
3.3.
3.4.

PROGRAMACION EN ENSAMBLADOR
Requerimientos para la programacin en ensamblador
Formato de un programa en ensamblador
Software TASM y MASM
Creacin de un programa en ensamblador

CONTENIDO:
IV.
4.1.
4.2.
4.3.
4.4.

CONJUNTO DE INSTRUCCIONES EN ENSAMBLADOR


Instrucciones para movimiento de datos
Instrucciones aritmticas y lgicas
Instrucciones de entrada/salida
Instrucciones control de programa

V. MACROS Y PROCEDIMIENTOS
5.1. Definicin de procedimiento
5.2. Sintaxis de un procedimient0
5.3. Definicin de una macro
5.4. Sintaxis de una macro
5.5. Bibliotecas de macros
6. INTERRUPCIONES
6.1. Definicin de interrupcin
6.2. Clasificacin
6.3. Funcionamiento del mecanismo de interrupciones
6.4. Interrupciones ms comunes

CONTENIDO:
VII. MANEJO DE ARCHIVOS
7.1. Manejando archivos con el mtodo FCB
7.2. Manejando archivos con canales de comunicacin
VIII. PROGRAMACION DE PERIFERICOS
8.1. Puerto Paralelo
8.2. Puerto Serial
8.3. TIMER
8.4. Controlador de Interrupciones
8.5. Coprocesador matemtico
8.6. Modo grfico y ratn

IX. PROGRAMACION AVANZADA


9.1. Interfaz del lenguaje C con ensamblador
9.2. Programacin de ensamblador en Windows

I. INTRODUCCION :
1.1. Importancia del lenguaje ensamblador
1.2. Descripcin y caractersticas del
lenguaje ensamblador
1.3. Modelos de arquitectura de
computadoras
1.4. Caractersticas de los microproc. de la
familia x86

1.1, 1.2 El ensamblador


Existen varias razones que justifican el uso

del ensamblador en lugar de otros lenguajes:


El ensamblador brinda la oportunidad de

conocer ms a fondo la operacin de su PC.


Se conserva el control total las tareas que realiza
la PC, siempre y cuando sta sea fsicamente
capaz de hacerlo.
Los programas en ensamblador son ms rpidos,
ms compactos y tienen mayor capacidad que
los creados en otros lenguajes.
Permite optimizar al mximo los programas.

1.3 Arquitecturas de computadoras


RISC vs. CISC
RISC.
CISC.
Hardvard vs. Princeton (Von Neuman):
Hardvard.
Von Neuman.
Otras clasificacin, (Flynn):
MIMD, MISD, SIMD y SISD.

1.3 Arquitecturas de computadoras

La arquitectura Harvard, separa la memoria de datos y la


memoria de programa, y se accede a ellas mediante buses
distintos.
La arquitectura Von Neuman trata de la misma forma los
datos que las instrucciones.

1.4 Caractersticas micros x86

1.4 Caractersticas micros x86

II. EL MICROPROCESADOR Y
SU ARQUITECTURA
2.1. Descripcin de la unidad procesadora
de una microprocesador de la familia x86
2.2. Registros del microprocesador
2.3. Modo Real y Modo Protegido del
Microprocesador
2.4. Segmentacin
2.5 Modos de direccionamiento de datos

2.1. El Microp. 80X86 y su Arquitectura


Bus de Direcciones

CPU
80X86

Memoria
RAM

Puertos E/S

Bus de Datos

Bus de Control

2.2 Registros
EAX
EBX
ECX
EDX
ESP
EBP
EDI
ESI
EIP
EFLAGS

AH
BH
CH
DH

AX
BX
CX
DX
SP
BP
DI
SI
IP
BANDERAS
CS
DS
ES
SS
FS
GS

AL
BL
CL
DL

Acumulador
Base
Contador
Datos
Apuntador de pila
Apuntador de base
ndice destino
ndice fuente
Apuntador instruccin
Banderas
Cdigo
Datos
Extra
Pila

-Registros: Propsito general, propsito especfico y de segmento.


-Los registros sombredos existen despues del 80386.
-FS y GS no tienen nombres asociados.

2.2 Registros
Registro: Conjunto de flip-flops capaz de

almacenar, y en algunos casos modificar,


informacin binaria.
Dentro de todo CPU existe un conjunto de
registros.
Algunos tienen un uso especfico, otros son
de uso general.
Los registros de uso general normalmente se
utilizan para guardar datos y resultados
intermedios.

2.2 Registros

Desde el punto de vista del programador,


es muy importante conocer el conjunto de
registros internos de un procesador y su
uso, cuando se programa en bajo nivel.
Esto se debe a que muchas de las
instrucciones de lenguaje mquina
suponen que los datos estn en alguno de
los registros o almacenan el resultado en
alguno de los registros internos.

2.2 Registros de los procesadores


80X86

Registros de Uso General:


EAX:
EBX:
ECX:
EDX:

Acumulador
Base
Contador
Datos.

Estos registros pueden guardar datos de 32, 16 u 8 bits.


EAX
32 bits
AH

AL
16 bits
AX

2.2 Registros de los procesadores


80X86
ESP: Stack Pointer (Apuntador de Pila)
EBP: Base Pointer (Apuntador Base)
ESI: Source Index (Indice Fuente u Origen)
EDI: Destination Index (Indice Destino)
Estos registros pueden almacenar datos de 32 o 16 bits.

ESP
32 bits
SP
16 bits

2.2 Registro de Banderas


Conjunto de bits que nos dan informacin

sobre el estado del procesador y sobre el


resultado de la ltima operacin efectuada.
Es el nico registro accesible a nivel de bits.
Algunos de estos bits son:
CF: Carry flag - ZF: Zero flag
SF: Sign flag
- OF: Overflow flag
IF: Interrupt flag - DF: Direction flag

........

OF DF IF SF ZF CF

2.2 Registros de los procesadores


Registros de Segmento
CS: Code Segment (Segmento de Cdigo)
DS: Data Segment (Segmento de Datos)
SS: Stack Segment (Segmento de Pila)
ES: Extra Segment (Segmento Extra)
FS: Extra Segment (Segmento Extra)
GS: Extra Segment (Segmento Extra)
Son registros de 16 bits.
Se utilizan para generar las direcciones que el
procesador enva por el bus de direcciones.

2.3 Modo real y protegido


Los microprocesadores 80286 y posteriores operan tanto

en modo real como en modo protegido.


Slo el 8086 y 8088 operan en modo real.
La operacin en modo real permite direccionar a
segmentos de 64 KB de memoria .
En el modo real de operacin, el direccionamiento a
memoria se hace en forma segmentada. Una direccin
segmentada tiene 2 partes:
Segmento : Desplazamiento
El registro CS trabaja en conjunto con el registro IP
(Apuntador de Instruccin) para generar las direcciones
hacia el programa.

2.4 Segmentacin
Tcnica utilizada en los procesadores Intel

8086/8088 para generar direcciones de 20


bits usando registros de 16 bits.
Para ilustrar esta tcnica, suponga que se desea
ubicar la posicin de una persona a partir de un
punto de referencia, pero utilizando solamente
nmeros de 2 dgitos decimales.

100

200

300

400

500

mts

2.4 Segmentacin
Esto se puede realizar si se hace lo

siguiente:
Se divide la recta en bloques de 100 metros
cada uno.
Se utilizan dos nmeros:
Uno para indicar en cul bloque est la persona
Otro para especificar su posicin dentro del bloque.

Posicin = Bloque:Posicin

100
0:50

200

300

3:45

400

500

mts

2.4 Segmentacin
Para obtener la ubicacin real debe

realizarse la siguiente operacin:


Ubicacin = Bloque*100 + Posicin
Posicin1 = 0*100 + 50 = 50
Posicin2 = 3*100 + 45 = 345
Posicin 1

100
0:50

Posicin 2

200

300

3:45

400

500

mts

2.4 Segmentacin
En el caso de los procesadores 80X86, los

bloques se llaman SEGMENTOS y la


posicin se llama DESPLAZAMIENTO
En modo real, cada una se describe con un
nmero de 16 bits.
Operando en modo real
Direccin Real = Segmento*16 + Desplazamiento.

La Direccin Real ya es una cantidad de 20

bits.
Esto significa que toda direccin tiene 2
partes: Un Segmento y un desplazamiento.

2.4 Segmentacin en Modo


Protegido
Es importante recalcar que cuando los

procesadores 80386 o posteriores operan en


modo protegido, la segmentacin funciona
de manera muy diferente.
Cada segmento puede ser de hasta 4 Gbytes.
Maneja memoria virtual, lo que implica un
esquema de paginacin.
Maneja tambin multitarea y un esquema de
proteccin de memoria.

2.5 Modos de direccionamientos


I.

Modos de direccionamiento de datos


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

II.

Modos de direccionamiento de memoria del programa


1.
2.
3.

Direccionamiento de registro
Direccionamiento inmediato
Direccionamiento directo
Direccionamiento indirecto por registro
Direccionamiento base-ms-ndice
Direccionamiento relativo al registro
Direccionamiento relativo a base-ms-ndice
Direccionamiento ndice escalado (x386 ..)
Direccionamiento relativo al programa
Direccionamiento directo
Direccionamiento indirecto

Observe la gran cantidad de modos de direccionamiento de datos.

2.5 Modos de direccionamientos


Segmento Desplazamiento Propsito Especial
CS

IP

Direccin de instruccin

SS
DS

SP o BP

Direccin de pila.

ES

DI para instrucciones Direccin de destino de


sobre cadenas.
cadenas.

BX, DI, SI, un nmero Direccin de datos.

No se permite la instruccin MOV de segmento a segmento.


No se permite que el registro destino sea el segmento de cdigo CS.
No son peremidos tamaos mezclados de registros.

2.5.1 Direccionamiento de registro


Transfiere una copia de un byte o palabra

desde el registro o localidad de memoria


fuente hacia el registro o localidad de
memoria destino.
Ejemplo:
MOV AX,BX

Copia el contenido del reg. DX


al reg. CX.
Fuente

Destino
Generacin de la direccin

MOV AX,BX

Reg. BX

En los 386 y posteriores es posible transferir una palabra doble

Reg. AX

2.5.1 Direccionamiento de registro


Ejemplos:

MOV AL,BL
MOV AX,CX
MOV SI,DI
MOV BX,ES
MOV ES,DS
MOV BL,DX
MOV CS,AX

Copia BL en AL.
Copia CX en AX.
Copia DI en SI.
Copia ES en BX
No es permitido
No es permitido
No es permitido

2.5.2 Direccionamiento inmediato


Transfiere el dato (byte o palabra)

inmediatamente al registro o localidad de


memoria destino.
Ejemplo:
MOV CH,3AH

Copia el contenido del reg. DX


al reg. CX.

Fuente

Destino
Generacin de la direccin

MOV CH,3AH

3AH

En los 386 y posteriores es posible transferir una palabra doble

Reg. CH

2.5.2 Direccionamiento inmediato


Ejemplos:

MOV BL,44
MOV AX,44H
MOV SI,0
MOV AL,A
MOV AX,AB

Copia 44 dec. en BL
Copia 0044H en AX
Copia 0000H en SI
Copia A ASCII en AL
Copia BA ASCII en AX

2.5.3 Direccionamiento directo


Se aplica a una istruccin MOV entre una

localidad de memoria y AL, Ax o EAX. La


direccin est formada por la suma del
desplazamiento ms la direccin dada por
defecto en el segmento de datos.
Ejemplo:
MOV AL,[1234H] Copia el contenido de la localidad
de mem. 11234H a AL.
Fuente

MOV [1234H],AX
Cuando DS=1000

Generacin de la direccin

Destino
Direccin
[11234H]

Reg. AX
DS x 10H + Desplazamiento
10000H + 1234H

2.5.4 Direccionamiento indirecto por


registro
Permite direccionar cualquier localidad de

memoria mediante una direccin de


desplazamiento contenida en: BP, BX, DI y
SI.
Ejemplo:
MOV [BX],CL

Copia el contenido del reg. CL


a la localidad de memoria
direccionada por BX, en DS.
Fuente

MOV [BX],CL
Cuando DS=1000

Generacin de la direccin

Destino
Direccin
[10300H]

Reg. CL
DS x 10H + BX
10000H + 0300H

2.5.5 Direccionamiento base-msndice


Se utiliza un reg. base (BP o BX) y un reg.

ndice (DI o SI) para direccionar


indirectamente la memoria.
Ejemplo:
MOV [BX+SI],BP

Copia el contenido del reg. BP a


la direccin de mem. direccionada
por BX + SI en el seg. de datos.
Fuente

MOV [BX+SI],BP
Cuando DS=1000

Generacin de la direccin

Destino
Direccin
[10500H]

Reg. BP
DS x 10H + BX + SI
10000H + 0300H + 0200H

2.5.6 Direccionamiento relativo a


registro
Los datos de un segmento de memoria son

direccionados sumando el desplazamiento al


contenido de un registro base o ndice (BP,
BX, DI o SI).
Ejemplo:
MOV CL,[BX+4]

Copia el contenido de la localidad


de mem. del DS direccionada por
BX ms 4 en CL.
Fuente

MOV CL,[BX+4]
Cuando DS=1000

Generacin de la direccin

Direccin
[10304H]

Destino
Reg. CL

DS x 10H + BX + 4
10000H + 0300H + 4

2.5.7 Direccionamiento relativo a


base-ms-ndice
Se utiliza un reg. base (BP o BX) y un reg.

ndice (DI o SI) ms un desplazamiento


para formar la direccin de memoria. Es
utilizado a menudo para direccionar un
arreglo bidimensional de datos de memoria.
Ejemplo:
MOV ARRAY[BX+SI],DX Copia DX a la localidad de mem
del DS direccionada por la suma
de ARRAY, BX y SI.
Fuente

MOV ARRAY[BX+SI],DX

Generacin de la direccin

Direccin
[11500H]

Reg. DX

Cuando DS=1000, ARRAY=1000H

Destino

DS x 10H + ARRAY + BX + SI
10000H + 1000H + 0300H + 0200H

2.5.8 Direccionamiento ndice


escalado
Exclusivo para procesadores x386 y posteriores. Utiliza

dos registros de 32 bits (uno base y otro dice). El reg.


ndice es multiplicado por un factor de escalamiento 1X,
2X, 4X u 8X. El factor 1X est implicito. 2X es empleado
para direccionar arreglos de mem. de palabras de 16 bits.
4X para palabras dobles y 8X para areglos de mem. de
palabra cudruple.
Ejemplo:
MOV [EBX+2x ESI],AX Copia AX en la loc. De mem. Del DS
direccionada pro la suma EBX ms dos
veces ESI.
Fuente

MOV [EBX+2x ESI],AX

Generacin de la direccin

Direccin
[10700H]

Reg. AX

Cuando DS=1000, EBX=300H, ESI=200H

Destino

DS x 10H + EBX + 2 x ESI


10000H + 00000300H + 00000400H

GRACIAS POR NO DOMIRSE

Você também pode gostar