micro proce sad or

82
Laboratorio TIME MICROPROCESADOR DE 32 BIT DL 3155E24 GUÍA TE RICA Ó

Upload: oscar-duque-suarez

Post on 26-Nov-2015

47 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Micro Proce Sad Or

Laboratorio TIME

MICROPROCESADOR DE 32 BIT DL 3155E24

GUÍA TE RICAÓ

Page 2: Micro Proce Sad Or

Página blanca

Page 3: Micro Proce Sad Or

Este Training Software afronta el estudio del microprocesador de 32 bit y de sus aplicaciones. Está estructurado en las siguientes partes:

DL 3155E24 : Microprocesador de 32 bit

GUIA TEORICALecciones:

Estructura Interna de los microprocesadores Intel

El microprocesador Intel 80386EX

El Módulo Microprocesador de 32 bit DL 3155 E24

Desarrollo de programas de 32 bit

Page 4: Micro Proce Sad Or

Página blanca

Page 5: Micro Proce Sad Or

Leccion N.1: Estructura interna de los µP Intel

Objetivos: Saber:

como han evolucionado los microprocesadores en los últimos años

la estructura interna de los microprocesadores Intel

el modelo de programación y la dirección de memoria

Requisiti: conocimiento de la electrónca digital y de las memorias

Contenidos: evolución de los microprocesadores

estructura interna de un microprocesador de un sistema de microprocesador

el modelo de programación de los microprocesadores Intel

la dirección de memoria

Page 6: Micro Proce Sad Or

Página blanca

Page 7: Micro Proce Sad Or

Los microprocesadores han evolucionado, en los últimos 30 años, pasando de los primeros microprocesos de 8 bit (ej. Intel 8008 del 1971) hasta los actuales microprocesadores de 64 bit (ej. Intel Pentium). Existen en comercio diferentes tipos de microprocesadores, desarrollados por diferentes fabricantes.En el interior de los mismos, los que han tenido la más amplia difusión son aquellos utilizados en los Personal Computer IBM compatibles.

El primer Personal Computer desarrollado por IBM utilizaba el microprocesador Intel 8088. Un µP de 16 bit interno, con bus externo de 8 bit, y con 1 MB de memoria externa.

Sucesivamente fue desarrollado el microprocesador Intel 80286, siempre de 16 bit, pero con una dirección de memoria hasta 16 MB.

El paso sucesivo fue el desarrollo del microprocesador Intel 80386, con 32 bit y dirección de memoria hasta 16 MB. Este microprocesador representa un notable paso hacia adelante con respecto a los precedentes ya que permite en primer lugar el soporte nativo de las prestaciones multitask (mas programas que son efectuados contemporaneamente). Sucesivamente fue realizado el microprocesador 80486 que estaba constituido por un 80386 y por el relativo coprocesador matematico 80387.

En 1993 fue introducido el microprocesador Intel Pentium que era un desarrollo ulterior del 386, con bus de 64 bit, dirección de memoria de 4 GB y velocidad de clock aumentadas de hasta 66 MHz. Los últimos desarrollos son historia actual, con incrementos de velocidad y prestaciones de la línea de los microprocesadores Pentium.

La tabla siguiente indica los diferentes tipos de microprocesador por Intel para los Personal Computer, y sus características mas importantes.

El microprocesador 80386 representa la mejor solución didáctica para el estudio de los microprocesadores.

De hecho tiene una arquitectura de 32 bit, no presenta la complessità del Pentium, pero manteniendo la compatibilidad con el mismo. Todo es estudiado con el 386 puede después ser indicado sobe sistemas con el Pentium sin ningún problema de compatibilidad con el relativo aumento de prestaciones.

Un análisis más detallada de los diferentes microprocesadores Intel y de su evolución indicada en la figura:

1.1 Evolución de los microprocesadores

Microprocesador Bus de Datos interno Memoria 8088 16 1M8086 16 1M80286 16 16M80386 32 4G

80486SX 32 4G + 8Kcache80486DX 32 4G + 8K cachePentium 64 4G + 16K cache

Page 8: Micro Proce Sad Or
Page 9: Micro Proce Sad Or

El esquema de bloques de un genérico microprocesador está indicado en la figura:

Fig. 2.1.1

No corresponde a ningún microprocesador presente en el mercado, pero resulta suficientemente genérico para poder comprender los principios relativos a la estructura interna de los microprocesadores. Los dispositivos más importantes que pueden ser localizados son los siguientes:

Son descritos a continuación.

Contiene la lógica de elaboración y cálculo del microprocesador. Se abastece de 2 puertas de entrada y de una puerta de salida. Ambas puertas de entrada están dotadas de un registro temporaneo que mantiene memorizado el dato en la entrada a disposición del ALU. Las dos puertas de entrada del ALU permiten adquirir desde el interior del microprocesador o por un especial registro, llamado acumulador. La puerta de salida permite normalmente enviar los datos al acumulador.

El tipo y la cantidad de funciones que la ALU puede desarrollar varía de un microprocesador a otro, pero algunas funciones son soportadas por todos los microprocesadores, como:

1.2 Estructura interna de un microprocesador

La Unidad Aritmético/Lógica (ALU)Los Registros internosLa lógica de Control

La Unidad Aritmético/Lógica (ALU)

suma y restaincremento y disminucióndesplazamiento derecho e izquierdo de los bitfunciones lógicas AND, OR, XOR

Page 10: Micro Proce Sad Or

Los registros son las memorias internas capaces de memorizar una palabra de datos. Su número y las funciones pueden variar de un microprocesador a otro, pero los siguientes registros son normalmente siempre presentes:

La lógica de control permite a todas las unidades internas del microprocesador de elaborar juntos y en la correcta secuencia temporal. Esta lógica recoge las instrucciones del registro de las instrucciones, verifica que se debe hacer, y proporciona a los otros dispositivos los mandos necesarios para la ejecución de la instrucción.

Los Registros

Acumulador Es el registro principal del microprocesador para la manipulación de los datos. Normalmente cualquier operación aritmético/lógica prevé la presencia de un operando en el acumulador. El acumulador trabaja con la misma longitud de palabra de datos usada por el microprocesador, por lo que un microprocesador de 32 bit tendrá un acumulador de 32 bit.

Registro de instrucciones

Contiene la instrucción que el microprocesador está efectuando. La importancia de este registro reside en el hecho de que su salida pilota el dispositivo de descodificación de las instrucciones y la lógica de control del microprocesador.

Contador de programa

Este registro sirve para individuar la instrucción que se está efectuando, y la sucesiva instrucción que deberá ser efectuada. Mientras el microprocesador sigue una instrucción el contador de programa punta a la sucesiva instrucción para efectuar.

Registro de direcciones de memoria

Este registro sirve para individuar la locación de memoria donde residen los datos que son necesarios a la CPU. Su longitud debe ser tal para poder dirigir una célula cualquiera de memoria.

Registro de estado Este registro es usado para memorizar el resultado de las operaciones que el microprocesador efectúa. Oportunas instrucciones permiten despés tomar las decisiones en base al estado de los bit de este registro.

Registros de uso general

Estos registros expanden las posibilidades del registro acumulador para la memorización de datos en el interior del microprocesador y por su elaboración. El número y las funciones de estos registros dependen del detalle microprocesador.

La lógica de Control

Page 11: Micro Proce Sad Or

El esquema de bloques de un genérico microprocesador está mostrado en la figura.

Todos los dispositivos de un sistema de microprocesador dialogan entre si a través de un BUS de conexión.

1.3 Estructura de un sistema de microprocesador

Se puede notar en el mismo: El MICROPROCESADOR: que controla todos los dispositivos a través de un BUS de conexión;La memoria EPROM o ROM: que contiene el programa que el microprocesador debe efectuar (memoria de sola lectura);La memoria RAM: que contiene los datos que el microprocesador elabora en los diferentes instantes (memoria de escritura y lectura);Los dispositivos de INPUT/OUTPUT: que permiten al microprocesador controlar los sistemas externos. Se trata en general de dispositivos digitales que permiten leer el estado de algunas líneas y mandar las otras.

Fig. 2.1.1

Este BUS está dividido en:

Se necesita en general de un dispositivo externo, denominado descodificador de las direcciones, para asignar las diferentes direcciones a los diferentes dispositivos presentes.

BUS de los DATOS. El microprocesador utiliza este bus de 8, 16, 32, 64 líneas para intercambiar datos con los varios dispositivos (uno cada vez).BUS de las DIRECCIONES. Permite dirigir los varios dispositivos que deben intercambiar datos, uno cada vez, con el microprocesador. El número de las líneas depende de la cantidad de memoria de dirección por el microprocesador.

