You are on page 1of 39

IPN

Escuela Superior de Cómputo
MICROPROCESADORES II

CONTENIDO:
I. INTRODUCCION 1.1. Importancia del lenguaje ensamblador 1.2. Descripción y características del lenguaje ensamblador 1.3. Modelos de arquitectura de computadoras 1.4. Características de los microprocesadores de la familia x86 II. EL MICROPROCESADOR Y SU ARQUITECTURA 2.1. Descripción 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 Segmentación 2.5. Modos de direccionamiento de datos

III. 3.1. 3.2. 3.3. 3.4.

PROGRAMACION EN ENSAMBLADOR Requerimientos para la programación en ensamblador Formato de un programa en ensamblador Software TASM y MASM Creación 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 aritméticas y lógicas Instrucciones de entrada/salida Instrucciones control de programa

V. MACROS Y PROCEDIMIENTOS 5.1. Definición de procedimiento 5.2. Sintaxis de un procedimient0 5.3. Definición de una macro 5.4. Sintaxis de una macro 5.5. Bibliotecas de macros 6. INTERRUPCIONES 6.1. Definición de interrupción 6.2. Clasificación 6.3. Funcionamiento del mecanismo de interrupciones 6.4. Interrupciones más comunes

Manejando archivos con canales de comunicación VIII.2. Interfaz del lenguaje “C” con ensamblador 9. Programación de ensamblador en Windows .2. Puerto Paralelo 8. Coprocesador matemático 8.1. MANEJO DE ARCHIVOS 7.1. PROGRAMACION AVANZADA 9.2.4. Controlador de Interrupciones 8. TIMER 8.3. Modo gráfico y ratón IX. Puerto Serial 8.CONTENIDO: VII.6. Manejando archivos con el método FCB 7.1.5. PROGRAMACION DE PERIFERICOS 8.

1. Descripción y características del lenguaje ensamblador 1. de la familia x86 . Modelos de arquitectura de computadoras 1.4.3.2. Características de los microproc. INTRODUCCION : 1.I. Importancia del lenguaje ensamblador 1.

siempre y cuando ésta sea físicamente capaz de hacerlo.1. más compactos y tienen mayor capacidad que los creados en otros lenguajes. • Permite optimizar al máximo los programas. • Los programas en ensamblador son más rápidos.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 más a fondo la operación de su PC. 1. • Se conserva el control total las tareas que realiza la PC.

3 Arquitecturas de computadoras • RISC vs. (Flynn): • MIMD. Princeton (Von Neuman): • Hardvard. SIMD y SISD. MISD. . • CISC. • Hardvard vs. • Von Neuman. • Otras clasificación.1. CISC • RISC.

y se accede a ellas mediante buses distintos. .3 Arquitecturas de computadoras La arquitectura Harvard.1. La arquitectura Von Neuman trata de la misma forma los datos que las instrucciones. separa la memoria de datos y la memoria de programa.

1.4 Características micros x86 .

1.4 Características micros x86 .

Modo Real y Modo Protegido del Microprocesador 2.2.1. EL MICROPROCESADOR Y SU ARQUITECTURA 2.4.5 Modos de direccionamiento de datos .II. Registros del microprocesador 2. Segmentación 2. Descripción de la unidad procesadora de una microprocesador de la familia x86 2.3.

2.1. 80X86 y su Arquitectura Bus de Direcciones CPU 80X86 Memoria RAM Puertos E/S Bus de Datos Bus de Control . El Microp.

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 instrucción Banderas Código Datos Extra Pila -Registros: Propósito general. . -Los registros sombredos existen despues del 80386. propósito específico y de segmento. -FS y GS no tienen nombres asociados.2.

• Los registros de uso general normalmente se utilizan para guardar datos y resultados intermedios. . otros son de uso general.2 Registros • Registro: Conjunto de flip-flops capaz de almacenar. • Dentro de todo CPU existe un conjunto de registros. • Algunos tienen un uso específico. información binaria.2. y en algunos casos modificar.

es muy importante conocer el conjunto de registros internos de un procesador y su uso. . cuando se programa en bajo nivel.2 Registros • • Desde el punto de vista del programador.2. Esto se debe a que muchas de las instrucciones de lenguaje máquina suponen que los datos están 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. 16 u 8 bits. AH 16 bits AX AL .2 Registros de los procesadores 80X86 – Estos registros pueden guardar datos de 32.

2. ESP 32 bits SP 16 bits .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.

