Вы находитесь на странице: 1из 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.

Registros de Uso General:


EAX: EBX: ECX: EDX: Acumulador Base Contador Datos.
EAX 32 bits

2.2 Registros de los procesadores 80X86

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

AH 16 bits AX

AL

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
Posicin 2

100 0:50

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

II.

Modos de direccionamiento de memoria del programa


1. 2. 3.

Observe la gran cantidad de modos de direccionamiento de datos.

2.5 Modos de direccionamientos


Segmento Desplazamiento Propsito Especial
CS SS DS ES
IP SP o BP Direccin de instruccin Direccin de pila.

BX, DI, SI, un nmero Direccin de datos. DI para instrucciones Direccin de destino de sobre cadenas. cadenas.

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
Fuente Generacin de la direccin

Copia el contenido del reg. DX al reg. CX.


Destino Reg. BX

MOV AX,BX

Reg. AX

En los 386 y posteriores es posible transferir una palabra doble

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.


Destino Generacin de la direccin

Fuente

MOV CH,3AH

3AH

Reg. CH

En los 386 y posteriores es posible transferir una palabra doble

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 Generacin de la direccin Destino Direccin [11234H] DS x 10H + Desplazamiento 10000H + 1234H

MOV [1234H],AX
Cuando DS=1000

Reg. AX

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 Generacin de la direccin Destino Direccin [10300H] DS x 10H + BX 10000H + 0300H

MOV [BX],CL
Cuando DS=1000

Reg. CL

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 Generacin de la direccin Destino Direccin [10500H] DS x 10H + BX + SI 10000H + 0300H + 0200H

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

Reg. BP

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 Generacin de la direccin Destino Reg. CL DS x 10H + BX + 4 10000H + 0300H + 4 Direccin [10304H]

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

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 Generacin de la direccin Destino Direccin [11500H]
DS x 10H + ARRAY + BX + SI 10000H + 1000H + 0300H + 0200H

MOV ARRAY[BX+SI],DX

Reg. DX

Cuando DS=1000, ARRAY=1000H

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 Generacin de la direccin Destino Direccin [10700H]
DS x 10H + EBX + 2 x ESI 10000H + 00000300H + 00000400H

MOV [EBX+2x ESI],AX

Reg. AX

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

GRACIAS POR NO DOMIRSE

Вам также может понравиться