Fig. 2.1.1

Page 12: Micro Proce Sad Or

Página blanca

Page 13: Micro Proce Sad Or

El modelo de programación no es otro que la configuración interna de los recursos puestos a disposición del programador por parte del microprocesador. Desde este momento en adelante se hará referencia a la familia de procesadores Intel que parte del 8086 y llega al Pentium.

Ahora sigue una breve descripción de los diferentes registros.

1.4 El modelo de programación

La figura 1.4.1 ilustra el modelo de programación para esta familia de microprocesadores.

Los microprocesadores 8088, 8086 y 80286 contraindicados por una arquitectura de 16 bit usan un subconjunto de los registros de la figura.

Los microprocesadores del 386 al Pentium usan la arquitectura completa de 32 bit.

Los registros pueden ser divididos en:

Registros de uso generalRegistros de segmentoOtros registros.

Fig. 2.1.1 Los registros de uso general pueden también ser usados como registros de 8 y 16 bit.

Los registros de 8 bit son: AL, AH, BL, BH, CL, CH, DL, DH.

Los registros de 16 bit son: AX, BX, CX, DX, BP, SI, DI, SP.

Fig. 2.1.1

Registros de uso generalEAX Acumulador

Puede ser usado como registro de 32 bit (EAX), como registro de 16 bit (AX), o como dos registros de 8 bit (AH y AL). Si es usado de 16 o 8 bit solamente aquella porción del registro es modificada sin alterar los restantes bit. El acumulador es usado en las instrucciones como la multiplicación, la dvisión, .. donde tiene un significado especial, pero normalmente puede ser considerado como un registro de uso general. En el 386 y superiores el registro EAX puede también dirigir la memoria de datos.

Page 14: Micro Proce Sad Or

EBX base index

Como EAX también EBX puede ser usado como EBX, BX, BH y BL. El registro EBX es utilizado paa la dirección de la memoria en todas las versionas de los microprocesadores Intel.

ECX count

Es un registro de uso general que es utilizado para la cuenta en diferentes instrucciones. En el micro 386 y superiories puede tambié dirigir la memoria de datos. Las instrucciones de rotación y shift usan CL como contador para individuar el número de veces que la operación debe ser repetida. Las instrucciones de línea repetida usan CX.

EDX data

Registro de uso general que sirve también para memorizar parte del resultado en una multiplicación o parte dividiendo antes de una división. En el 386 y superiores el registro EDX puede también dirigir la memoria de datos.

EBP base pointer

Es utilizado como apuntador de locaciones de memoria, en todas las versiones de los microprocesadores, en las instrucciones de trasferencia de datos de la memoria.Puede ser usado sea como registro EBP como BP.

EDI destination index

Puede ser utilizado como registro de uso general de 32 bit (EDI) o como registro de 16 bit (DI). A menudo es utilizado como registro de dirección de destino de datos en las instrucciones con las cadenas.

ESI source index

Puede ser utilizado como registro de uso general de 32 bit (ESI) o como registro de 16 bit (SI). A menudo es utilizado como registro de dirección de fuente de datos en las instrucciones con las cadenas.

ESP stack pointer

Dirige el área de memoria utilizada para el stack. El stack es aquella zona de memoria de tipo last-in first-out donde son salvadas las direcciones de retorno de las subroutines y el contenido de los registros (instrucciones de POP y PUSH).

Registros de segmentoSon utilizados para generar las direcciones de memoria donde residen las instrucciones y los datos, en combinación con otros registros. Para su funcionamiento específico se ven las próximas dos páginas relativas a las problemáticas de dirección.CS code

Individua una sección de memoria donde está presente el código relativo a los programas y procedimientos que el microprocesador debe efectuar. El registro Code Segment individua la dirección de inicio de esta sección de memoria. En las operaciones de modo-real la sección de memoria puede ser larga 64K máximos. En las operaciones de modo-protegido puede llegar a 4GB.

DA data

Individua una sección de memoria donde son presentes los datos utilizados por el programa. El registro Data Segment individua la dirección de inicio de esta sección de memoria. Los datos en el interior de la sección son después individuados por una dirección (offset) que puede ser un número fijo o contenido con otro registro. En las operaciones de modo-real la sección de memoria puede ser larga 64K máximos. En

las operaciones de modo-protegido puede llegar a 4GB.

Page 15: Micro Proce Sad Or

ES extra

Individua un segmento de datos adicional, a menido útil en las operaciones como en las cadenas.

SS stack

Individua el area de memoria utilizada para el stack del microprocesador. Las locaciones en el interior de esta area son después individuadas por el contenido del Stack Pointer (SP).

FS e GS

Registros de segmento adicionales para poder acceder contemporaneamente a dos segmentos adicionales.

Otros registrosEIP instruction pointer

Individua la dirección de la prósima instrucción para efectuar, en el interior del Code Segment.. Este registro es usado como EIP en el caso de un 386 (o superior) funcionante de modo protegido, mientras es usado como IP (16 bit) en el caso de modo real. Es usado por el microprocesador para encontrar la sucesiva instrucción para efectuar. Es automáticamente incrementato después de cada instrucción, o es modificado completamente en el caso de instrucciones de salto y de llamada a funciones.

EFLAGS Este registro conserva el estado del microprocesador, otras para controlar sus operaciones. La figura siguiente muestra su estructura:

Los primeros 16 bit (FLAG register) son válidos para todos los microprocesadores, mientras los sucesivos son específicos para el 386 en adelante. La descripción de los diferentes bits está indicada a continuación.

C (carry) Memoriza la relación (carry) en las operaciones de suma o el préstamo (borrow) en aquellas de resta. Es también utilizado para indicar condiciones de error en algunos procedimientos.

Page 16: Micro Proce Sad Or

P (parity) La igualdad individua el número de 1 presentes en un número. Vale 0 (igual impares) si el negro de 1 es impar, vale 1 (igual pares) si el número de 1 es igual.

A (auxiliary carry) Memoriza la relación (carry) en las operaciones de suma o el préstamo (borrow) en aquellas de resta, relativa a las posiciones 3 y 4 del resultado. Es usado en las operaciones con números BCD.

Z (cero) Indica si el resultado de una operación es cero. Vale 1 si el resultado es 0, vale 0 en los otros casos.

S (sign) Indica el signo del resultado de una operación matemática o lógica. Vale 1 si el signo es negativo, mientras vale 0 si el signo es positivo.

T (trap) Es usado en las operaciones de debug para la verificación del funcionamiento de los programas.

I (interrupt) Controla las operaiones del pin de entrada INTR. Si I=1 el pin está habilitado para generar interrupciones, si está a 0 las interrupciones son bloqueadas.

D (direction) Selecciona la modalidad de incremento o decremento para los registros DI y SI durante las instrucciones de cadena. Si D=1 los registros son automáticamente decrementados, mientras si D=0 son automáticamente incrementados.

O (overflow) Indica que una operación h generado un overflow (es decir un número que excede las capacidades de la máquina).

IOPL (in/out privilege level)

Es usado en el modo protegido para seleccionar el nivel de privilegio de las operaciones de I/O.

NT (nested task) Es utilizado en el modo protegido para indicar que el task actual se encuentra anidado en el interior de otro task.

RF (resume) Es usado en las operaciones de debug para la verificación del funcionamiento de los programas.

VM (virtual mode) Es usado en el modo protegido para seleccionar el modo de funcionamiento virtual (este modo proporciona divisiones de memoria DOS múltiple).

AC (alignment check)

Usado solamente en el 80486SX.

VIF Usado en el Pentium.VIP Usado en el Pentium.ID Usado en el Pentium.

Page 17: Micro Proce Sad Or

Los microprocesadores del 80286 en el Pentium pueden operar ya sea en modo real como de manera protegida, mientras aquellos precedentes operan solamente en modo real La modalidad real es la típica de funcionamiento del sistema operativo MS-DOS y es capaz de gestionar solamente 1MB de memoria. En cada caso todos los microprocesadores, al reset, se ponen a operar con modalidad real, pueden después èasar para operar con modalidad protegida mediante programación de la misma. La modalidad protegida es la típica de los sistemas multi-task donde más programas operan contemporaneamente.

Todos los ejemplos de uso del Módulo E24 serán desarrollados con modalidad real.

Con modalidad real todas las ubicaciones de memoria física son individuadas por una cmbinación de una direción de segmento y de una dirección de offset (o dirección efectiva) en el interior del segmento.