DF: Direction flag . OF DF IF SF ZF CF .ZF: Zero flag – SF: Sign flag ..2 Registro de Banderas • Conjunto de bits que nos dan información sobre el estado del procesador y sobre el resultado de la última operación efectuada.....2. • Algunos de estos bits son: – CF: Carry flag .OF: Overflow flag – IF: Interrupt flag ... • Es el único registro accesible a nivel de bits.

2. » Se utilizan para generar las direcciones que el procesador envía por el bus de direcciones. .2 Registros de los procesadores • Registros de Segmento – CS: Code Segment (Segmento de Código) – 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.

3 Modo real y protegido • Los microprocesadores 80286 y posteriores operan tanto • • • • en modo real como en modo protegido. La operación en modo real permite direccionar a segmentos de 64 KB de memoria .2. En el modo real de operación. Sólo el 8086 y 8088 operan en modo real. el direccionamiento a memoria se hace en forma segmentada. Una dirección segmentada tiene 2 partes: Segmento : Desplazamiento El registro CS trabaja en conjunto con el registro IP (Apuntador de Instrucción) para generar las direcciones hacia el programa. .

– Para ilustrar esta técnica. suponga que se desea ubicar la posición de una persona a partir de un punto de referencia.2.4 Segmentación • Técnica utilizada en los procesadores Intel 8086/8088 para generar direcciones de 20 bits usando registros de 16 bits. pero utilizando solamente números de 2 dígitos decimales. 100 200 300 400 500 mts .

– Posición = Bloque:Posición 100 0:50 200 300 3:45 400 500 mts .2.4 Segmentación • Esto se puede realizar si se hace lo siguiente: – Se divide la recta en bloques de 100 metros cada uno. – Se utilizan dos números: » Uno para indicar en cuál bloque está la persona » Otro para especificar su posición dentro del bloque.

4 Segmentación • Para obtener la ubicación real debe realizarse la siguiente operación: – Ubicación = Bloque*100 + Posición » Posición1 = 0*100 + 50 = 50 » Posición2 = 3*100 + 45 = 345 Posición 1 Posición 2 100 0:50 200 300 3:45 400 500 mts .2.

. • Esto significa que toda dirección tiene 2 partes: Un Segmento y un desplazamiento.4 Segmentación • En el caso de los procesadores 80X86. los bloques se llaman SEGMENTOS y la posición se llama DESPLAZAMIENTO • En modo real. cada una se describe con un número de 16 bits. • La Dirección Real ya es una cantidad de 20 bits.2. • Operando en modo real • Dirección Real = Segmento*16 + Desplazamiento.

la segmentación funciona de manera muy diferente.2. • Cada segmento puede ser de hasta 4 Gbytes. • Maneja memoria virtual. . lo que implica un esquema de paginación. • Maneja también multitarea y un esquema de protección de memoria.4 Segmentación en Modo Protegido • Es importante recalcar que cuando los procesadores 80386 o posteriores operan en modo protegido.