La dirección de segmento, contenido en un registro de segmento, define el inicio de una zona de 64KB de memoria, denominada segmento (se trata de una dirección de 16 bit, con valores de 0000 a FFFF. Ladirección de offset definine una ubicación en el interior de las 64K ubicaciones del segmento (entonces es un registro de 16 bit con contenio variable de 0000 a FFFF).

1.5 Dirección de memoria en el Modo Real

La figura 1.5.1 de al lado muestra como se obtiene la dirección de memoria física a partir de la dirección de segmento y el de offset.

Se ve como a partir de las direcciones de offset y de segmento, cada uno de 16 bit, se llega a una dirección final de 20 bit que permite dirigir 1MB de memoria.

Fig. 1.5.1

Page 18: Micro Proce Sad Or

La figura 1.5.2 muestra tutta la memoria (1MB) que se puede dirigir con modalidad real.

Se ve como por ejemplo una dirección cualquiera física, por ejemplo la siguiente dirección, que suponemos que contiene un código de programa: 1F000 se obtiene como combinación de una dirección de segmento: CS = 1000 y de una dirección de offset: IP = F000

Muy a menudo se usa la siguiente expresión para indicar las direcciones de memoria físicas:

dirección de segmento:dirección de offset

Ejemplo:

CS:IP 1000:F000

Page 19: Micro Proce Sad Or

El funcionamiento en modo protegido (característico de los microprocesadores del 286 en adelante) permite acceder al primer 1M de memoria y también a aquellos superiores.

El funcionamiento sigue igual al del modo real, en el sentido que se usa siempre un segmento y un offset. La diferencia está en el hecho de que el offset puede ser largo 32 bit y la dirección de segmento resulta diferente.

En el lugar de la dirección de segmento, el registro segmento contiene ahora un selector que selecciona un descriptor de una tabla de los descriptores. El descriptor individua la ubicación del segmento de memoria, unidamente a su longitud y a los derechos de acceso.

El uso, también con el modo protegido, del registro segmento y del offset hace que las instrucciones con la modalidad protegida no presenten ninguna diferencia respecto a aquellas con modalidad real, de hecho muchos programas escritos para la modalidad real pueden funcionar con la modalidad prtegida incluso sin modificaciones.

Veamos ahora, con un ejemplo, ilustrar más a fondo el funcionamiento de la tabla de los descriptores.

El registro Data Segment DS contiene el número 0008 que selecciona el primer descriptor en la tabla de los descriptores (cada descriptor es largo 8 bytes y el descriptor N.0 no puede ser utilizado).

El descriptor N.1 definine una dirección base del segmento igual a 00100000H, con una dimensión a 000FFH.

1.6 Dirección de memoria en el Modo Protegido

El segmento de memoria física dirgigida por DS varía entonces de 100000H hasta 1000FFH.

Page 20: Micro Proce Sad Or

Página blanca

Page 21: Micro Proce Sad Or

Los modos de dirección representan las modalidades utilizadas por el microprocesador para individuar los datos solicitados por cada instrucción. El aprendizaje de los modos de dirección es de fundamental importancia para el desarrollo eficientes de los programas.

Para la ilustración de modos de dirección de los microprocesadores Intel se hará referencia a la instrucción MOV.

La instrucción MOV es capaz de mover los datos en variados modos. Estos modos corresponden a las posibles variaciones de la instrucción según el tipo de dirección utilizado y son indicados en la tabla.

1.7 Modos de dirección

Un ejemplo de instrucción MOV está indicado en la fig. 1.7.1 donde la instrucción no hace otra cosa que copiar el contenido del registro BX en el registro AX (el contenido de BX sigue inalterado).

BX es el registro fuente y AX el registro de destino.

Tipo Instrucción Fuente Generación de dirección Destino

Register MOV AX,BX Register BX Register

AX

Immediate MOV CH,3AH Data 3AH Register CH

Direct MOV [1234H],AX Register AX

DS*10H + DISP 10000H + 1234H

Memory Address 11234H

Register Indirect MOV [BX],CL Register CL

DS*10H + BX 10000H + 0300H

Memory Address 10300H

Base-plus-index MOV [BX+SI],BP Register SP

DS*10H + BX + SI 10000H + 0300H + 0200H

Memory Address 10500H

Register relative MOV CL,[BX+4]Memory Address 10304H

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

Register CL

Base relative-plus-index

MOV ARRAY[BX+SI],DX

Register DX

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

Memory Address 11500H

Scaled index MOV [EBX+2*ESI],AX

Register AX

DS*10H + EBX + 2 * ESI 10000H + 00000300H + 00000400H

Memory Address 10700

EBX = 00000300H, ESI = 00000200H, ARRAY = 1000H, DS = 1000H

Page 22: Micro Proce Sad Or

La ilustración detallada de los diferentes modos de dirección está indicada a continuación.

Register Addressing

Transfiere la copia de un byte (8 bit), de una palabra (16 bit) o de una doble palabra (32 bit) del registro de ubicación de memoria fuente al registro o ubicación de memoria de destino. Ejemplo: MOV CX,DX

Immediate Addressing

Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) que se encuentren inmediatamente después el códgo de la instrucción en un registro o en una ubicación de memoria. Ejemplo: MOV EAX,01234567H

Direct Addressing

Transfiere la copia de un byte (8 bit), de una palabra (16 bit) o de una doble palabra (32 bit) entre una ubicación de memoria y un registro. Ejemplo: MOV AX,MEMPOS

Register-Indirect Addressing

Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre un registro y una ubicación de memoria dirigida por un registro. Ejemplo: MOV AX,[BX]

Base-Plus-Index Addressing

Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre un registro y una ubicación de memoria dirigida por un registro más otros registro. El primer registro es denominado base y el segundo índice. Ejemplo: MOV AX,[BX+DI]

Register-Relative Addressing

Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre un registro y una ubicación de memoria dirigida por un registro más un desplazamiento fijo. El registro se denomina base. Ejemplo: MOV AX,[BX+10H]

Base Relative-Plus-Index Addressing

Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre un registro y una ubicación de memoria dirigida por un registro más otro registro más un desplazamiento fijo. El primer registro es denominado base y el segundo índice. Ejemplo: MOV AX,[BX+DI+10H]

Scaled-Index Addressing

Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre un registro y una ubicación de memoria dirigida por un registro más otro registro modificado por un factor de escala fijo 2X, 4X o 8X. Esta instrucción está disponible solamente a partir del 386. Ejemplo: MOV EDX,[EAX+4*EBX]

Page 23: Micro Proce Sad Or

Lección N.2: El microprocesador Intel 386EX

Objetivos: Saber:

las características principales del microprocesador 80386EX

su estructura interna

el interfaz hacia los dispositivos externos

Requisiti: Lección N.1 del módulo DL 3155E24

Contenidos: características generales

estructura interna

interfaz con dispositivos externos

configuración

Page 24: Micro Proce Sad Or

Página blanca

Page 25: Micro Proce Sad Or

2.1 Características generales

El 80386 es un microprocesador 'embedded'. Es decir un microprocesador que contiene en su interior muchos de los componentes como puertas de I/O, controladores de interrupciones, timers, etc., que normalmente son puestos en el exterior del micro en un sistema de microprocesador.

También es llamado 'embedded personal computer' a causa de su parecido con el PC. De hecho contiene en su interior todos los dispositivos presentes en un PC, a excepción del vídeo e interfaz para los discos.

Fig. 2.1.1

La figura 2.1.2 muestra todos los bloques internos componentes del microprocesador 80386EX, unidamente a la estructura del circuito integrado en el formato PQFP de 132 pins.

Fig. 2.1.1

Page 26: Micro Proce Sad Or

Las características principales de este microprocesador pueden así ser brevemente resumidas:

Núcleo interno igual al microprocesador 386Arquitectura interna de 32 bit. Tipos de datos de 8, 16 y 32 bit. 8 registros de 32 bit de uso general.Disponible con diferentes alimentaciones. EXTB: de 2.7V a 3.6V. EXTC: de 4,5V a 5,5V.Frecuencias hasta 33MHzBus dirigidos externo de 26 bit para una dirección de 65MB de memoriaBus de datos externo de 16 bit.Desarrollado en tecnología CHMOS de alta velocidad.Periféricas interne integradas:

Unidad de gestión de la alimentación y del clockUnidad de selección (Chip select)Unidad de control de las interrupcionesUnidad Timer/CounterUnidad timer de WatchdogUnidad de serie asíncrona de I/OUnidad de serie síncrona de I/OUnidad paralela de I/OUnidad de gestión DMAUnidad de control de refrshUnidad de test compatible JTAG

Page 27: Micro Proce Sad Or