2.5 Modos de direccionamientos I. 2. . 8. • Observe la gran cantidad de modos de direccionamiento de datos. 4.) Direccionamiento relativo al programa Direccionamiento directo Direccionamiento indirecto II. Direccionamiento de registro Direccionamiento inmediato Direccionamiento directo Direccionamiento indirecto por registro Direccionamiento base-más-índice Direccionamiento relativo al registro Direccionamiento relativo a base-más-índice Direccionamiento índice escalado (x386 . 5. Modos de direccionamiento de datos 1.. 7. 3.2. 3. 6. Modos de direccionamiento de memoria del programa 1.

DI.5 Modos de direccionamientos Segmento Desplazamiento Propósito Especial CS SS DS ES IP SP o BP Dirección de instrucción Dirección de pila. SI. • No son peremidos tamaños mezclados de registros. cadenas. un número Dirección de datos. BX. DI para instrucciones Dirección de destino de sobre cadenas. • No se permite la instrucción MOV de segmento a segmento. .2. • No se permite que el registro destino sea el segmento de código CS.

Destino Reg. DX al reg.5.2.BX Fuente Generación de la dirección Copia el contenido del reg. Ejemplo: • MOV AX. CX.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.BX Reg. AX En los 386 y posteriores es posible transferir una palabra doble . BX MOV AX.

2.DX MOV CS.AX Copia BL en AL.ES MOV ES.DS MOV BL.5. Copia ES en BX No es permitido No es permitido No es permitido .1 Direccionamiento de registro • Ejemplos: MOV AL. Copia DI en SI.DI MOV BX.BL MOV AX. Copia CX en AX.CX MOV SI.

Ejemplo: • MOV CH. CH En los 386 y posteriores es posible transferir una palabra doble . Destino Generación de la dirección Fuente MOV CH.2.2 Direccionamiento inmediato • Transfiere el dato (byte o palabra) inmediatamente al registro o localidad de memoria destino. CX.3AH Copia el contenido del reg.3AH 3AH Reg.5. DX al reg.

’A’ MOV AX.2 Direccionamiento inmediato • Ejemplos: MOV BL.44H MOV SI.2. en BL Copia 0044H en AX Copia 0000H en SI Copia A ASCII en AL Copia BA ASCII en AX .5.0 MOV AL.44 MOV AX.’AB’ Copia 44 dec.

Ax o EAX.[1234H] Copia el contenido de la localidad de mem. 11234H a AL. AX . Fuente Generación de la dirección Destino Dirección [11234H] DS x 10H + Desplazamiento 10000H + 1234H MOV [1234H].AX Cuando DS=1000 Reg.5.2. La dirección está formada por la suma del desplazamiento más la dirección dada por defecto en el segmento de datos.3 Direccionamiento directo • Se aplica a una istrucción MOV entre una localidad de memoria y AL. Ejemplo: MOV AL.

en DS.CL Cuando DS=1000 Reg. Fuente Generación de la dirección Destino Dirección [10300H] DS x 10H + BX 10000H + 0300H MOV [BX].4 Direccionamiento indirecto por registro • Permite direccionar cualquier localidad de memoria mediante una dirección de desplazamiento contenida en: BP.2. CL a la localidad de memoria direccionada por BX. CL . BX. Ejemplo: • MOV [BX]. DI y SI.5.CL Copia el contenido del reg.

Fuente Generación de la dirección Destino Dirección [10500H] DS x 10H + BX + SI 10000H + 0300H + 0200H MOV [BX+SI]. índice (DI o SI) para direccionar indirectamente la memoria.5 Direccionamiento base-másíndice • Se utiliza un reg. base (BP o BX) y un reg. Ejemplo: MOV [BX+SI]. BP a la dirección de mem.5. direccionada por BX + SI en el seg. de datos. BP .BP Cuando DS=1000 Reg.BP Copia el contenido del reg.2.

[BX+4] Cuando DS=1000 . CL DS x 10H + BX + 4 10000H + 0300H + 4 Dirección [10304H] MOV CL.5.[BX+4] Copia el contenido de la localidad de mem. del DS direccionada por BX más 4 en CL. DI o SI).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. Fuente Generación de la dirección Destino Reg. BX.2. Ejemplo: MOV CL.

7 Direccionamiento relativo a base-más-índice • Se utiliza un reg. Fuente Generación de la dirección Destino Dirección [11500H] DS x 10H + ARRAY + BX + SI 10000H + 1000H + 0300H + 0200H MOV ARRAY[BX+SI]. BX y SI.2.DX Reg.DX Copia DX a la localidad de mem del DS direccionada por la suma de ARRAY. Es utilizado a menudo para direccionar un arreglo bidimensional de datos de memoria.5. DX Cuando DS=1000. base (BP o BX) y un reg. Ejemplo: MOV ARRAY[BX+SI]. índice (DI o SI) más un desplazamiento para formar la dirección de memoria. ARRAY=1000H .

5. 2X. 4X para palabras dobles y 8X para areglos de mem. Ejemplo: MOV [EBX+2x ESI]. Del DS direccionada pro la suma EBX más dos veces ESI. 4X u 8X.2. De mem. Utiliza dos registros de 32 bits (uno base y otro ídice).AX Copia AX en la loc. de palabra cuádruple. de palabras de 16 bits. El reg. EBX=300H. El factor 1X está implicito. ESI=200H . AX Cuando DS=1000.AX Reg.8 Direccionamiento índice escalado • Exclusivo para procesadores x386 y posteriores. índice es multiplicado por un factor de escalamiento 1X. 2X es empleado para direccionar arreglos de mem. Fuente Generación de la dirección Destino Dirección [10700H] DS x 10H + EBX + 2 x ESI 10000H + 00000300H + 00000400H MOV [EBX+2x ESI].

.

GRACIAS POR NO DOMIRSE .