El microprocesador 80386EX está disponible en un formato PQFP de 132 pin y un formato TQFP de 144 pin. En la figura siguiente está ilustrado el formato PQFP de 132 pin que es el utilizado en el módulo E24.

2.2 Características eléctricas

Page 28: Micro Proce Sad Or

En el módulo E24 es utilizada la versión EXTC del microprocesador que preve una alimentación entre 4.5V y 5.5V. Todas las líneas externas son entonces TTL compatibles pudiendo así utilizar un circuito cualquiera integrado TTL en esu externo.

La potencia absorbida por el microprocesador varía según la frecuencia de trabajo y de la tensión de alimentación del chip. Por ejemplo, con una frecuencia operativa de 25 MHz y con una alimentación de 5.0V el microprocesador absorbe aproximadamente 250 mA.

El número de pin es muy elevado y diferentes pin asumen una doble función que puede ser elegida a nivel de configuración software del dispositivo.

La figura de al lado muestra el mismo microprocesador con los diferentes pins reagrupados según su función lógica.

Se pueden entonces individuar:

A El bus de los datos con sus 16 líneas

B El bus de las direcciones con sus 25 líneas

C: Las señaIes de clock y de reset

D Las señales relativas a la Port 1 de I/O con las alternativas

E Las señales relativas a la Port 2 de I/O con las alternativas

F Las señales relativas a la Port 3 de I/O con las alternativas

G Las señales de controlH Otras señales

Page 29: Micro Proce Sad Or

La arquitectura interna preve la presencia del núcleo central de 36 bit con el bus de los datos y de las direcciones. Sobre estos bus son después conectadas todas las periféricas internas, como está ilustrado en la Fig. 2.3.1 .

Fig. 2.3.1

Sigue una breve descripción de las periféricas internas integradas.

2.3 Arquitectura interna

Clock and Power Management Unit

El clock CLK2 recibido desde el exterioe es dividido por dos para obtener el clock interno del procesador, con las dos fases PH1 y PH2, que es utilizado por el núcleo principal y por las periféricas integradas. Están disponibles 2 Power Management Mode para el funcionamiento con ahorro de energía.

Page 30: Micro Proce Sad Or

Uno es el Idle Mode donde el clock de la CPU es bloqueado mientras sigue activo el de las periféricas, y el otro el Powerdown Mode donde el clock es bloqueado completamente por todos los dispositivos internos.

Chip Select Unit

Esta periféerica interna decodifica el bus de las direcciones para abastecer los chip select en los dispositivos externos. Hay disponibles N.8 diferentes chip select: N.1 UCS (Upper chip-select channel) y N.7 chip-select de uso general (CSn).

Interrupt Control Unit

Esta periférica interna contiene N.2 chip del tipo 8259A conectados en cascada. Soporta un máximo de 8 entradas (INT0-INT7) para las interrupciones externas y un máximo de 8 interrupciones internas.

Timer/Counter Unit

Esta periférica tiene las mismas funcionalidades de base del timer/counter 8254. Están presentes 3 contadores independientes de 16 bit, cada uno capaz de gestionar entradas de clock con frecuencias hasta de 8 MHz.

Watchdog Timer Unit

Se trata de un timer con un contador hacia atrás de 32 bit que es disminuido en cada clock. Al contador está asociada la salida WDTOUT que es pilotada a nivel alto por 16 ciclos de clock cuando el contador alcanza el cero. La salida WDTOUT puede ser usada para el reset del microprocesador, para generar una interrupción o para indicar que se ha generado una condición de pérdida de sustentación (hang) en el chip.

Asynchronous Serial Unit

Esta periférica contiene un UART. Es equivalente al UART 16450. Es posible gestionar dos canales de comunicación asíncrona full-duplex equivalentes a los COM1 y COM2 del PC.

Synchronous Serial Unit

Esta periférica gestiona un canal de comunicación síncrono, con un trasmisor, un receptor y un generador de baud-rate dedicado. Es posible gestionar velocidad de trasmisión hasta 8.25 MHz con frecuencia de clock del procesador de 33 MHz.

Parallel Input/Output Unit

Esta periférica contiene N.3 puertas de I/O de 8 bit. Las puertas son de tipo bidireccional programable. Las entradas son de tipo TTL y las salidas de tipo CMOS.

DMA and Bus Arbiter Unit

Esta periférica contiene N.2 canales de acceso directo a la memoria (DMA). Cada canal puede trasferir data entre una combinación de memoria e I/O con otra combinación cualquiera (8 o 16 bit) de fuentes de datos.

Refresh Control Unit

Esta periférica simplifica el interfaz del microprocesador con las memorias RAM de tipo dinámico que necesitan una actualización.

Page 31: Micro Proce Sad Or

JTAG Test-Logic Unit

Esta periférica permite el acceso a los pin del dispositivo a otras fuentes de información interna para operaciones de test. Es completamente compatible con el estándar IEEE 1149.1 disponiendo de 5 líneas de acceso dedicadas: TRST, TCK, TMS, TDI y TDO.

Page 32: Micro Proce Sad Or

Página blanca

Page 33: Micro Proce Sad Or

Las temporizaciones de un microprocesador son de fundamental importancia para el interfaz del micro con los dispositivos externos: memorias, puertas de I/O, etc. . El microprocesador 80386EX usa un ciclo base (Cycle1, 2, ..) de 2 períodos de clock interno (CLKOUT) o estados-T (T1 y T2).

El fin de T1 es el de generar en la salida una dirección, en el bus de las direcciones, y hacer activa a nivel bajo la línea ADS#. También si las señales de read (RD#) y write (WR#) inician en T1, no causan la trasferencia de datos hasta que no llegue T2. El fin de T2 es el de trasferir los datos entre el microprocesador y la memoria o los dispositivos de I/O externos.

En la figura los primeros 2 ciclos de clock CLKOUT (indicados con Cycle 1) muestran una operación de escritura, mientras los segundos 2 muestran una operación de lectura.

La diferencia entre los ciclos de lectura y escritura reside en las señales de control y en el momento en que aparecen los datos en el bus de datos.

2.4 Temporizaciones

Page 34: Micro Proce Sad Or

Durante un ciclo de escritura los datos son presentados en el bus a mitad de T1 y por toda la duración de T2.

Durante un ciclo de lectura los datos son abastecidos en el bus por la memoria o por el dispositivo de I/O externo, y deben ser válidos al final de T2 para ser leídos correctamente por el microprocesador.

Page 35: Micro Proce Sad Or

L'interfacciamento del microprocessore 80386EX con le memorie esterne risulta molto semplice in quanto il micro è in grado di interfacciarsi con l'esterno sia con periferiche ad 8 bit che a 16 bit. I due diversi casi sono illustrati di seguito.

2.5 Interfaccia con RAM ed EPROM

Interfaccia ad 8 bit con memorie EPROM La figura 2.5.1 mostra l'interfacciamento ad 8 bit con una memoria EPROM.

Viene usata la line UCS# come segnale di abilitazione della memoria. Questa linea è resa attiva dal microprocessore subito dopo il reset. La linea UCS# è collegata alla linea BS8# per indicare al microprocessore che quando è attiva debbono essere eseguite operazioni ad 8 bit.

Il segnale RD# viene utilizzato per leggere i dati dalla EPROM. Il segnale BLE# viene utilizzato per abilitare l'indirizzo A0 della EPROM, gli altri indirizzi arrivano invece direttamente dal bus indirizzi del microprocessore.

Fig. 2.5.1

Page 36: Micro Proce Sad Or

Queste due diverse modalità di interfacciamento per EPROM e per RAM sono usate nel Modulo E24.

La figura 2.5.2 mostra l'interfacciamento a 16 bit del microprocessore con due memorie RAM.

Il bus dei dati viene sdoppiato ed inviato alle due memorie: D0÷D7 alla memoria in basso e D8÷D15 alla memoria in alto.

Gli indirizzi da A1 ad An vengono inviati in parallelo alle due memorie.

Il segnale di abilitazione delle singole memorie arriva da una combinazione della linea di chip select CSn# e dei segnali BLE# e BHE#.

Il segnale BLE# indica che sul bus è presente la parte bassa dei dati (D0÷D7) e quindi viene usato per abilitare la memoria in basso.

Il segnale BHE# indica che sul bus è presente la parte alta dei dati (D8÷D15) e quindi viene usato per abilitare la memoria in alto.

Fig. 2.5.2

Interfaccia a 16 bit con memorie RAM

Page 37: Micro Proce Sad Or

Las múltiples prestaciones del microprocesador 80386EX son adaptadas para las diferentes aplicaciones mediante la programación del dispositivo. Esta programación consiste en la escritura de los regstros de configuración del microprocesador.

El primer registro para configurar es la Address Configuration Register. Permite seleccionar las direcciones de todos los registros de configuración en dos posibles modalidades:

En el módulo E24 es utilizada la modalidad expansa. Es obtenida escribiendo un '1' en el bit 15 del registro de configuración de la dirección, como muestra en la figura siguiente.

2.6 Configuración

Modalidad DOS compatibleModalidad expansa.

Una vez seleccionada la modalidad expansa para las direcciones, la programación de las diferentes periféricas internas consiste en la escritura de los relativos registri de configuración.

La figura de al lado muestra los campos de dirección asignados a los registros de las diferentes periféricas integradas en el microprocesador.

Page 38: Micro Proce Sad Or

La programación de los diferentes dispositivos es muy compleja y exige un estudio profundizado. No es solicitada en el uso del Módulo E24 ya que el programador puede utilizar los diferentes recursos simplemente a través de las interrupciones del BIOS, es más contrariamente co la programación directa de los dispositivos de I/O.

Con el fin de ejemplo son ilustrados a continuación los registros utilizados para la gestión de las puertas de I/O del microprocesador, y como se produce la programación de la Puerta 1 en la entrada y la lectura de sus líneas.

Page 39: Micro Proce Sad Or

;programming Port1 for input MOV AL, 0FFH MOV DX, P1LTC ;data-latch register OUT DX, AL MOV AL, 0FFH ;1111 1111 1=In, 0=Out MOV DX, P1DIR ;direction register OUT DX, AL MOV AL, 000H ;0000 0000 0=I/O pin MOV DX, P1CFG ;configuration register OUT DX, AL MOV DX,P1PIN ;Status register IN AL,DX ;read port

Page 40: Micro Proce Sad Or

Página blanca

Page 41: Micro Proce Sad Or

Lección N.3: El Módulo Microprocesador de 32 bit DL 3155E24

Objetivos: Saber:

la estructura del Módulo Microprocesador de 32 bit DL 3155E24

sus componentes

su uso.

Requisiti: lecciones N.1 y N.2 del Módulo DL 3155E24

Contenidos: Estructura del módulo DL 3155E24

Sección de microprocesador y memorias

Sección de teclado, display LCD

Sección de puerto paralelo, de serie, convertidores A/D y D/A

Otros dispositivos

Page 42: Micro Proce Sad Or

Página blanca

Page 43: Micro Proce Sad Or

El módulo de microprocesador de 32 bit E24 se presenta como en la figura:

En el mismo son presentes los siguientes bloques y dispositivos, que serán descritos con detalle en las páginas siguientes:

3.1 Presentación general

El microprocesador 80386EXLa memoria EPROM de sistema M4 (32KB)El espacio para una memoria EPROM usuario M3 (32KB)Las memorias RAM M1+M2 (64 KB)El teclado (KEYBOARD)El display LCD La interfaz de serie RS-232La interfaz paralelaEl pulsador de reset del microprocesadorEl display de 7 segmentosLas sondas lógicasEl conector de interrupciones, timer, bus de serieEl convertidor A/DEl convertidor D/A

Page 44: Micro Proce Sad Or

Página blanca

Page 45: Micro Proce Sad Or

3.2 Microprocesador 80386EX

El microprocesador 80386EX está configurado, en el interior del módulo E24, con los recursos ilustrados en la figura 3.2.1 .

Se trata de un microprocesador de tipo 'embedded' que contiene en su interior, otras en la CPU de 32 bit, también un cierto número de periféricas integradas (Unidad de serie, Puertas paralelas, ..).

En esta página es descrita su configuración fundamental y las señales que están disponibles en los específicos test-points.

El clock del microprocesador llega por el microcontrolador que gestiona el teclado. Se trata de una señal a 1.8432 MHz. Ha sido elegida una frecuencia relativamente baja para permitir el uso de instrumentación (osciloscopio) de medio-bajo nivel en las prácticas. Esta frecuencia resulta además fácilmente divisible para generar las baud-rate para la interfaz de serie.

El bus de los datos de 16 bit D0÷D15 se ha hecho disponible en el exterior sobre los específicos test-points (DATA).

El bus de las direcciones A0÷A15 se ha hecho disponible en el exterior sobre los específicos test-points (ADDRESS). La señaI A0 corresponde a la señal BLE.

Las señaIes de control están también disponibles en el exterior sobre los test-points (CONTROL). Las señaIes presentes son:

Las otras señales presentes en la figura son utilizadas por las periféricas del sistema y serán descritas en las páginas siguientes.

Reset Señal de reset del microprocesador (activo alto).UCS Señal de habilitación de la EPROM de sistema (M4)CS0 Señal de habilitación de la EPROM de usuario (M3)CS1 Señal de habilitación de las RAMCS2 Señal de habilitación del display LCDCS3 Señal de habilitación del display de 7-segmentosRD Señal de Read (activo bajo)WR Señal de Write (activo bajo)W/R Señal de Write (alto)/Read (bajo)

BLE Señal de habilitación de byte menos significativo (activo bajo)

BHE Señal de habilitación de byte más significativo (activo bajo)

CLOCK Señal de clock del microprocesador.

Fig. 3.2.1

Page 46: Micro Proce Sad Or

Página blanca

Page 47: Micro Proce Sad Or

3.3 Memorias EPROM y RAM

Las memorias EPROM y RAM están conectadas en el microprocesador 80386EX aprovechan las capacidades del mismo para gestionar periféricas de 8 y 16 bit. En particular las EPROM aprovechan 8 bit y las RAM 16 bit.

Los dos casos diferentes son ilustrados a continuación.

Interfaz de 8 bit con memorias EPROM La figura 3.3.1 muestra la interfaz de 8 bit con las memorias EPROM M3 y M4. Se utilizan memorias EPROM de 32KB del tipo 27256.

Es usada la línea UCS# como señal de habilitación de la memoria EPROM de sistema M4. Esta línea se ha hecho activa por el microprocesador inmediatamente después del reset y es después programada para descodificar todas las direcciones entre F8000 y FFFFF (32KB). La línea UCS# está conectada en la línea BS8# para indicar al microprocesador que cuando está activa deben ser efectuadas operaciones de 8 bit.

La memoria EPROM de usuario M3 es habilitada usando la señal UCS0# que es programada para las direcciones comprendidas entre F0000 y F7FFF (32KB).

Fig. 3.3.1

Interfaz de 16 bit con memorias RAM La figura 3.3.2 muestra el interfaz de 16 bit del microprocesador con dos memorias RAM. Se utilizan memorias RAM de 32KB del tipo 62256.

Page 48: Micro Proce Sad Or

El área de memoria de 00000H a 00FFFH está reservada al monitor para la memorización de los vectores de interrupción, de los datos de servicio y del stack.

Para los programas de usuario está reservada al área de memoria de 001000H a 0FFFFH (60KB).

El bus de los datos es desdoblado y enviado a las dos memorias: D0÷D7 a la memoria M2 y D8÷D15 a la memoria M1.

Las direcciones de A1 y A15 son enviadas en paralelo a las dos memorias.

La señal de habilitación de las memorias llega de una combinación de la línea de chip select CS1# y de las señales BLE# y BHE#.

La señal BLE# indica que en el bus está presente la parte baja de los datos (D0÷D7) y entonces es usado para habilitar la memoria M2.

La señal BHE# indica que en el bus está presente la parte alta de los datos (D8÷D15) y entonces es usado para habilitar la memoria M1.

Las dos RAM cubren el campo de direcciones de 00000 a FFFFH por un total de 64KB.

Fig. 3.3.2

Page 49: Micro Proce Sad Or

Fig. 3.4.1

Para todas las informaciones relativas a los mandos y al significado de cada tecla se consultan los 'Manuals'.

3.4 Teclado

El teclado es el dispositivo con el quee usuario comunica con el sistema.Contiene las teclas relativas a los caracteres hexadecimales (0÷F) y las teclas para los mandos para impartir al sistema.

En el módulo E24 la gestión del teclado está reservada al microcontrolador ST6220. El microcontrolador lee el teclado para verificar si ha sido presionada una tecla y salva el códido en la propia memoria. Cuando el microprocesador 80386EX interroga el microcontrolador a través del bus de serie, este último vuleve el código de la tecla presionada. La línea P2.4 del microprocesador 80386EX es utilizada para generar la señal de habilitación (CS) para el microcontrolador. Las líneas P3.5 y P3.7 son utilizados respectivamente para leer los datos que proceden del microcontrolador y para generar el clock de lectura. La operación de lectura ha sido desarrollada por la interrupción software 09H .

Page 50: Micro Proce Sad Or

Página blanca

Page 51: Micro Proce Sad Or

La señal de Enable (E) del LCD llega directamente de la señal CS2 del microprocesador. La señaI RS que individua los mandos (bajo) y los datos (alto) llega de la dirección A1. La señaI de escritura/lectura (R/W#) llega de la señal BLE.

Para las informaciones relativas a la programación directa del LCD veáse en los 'Manuales'.

3.5 Display LCD

El display LCD es el dispositivo a través del cual el sistema comunica con el usuario.

Está conectado en el microprocesador a través del bus de datos de 8 bit D0÷D7. La habilitación es obtenida a través del CS2 que es programado para las direcciones 0000÷0003. En particular son después usadas las direcciones:

0000 Escritura del Instruction Register0001 Escritura de la DRAM

Page 52: Micro Proce Sad Or

Página blanca

Page 53: Micro Proce Sad Or

Se necesita solamente un componente externo, el Transceiver MAX 232 (IC2) para la daptación de las señales de los niveles -12/+12V del estándar RS-232.

3.6 Interfaz paralela y de serie

El módulo E24 está dotado de una interfaz paralela con N.11 líneas de I/O que permite la conexión con dispositivos externos.

En particular es posible la conexión directa con la interfaz paralela del Personal Computer para descargar los programas en el Módulo E24. Se utiliza con el fin de del software E24ide (Integrated Development Environment).

La puerta paralela usa un conector D25 hembra analógo en el conector usado en la puerta paralela del PC. Este recurso es obtenido sin ningún uso de componentes externos, pero simplemente mediante el uso de las puertas de I/O internas del microprocesador 80386EX.

Como se ve por la figura de al lado, la puerta A es obtenida a través de la Puerta 1 del microprocesador, mientras las líneas B0, B1 y B2 son obtenidas a través de N.3 líneas de I/O de la Puerta 2 del microprocesador. La Puerta A puede ser utilizada como entrada o como salida. La línea B0 es utilizada como salida porque corresponde con una línea de entrada de la interfaz paralela del PC (ACK). Las líneas B1 y B2 son utilizadas como entradas porque corresponden a líneas de salida de la interfaz paralela del PC (STROBE y AUTO FD XT).

El módulo E24 está dotado de una interfaz de serie asíncrona RS-232.

La interfaz de serie asíncrona RS-232 del Módulo E24 es obtenida utilizando la Asynchronous Serial I/O Unit N.1 del microprocesador 80386EX.

Las líneas a disposición son: TXD1, RXD1, RTS1, CTS1.

Page 54: Micro Proce Sad Or

La programación y el uso de la interfaz RS-232 es hecha a través de la interrupción software INT 14H (descrita en los 'Manuals').

Page 55: Micro Proce Sad Or

3.7 Convertidores A/D y D/A

El Módulo E24 contiene N.2 canales de entrada analógicos (AD-1 y AD-2) gestionados por un único convertidor A/D.

Se usa el convertidor A/D TLC0832, que es un convertidor de tipo de serie con N.2 canales de entrada. La conexión en el microprocesador es hecho a través de N.4 líneas de I/O:

Para las modalidades de programación del dispositivo véase el data sheet del componente en los 'Manuales'.

El BIOS del Módulo E24 proporciona la interrupción 18H que provee la gestión del convertidor de modo muy simple.

- la línea P3.4 manda el CS del convertidor- la línea P3.6 (DOUT del bus de serie) manda la

línea DI del convertidor- la línea P3.5 (DIN del bus de serie) lee los datos

de la línea DO del convertidor- la línea P3.7 (SCLK del bus de serie) mando de

la entrada de clock del convertidor.

El Módulo E24 contiene N.2 canales de entrada analógicos (DA-1 y DA-2) gestionados por un único convertidor D/A.

Se usa el convertidor D/A MAX549, que es un convertidor de tipo de serie con N.2 canales de salida. La conexión en el microprocesador es hecho a través de N.3 líneas de I/O:

Para las modalidades de programación del dispositivo véase el data sheet del componente en los 'Manuales'.

El BIOS del Módulo E24 proporciona la interrupción 19H que provee la gestión del convertidor de modo muy simple.

- la línea P3.1 manda el CS del convertidor

- la línea P3.6 (DOUT del bus de serie) manda la línea DIN del convertidor

- la línea P3.7 (SCLK del bus de serie) mando de la entrada de clock del convertidor.

Page 56: Micro Proce Sad Or

Página blanca

Page 57: Micro Proce Sad Or

El Módulo e24 contiene otros dispositivos a continuación enumerados.

RESET

Esta sección contiene la tecla de reset del microprocesador. Utilizar esta tecla cada vez que el sistema se bloquea durante la ejecución de los programas. Los programas en la memoria no son alterados por esta operación. Solamente los break-points son cancelados.

7-SEGMENT DISPLAY

El display de 7-segmentos es utilizado por el BIOS del Módulo E24 para la visualización de las teclas presionadas durante la inmisión de los mandos. También puede ser usado por el usuario para aplicaciones propias.

Está conectado en el microprocesador 80386EX a través del latch 74374 IC9. El latch toma los datos del bus de datos D0÷D7 y los manda al display para el control de los 7 segmentos y del punto decimal. La señal de habilitación del latch está conectado en la señal de Chip Select CS3 del microprocesador, que es programado para ser activo con la dirección 0010H.

Para mandar el display de 7 segmentos basta entonces hacer una operación de OUT en la dirección 0010H.

LOGIC PROBES

Hay disponibles N.2 sondas lógicas de nivel para la visualización del estado de las señales lógicas a través del LED. Las entradas de las sondas están dotadas de resistencia de pull-up. Los LED se apagan cuando son conectados en puntos de nivel lógico bajo.

3.8 Otros dispositivos

Page 58: Micro Proce Sad Or

INTERRUPT/TIMER/SERIAL BUS

Esta sección del Módulo E24 está dotada de un conector donde son indicadas las señales de interrupción del microprocesador, de gestión del timer y aquellos usados por el bus de serie de conexiones del teclado y de los convertidores A/D y D/A. El detalle de las señales disponibles está indicado a continuación.

INT0 Señal de interrupción ocultable N.0INT1 Señal de interrupción ocultable N.1TMRGATE Puerta de entrada del timer/counter que permite controlar las operaciones de cuentaTMRCLK Entrada de clock externo del timer/counterTMROUT Salida del timer/counter

DIN Línea de entrada (hacia el 386EX) del bus de serie. Está gestionada por la línea P3.5 del microprocesador

DOUT Línea de entrada (por el 386EX) del bus de serie. Está gestionada por la línea P3.6 del microprocesador

SCLK Línea de clock (generado por el 386EX) del bus de serie. Está gestionada por la línea P3.7 del microprocesador.

Page 59: Micro Proce Sad Or

Lección N.4: Desarrollo de programas

Objetivos: Conocer:

la programación de los microprocesadores Intel

las modalidades de desarrollo de programas aplicativos para el módulo Microprocesador de 32 bit

Requisiti: lecciones N.1, N.2 y N.3 del Módulo DL 3155E24

Contenidos: Introducción al lenguaje Assembler

Elementos base del lenguaje Assembler

Instrucciones

Modos de Guía

Fases del desarrollo de un Programa

Edit de un programa

Asemblamiento de un programa

Enlace de un Programa

Verificación de funcionamiento de un programa

Page 60: Micro Proce Sad Or

Página blanca

Page 61: Micro Proce Sad Or

El lenguaje Assembler es el lenguaje normalmente utilizado para la programación de los sistemas de microprocesador, debe los recursos en términos de memoria exigen una optimización de los programas. En los sistemas ms complejos (por ejemplo el PC) se usan lenguajes de programación del más alto nivel. Las características fundamentales de los lenguajes Assembler pueden así ser resumidas:

A continuación son ilustrados brevemente todos los elementos y los conceptos que están en la base del lenguaje Assembler.

4.1 Generalidades sobre el lenguaje Assembler

Son lenguajes de bajo nivelExiste la correspondencia uno a uno con las instrucciones del lenguaje de la máquinaLos símbolos mnemónicos utilizados están asociados a instrucciones, secuencias de instrucciones, direcciones de memoria, áreas de memoria, dispositivos de I/OPosibilidad de utilizar lo mejor posible la máquina hardwareLa extensión de un programa Assembler es muy compleja.

StatementUn programa Assembler está compuesto de Statements. Cada statement comprende una directiva para el Montador y corresponde a una línea del programa. Si la directiva corresponde a una instrucción de la máquina ejecutable por la CPU, se denomina Instrucción, de lo contrario es una Pseudo-Instrucción.InstruccionesSon traducidas por el Montador en instrucciones de la máquina. Cada instrucción está compuesta en general por:

- una Etiqueta (o Label) - un Código Operativo (o Operation Code) - uno o más Operandos (o Operands).

Ejemplo: Label OpCode OperandsSTART: MOV AX,BX

CMP AX,45h

Etiquetas (Label)Son identificadores de una instrucción; el montador las sustituye con la dirección de la instrucción que representan. Ofrecen las siguientes ventajas: - permiten encontrar con más facilidad un punto del programa- permiten no tener nada que ver con las direcciones físicas- facilitan la modificación del programa.Código Operativo (OpCode)Es el mnemonico de una instrucción assembler: en otros términos especifica la operación que debe ser efectuada por la CPU. Es el único campo que nunca puede faltar en una instrucciónOperandos (Operands)Contiene la indicación necesaria para llegar hasta los operandos (uno o más, según los casos) exigidos por la instrucción. Sobre la base de lo indicado en este campo, la CPU proveerá, durante la ejecución del programa, para llegar a los operandos: - en la instrucción misma- en un registro- en la memoria- sobre una puerta de I/O.

Page 62: Micro Proce Sad Or

Pseudo instruccionesSon mandos utilizados durante el proceso de montaje (por el Assembler), que no eson traducidos en instrucciones de la máquina ejecutables por la CPU. Ejemplo:

DSEG SEGMENT PARA PUBLIC 'DATA' SUB1 PROC NEAR ..... ENDP END

ComentariosSon palabras o frases introducidas por el programados para hacer el programa más comprensible; sirven al programador mismo y a quien analizará en el futuro el código. Son ignorados por el montador, que se limita a visualizarlos cuando se exige el listado del programa. Todos los caracteres compredidos entre un ’;’ y un <CR> son considerados comentarios. Ejemplo:

INIT: MOV AX,BX ;Carica AX con il contenuto di BX

Page 63: Micro Proce Sad Or

Son descritos en esta página los elementos base del lenguaje Assembler, con referencia al montador MASM para los microprocesadores Intel que es utilizado en el E24ide (Integrated Development Environment).

4.2 Elementos base del lenguaje Assembler

Un programa escrito en Assembly 8086 está compuesto por Statements; normalmente cada uno de los mismos ocupa una línea hasta un <LF> o un par <CR><LF>..

Ejemplo de programa:

CODE SEGMENT ASSUME CS:CODE, DS:CODE ORG 0H PROGR: MOV AL,0FFH ;data for segments OFF MOV DX,0010H ;7-segment address OUT DX,AL ;out data MOV AX,1000 ;1000 milliseconds INT 1CH ;wait MOV AL,00H ;data for segments ON MOV DX,0010H ;7-segment address OUT DX,AL ;out data MOV AX,1000 ;1000 milliseconds INT 1CH ;wait JMP PROGR ;loop CODE ENDS END PROGR

Un statement puede proseguir sobre la línea sucesiva, si esta empieza con el caracter ’&’.El conjunto de los caracteres utilizables está compuesto por: - caracteres alfanuméricos (mayúsculas, minúsculas, cifras), - caracteres no imprimibles (espacio, TAB, <CR>, <LF> - caracteres especiales (+ - * / = () ...)En el interior del programa pueden aparecer: – Identificadores – Constantes – Expresiones

IdentificadoresSon usados como nombres asignados a entidades definidas por el programador (segmentos, variables, label, etc.). Están compuestos por letras, números o uno de los tres caracteres @ ? _, pero no pueden iniciar con un número. Tienen una longitud máxima de 31 caracteres.

ConstantesSe pueden utilizar constantes: binarias: 001101B optales: 15O, 15Q hexadecimales: 0Dh, 0BEACh (deben iniciar con un número) decimales: 13, 13D ASCII: ’S’, ’Salve’ reales en base 10: 2.345678, 112E-3.

ExpresionesSe pueden utilizar los siguientes operadores: artiméticos: (+,-,*,/, MOD, SHL, SHR) lógicos: (AND, OR, XOR, NOT) relacionales: (EQ, NE, LT, GT, LE, GE) que devuelven un valor: ($, SEG, OFFSET, LENGTH, TYPE) atributos: (PTR, DS:, ES:, SS:, CS:, HIGH, LOW).

Page 64: Micro Proce Sad Or

InstruccionesEl Assembler para los microprocesadores Intel hace disponible un elevado número de instrucciones, reagrupables en las siguientes clases: Trasferencia de Datos Aritméticas Manipulación de Bit Trasferencia de Control Manipulación de Cadenas Manipulación de Interrupciones Control del Procesador

En las páginas siguientes son enumeradas las instrucciones relativas a las clases precedentes. Para una descripción detallada de las instrucciones hágase referencia a la sección relativa a Instrucciones y programación de los microprocesadores Intel en la documentación on-line, reclamable con el link 'manuals' arriba en esta página.

Page 65: Micro Proce Sad Or

Son enumeradas en esta página las instrucciones más importantes de los microprocesadores Intel. Para una descripción detallada de las instrucciones hágase referencia a la sección relativa a Instrucciones y programación de los microprocesadores Intel en la documentación on-line, reclamable con el link 'manuals' arriba en esta página.

4.3 Instrucciones

Instrucciones de Trasferencia de Datos OpCode Descripción

Uso general MOV Move (Byte or Word)POP Pop a Word onto Stack

PUSH Push Word onto StackXCHG Exchange RegisterXLAT Translate

Input/Output IN Input Byte or WordOUT Output to Port

Trasformación de direcciones

LDS Load Pointer Using DSLEA Load Effective AddressLES Load Pointer Using ES

Trasformación Flag register

LAHF Load Register AH FromSAHF Store register AH intoPOPF Pop Flags from the Stack

PUSHF Push Flags onto Stack

Instrucciones Aritméticas OpCode Descripción

Suma AAA ASCII Adjust after AdditionADC Add with CarryADD AdditionDAA Decimal Adjust after AdditionINC Increment

Resta AAS ASCII Adjust after SubtractionSUB SubtractSBB Subtract with BorrowDAS Decimal Adjust after SubtractionDEC DecrementCMP ApareceNEG Negate

Multiplicación AAM ASCII Adjust after MultiplyIMUL Integer Multiply, SignedMUL Multiply, Unsigned

Page 66: Micro Proce Sad Or

División AAD ASCII Adjust before DivisionDIV Divide, UnsignedIDIV Integer Divide, Signed

Conversión CBW Convert Byte to WordCWD Convert Word to Doubleword

Instrucciones para la Manipulación de Bit OpCode Descripción

Lógicas AND Logical ANDOR Logical OR

XOR Exclusive ORNOT Logical NOTTEST Test

De Traslación SAL Shift Arithmetic Left (=SHL)SAR Shift Arithmetic RightSHL Shift Logical Left (=SAL)SHR Shift Logical Right

Di Rotazione ROL Rotate LeftROR Rotate RightRCL Rotate through Carry LeftRCR Rotate through Carry Right

Trasferencia del control OpCode Descripción

Saltos incondicionados CALL Call ProcedureRET Return from ProcedureJMP Jump Unconditionally

Salti condizionati JA, JNBE Jump If AboveJAE, JNB Jump If Above or Equal

JB, JNAE, JC Jump If belowJBE, JNA Jump If below or Equal

JCXZ Jump if CX Register ZeroJE, JZ Jump if Equal

JG, JNLE Jump if GreaterJGE, JNL Jump if Greater or EqualJL, JNGE Jump if LessJLE, JNG Jump if Less or Equal

JNC Jump if No CarryJNE, JNZ Jump if Not Equal

JNO Jump if No OverflowJNP, JPO Jump if No Parity

Page 67: Micro Proce Sad Or

JNS Jump if No SignJO Jump if Overflow

JP, JPE Jump if ParityJS Jump if Sign

Instrucciones iterativas LOOP Loop on CountLOOPE, LOOPZ Loop While Equal

LOOPNE, LOOPNZ Loop While Not Equal

Instrucciones para la Manipulación de Cadenas OpCode Descripción

Instrucciones de Desplazamiento MOVS Move String (Byte or Word)MOVSB Move String ByteMOVSW Move String Word

Instrucciones de Confronto CMPS Aparece String (Byte o Word)CMPSB Aparece String ByteCMPSW Aparece String Word

Instrucciones de Búsqueda SCAS Scan String (Byte o Word)SCASB Scan String ByteSCASW Scan String Word

Instrucciones de Carga LODS Load String (Byte or Word)LODSB Load String ByteLODSW Load String Word

Instrucciones de Escritura STOS Store String (Byte or Word)STOSB Store String ByteSTOSW Store String Word

Prefijos de repetición OpCode Descripción

Prefijos de repetición REP RepeatREPE Repeat While Equal

REPNE Repeat While Not EqualREPNZ Repeat While Not ZeroREPZ Repeat While Zero

Instrucciones para la Manipulación de las Interrupciones OpCode Descripción

Manipulación de Interrupciones INT InterruptINTO Interrupt on OverflowIRET Interrupt Return

Page 68: Micro Proce Sad Or

Instrucciones para el Control del Procesador OpCode Descripción

Modificación de los Flag CLC Clear Carry FlagCLD Clear Direction FlagCLI Clear Interrupt-Enable Flag

CMC Complement Carry FlagSTC Set Carry FlagSTD Set Direction FlagSTI Set Interrupt Enable Flag

Sincronización ESC EscapeHLT Halt

LOCK Lock the BusWAIT Wait

Instrucción Nula NOP No Operation

Page 69: Micro Proce Sad Or

El Modo de dirección de una instrucción define el método para utilizar para determinar donde está memorizado un dato particular (operando). Representa un elemento fundamental de la programación. Los operandos pueden estar contenidos:

Los Modos de Dirección pueden ser reagrupados en 7 clases:

Son descritos a continuación.

4.4 Modos de Dirección

en registros;en la instrucción misma;en la memoria;sobre una puerta de I/O.

Register;Immediate;Direct;Register Indirect;Base Relative;Direct Indexed;Base Indexed.

Register AddressingEn la instrucción está especificado el registro para utilizar como operando.

Formato Assembler:<Registro>

Ejemplo: MOV AX,BX

Immediate AddressingEn la instrucción misma está indicado el dato para utilizar como operando.

Formato Assembler:<expresión>

Ejemplo: MOV AX,(5*8)/10

Direct AddressingEn la instrucción está especificado el nombre de una variable, correspondiente al Effective Address de la palabra de memoria para utilizar como operando. A la variable puede ser sumada o restada una expresión. La dirección física es obtenida sumando el EA con el contenido del Data Segment DS multiplicado por 16.

Formato Assembler:<variable>±<expresión>

Ejemplo: MOV AX,TABLE+10

Page 70: Micro Proce Sad Or

Register Indirect AddressingEl Effective Address del operando está contenido en uno de los siguientes registros: - Base; - Index Register (DI o bien SI); - Base Pointer (BP). Es denominado Indirect porque en la instrucción está indicado donde encontrar la dirección del operando.

Formato Assembler:[<registro>]

Ejemplo: MOV AX,[BX]

Base Relative AddressingEl Effective Address del operando es claculado sumando el contenido de uno de los Base Register (BX o BP) a un displacement representado por una constante presente en la instrcción misma.

Formato Assembler:[<registro>+<displacement>]

Ejemplo: MOV AX,[BX+4]

Direct Indexed AddressingEl Effective Address del operando es calculado sumando el valor de un offset, contenido en una variable, a un displacement, contenido en uno de los Index Register (SI o DI).

Formato Assembler:<variable>[SI] <variable>[DI]

Ejemplo: MOV AX,TABLE[DI]

BaseIndexed AddressingEl Effective Address del operando es calculado como suma de los siguientes términos: - contenido de uno de los Base Register (BX o BP); - contenido de uno de los Index Register (SI o DI); - un displacement contenido en la instrucción misma.

Formato Assembler:<variable>[BX]+[SI] <variable>[BX]+[DI] <variable>[BP]+[SI] <variable>[BP]+[DI]

Ejemplo: MOV AX,TABLE[BX][DI]

Page 71: Micro Proce Sad Or

El proceso de creación de un programa Assembly pasa a través de las siguientes fases:

En las actividades de desarrollo de programas con el Microprocessor System Mod. E24 se utiliza el software E24ide (Integrated Development Environment) que cierra todos los instrumentos para operar con las fases descritas arriba. La figura muestra un ejemplo:

4.5 Fases del desarrollo de un Programa

escritura, a través de un normal EDITOR, de uno o más file de caracteres ASCII con extensión .ASM que contienen el programa fuente.montaje, a través de un MONTADOR, de los file fuente, y generación de otros tantos file objeto, con extensión .OBJ.creación del file ejecutable, con extensión .EXE, a través de un LINKER.verifica y corrección de los eventuales errores a través de un DEBUGGER.

Page 72: Micro Proce Sad Or

Página blanca

Page 73: Micro Proce Sad Or

La fase de edit de un programa es aquella de escritura del mismo. El software E24ide contiene en interior un editor de texto que permite efectuar esta operación directamente en el interior del ambiente de desarrollo.La figura siguiente muestra un ejemplo.

4.6 Edit de un programa

Page 74: Micro Proce Sad Or

Página blanca

Page 75: Micro Proce Sad Or

La fase de asemblamiento tranforma el program fuente en código de máquina. A partir del file .ASM que contiene el código fuente es generado el file .OBJ que contiene el código de máquina. Este código de máquina no es directamente ejecutable ya que es necesario efectuar antes la operación de link. Eventuales errores de nivel de código fuente son visualziados en esta fase.

El assembler genera también el file .LST que contiene el list del programa. Este file puede ser consultado directamente en el interior del ambiente de desarrollo. Resulta importante porque contiene la indicación de todos los errores, directamente en la línea en la que han sido individuados. Además indica también todos los códigos de la máquina generados, unidamente a las direcciones de memoria donde son ubicados.

La figura siguiente muestra un ejemplo de ventana con los mensajes generados por el assembler y de una con el list del programa:

4.7 Asemblamiento de un programa

Page 76: Micro Proce Sad Or
Page 77: Micro Proce Sad Or

La fase de link de un programa pone juntos los diferentes files .OBJ del que está formado el programa (normalmente solo uno en las aplicaciones para el módulo E24) para obtener el file .EXE que contiene el códido ejecutable. Este file .EXE será después enviado al Microprocessor System e24 para la verificación del funcionamiento. La figura siguiente muestra la ventana de mensajes al final de la operación de link:

Una vez que haya sido generada el file .EXE se puede anaizar su contenido con el mando Dump en el E24ide. La figura siguiente muestra la ventana del mando Dump:

4.8 Edit de un programa

Page 78: Micro Proce Sad Or

debe notarse como los programas generados por el linker inician en la dirección 0200h. Esta introducción deriva del ambiente MS-DOS.

El código hexadecimal visible en la ventana Dump puede ser utilizado para la introducción manual del programa en el módulo E24. Los códigos hexadecimal de la ventana Dump, a partir de la dirección 0200h, deben ser introducidos en la memoria del Módulo e24 a partir de la dirección 0100:0000.

Page 79: Micro Proce Sad Or

La verificación del funcionamiento del programa es hecha trasfiriendo el programa en el Módulo E24, y ejecutando la misma con los mandos del teclado del módulo.

La trasferencia de puede ser hecha de dos modos:

La verificación del funcionamiento (Debug) es hecha con los mandos del teclado del Módulo E24. Estos mandos permiten efectuar las operaciones típicas de una sesión de debug, como:

4.9 Verificación de funcionamiento de un programa (Debug)

Trasferencia manualEn este caso se utilizan los códigos hexadecimal de la ventana Dump, y se introducen a través del teclado del Módulo e24 a partir de la dirección 0100:0000.Trasferecia automática a través de la interfaz paralela del PC y del Módulo E24Se conecta la interfaz paralela del Módulo E24 con la interfaz paralela del PC. Se opera después con el mando 'Transfer to E24' del software E24ide. El programa es automáticamente trasferido a partir de la dirección 0100:0000 y, al final, es puesto en ejecución automáticamente.

efectuar el programa en modo continuo,efectuar el programa paso - paso,introducir los breakpoint en el programa de manera que se detenga cuando se alcancen estos puntos,visualizar y modificar el contenido de los registros,visualizar y modificar el contenido de la memoria.

Page 80: Micro Proce Sad Or

Página blanca

Page 81: Micro Proce Sad Or

© 1996 - 2012 DE LORENZO SPA - Printed in Italy - All right reserved

DE LORENZO SPAV.le Romagna, 20 - 20089 Rozzano (MI) ItalyTel. ++39 02 8254551 - Fax ++39 02 8255181E-mail: [email protected] sites: www.delorenzoglobal.com - www.technical-education.it - www.delorenzoenergy.com

Page 82: Micro Proce Sad Or