Você está na página 1de 82

MICROPROCESADOR DE 32 BIT DL 3155E24

GUA TERICA

Laboratorio TIME

Pgina blanca

DL 3155E24 : Microprocesador de 32 bit


Este Training Software afronta el estudio del microprocesador de 32 bit y de sus aplicaciones. Est estructurado en las siguientes partes: GUIA TEORICA Lecciones: Estructura Interna de los microprocesadores Intel El microprocesador Intel 80386EX El Mdulo Microprocesador de 32 bit DL 3155 E24 Desarrollo de programas de 32 bit

Pgina blanca

Leccion N.1: Estructura interna de los P Intel


Objetivos:
Saber: como han evolucionado los microprocesadores en los ltimos aos la estructura interna de los microprocesadores Intel el modelo de programacin y la direccin de memoria

Requisiti:

conocimiento de la electrnca digital y de las memorias

Contenidos:

evolucin de los microprocesadores estructura interna de un microprocesador de un sistema de microprocesador el modelo de programacin de los microprocesadores Intel la direccin de memoria

Pgina blanca

1.1 Evolucin de los microprocesadores


Los microprocesadores han evolucionado, en los ltimos 30 aos, 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 ms amplia difusin 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 direccin de memoria hasta 16 MB. El paso sucesivo fue el desarrollo del microprocesador Intel 80386, con 32 bit y direccin 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, direccin 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 lnea de los microprocesadores Pentium. La tabla siguiente indica los diferentes tipos de microprocesador por Intel para los Personal Computer, y sus caractersticas mas importantes. Microprocesador Bus de Datos interno Memoria 8088 16 1M 8086 16 1M 80286 16 16M 80386 32 4G 80486SX 32 4G + 8Kcache 80486DX 32 4G + 8K cache Pentium 64 4G + 16K cache El microprocesador 80386 representa la mejor solucin didctica 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 despus ser indicado sobe sistemas con el Pentium sin ningn problema de compatibilidad con el relativo aumento de prestaciones. Un anlisis ms detallada de los diferentes microprocesadores Intel y de su evolucin indicada en la figura:

1.2 Estructura interna de un microprocesador


El esquema de bloques de un genrico microprocesador est indicado en la figura:

Fig. 2.1.1 No corresponde a ningn microprocesador presente en el mercado, pero resulta suficientemente genrico para poder comprender los principios relativos a la estructura interna de los microprocesadores. Los dispositivos ms importantes que pueden ser localizados son los siguientes: La Unidad Aritmtico/Lgica (ALU) Los Registros internos La lgica de Control Son descritos a continuacin. La Unidad Aritmtico/Lgica (ALU) Contiene la lgica de elaboracin y clculo del microprocesador. Se abastece de 2 puertas de entrada y de una puerta de salida. Ambas puertas de entrada estn dotadas de un registro temporaneo que mantiene memorizado el dato en la entrada a disposicin 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 vara de un microprocesador a otro, pero algunas funciones son soportadas por todos los microprocesadores, como: suma y resta incremento y disminucin desplazamiento derecho e izquierdo de los bit funciones lgicas AND, OR, XOR

Los Registros Los registros son las memorias internas capaces de memorizar una palabra de datos. Su nmero y las funciones pueden variar de un microprocesador a otro, pero los siguientes registros son normalmente siempre presentes: Acumulador Es el registro principal del microprocesador para la manipulacin de los datos. Normalmente cualquier operacin aritmtico/lgica 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 Contiene la instruccin que el microprocesador est efectuando. La instrucciones importancia de este registro reside en el hecho de que su salida pilota el dispositivo de descodificacin de las instrucciones y la lgica de control del microprocesador. Contador de Este registro sirve para individuar la instruccin que se est efectuando, y la programa sucesiva instruccin que deber ser efectuada. Mientras el microprocesador sigue una instruccin el contador de programa punta a la sucesiva instruccin para efectuar. Registro de Este registro sirve para individuar la locacin de memoria donde residen los direcciones de datos que son necesarios a la CPU. Su longitud debe ser tal para poder dirigir memoria una clula cualquiera de memoria. Registro de estado Este registro es usado para memorizar el resultado de las operaciones que el microprocesador efecta. Oportunas instrucciones permiten desps tomar las decisiones en base al estado de los bit de este registro. Registros de uso Estos registros expanden las posibilidades del registro acumulador para la general memorizacin de datos en el interior del microprocesador y por su elaboracin. El nmero y las funciones de estos registros dependen del detalle microprocesador.

La lgica de Control La lgica de control permite a todas las unidades internas del microprocesador de elaborar juntos y en la correcta secuencia temporal. Esta lgica recoge las instrucciones del registro de las instrucciones, verifica que se debe hacer, y proporciona a los otros dispositivos los mandos necesarios para la ejecucin de la instruccin.

1.3 Estructura de un sistema de microprocesador


El esquema de bloques de un genrico microprocesador est mostrado en la figura. Se puede notar en el mismo: El MICROPROCESADOR: que controla todos los dispositivos a travs de un BUS de conexin; 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 lneas y mandar las otras.

Fig. 2.1.1

Todos los dispositivos de un sistema de microprocesador dialogan entre si a travs de un BUS de conexin. Este BUS est dividido en: BUS de los DATOS. El microprocesador utiliza este bus de 8, 16, 32, 64 lneas 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 nmero de las lneas depende de la cantidad de memoria de direccin por el microprocesador. Se necesita en general de un dispositivo externo, denominado descodificador de las direcciones, para asignar las diferentes direcciones a los diferentes dispositivos presentes.

Fig. 2.1.1

Pgina blanca

1.4 El modelo de programacin


El modelo de programacin no es otro que la configuracin interna de los recursos puestos a disposicin 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. La figura 1.4.1 ilustra el modelo de programacin 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 general Registros de segmento Otros registros.

Fig. 2.1.1 Los registros de uso general pueden tambin 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 Ahora sigue una breve descripcin de los diferentes registros. Registros de uso general EAX Puede ser usado como registro de 32 bit (EAX), como registro de 16 bit (AX), o Acumulador como dos registros de 8 bit (AH y AL). Si es usado de 16 o 8 bit solamente aquella porcin del registro es modificada sin alterar los restantes bit. El acumulador es usado en las instrucciones como la multiplicacin, la dvisin, .. 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 tambin dirigir la memoria de datos.

EBX base index

Como EAX tambin EBX puede ser usado como EBX, BX, BH y BL. El registro EBX es utilizado paa la direccin de la memoria en todas las versionas de los microprocesadores Intel. 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 rotacin y shift usan CL como contador para individuar el nmero de veces que la operacin debe ser repetida. Las instrucciones de lnea repetida usan CX. Registro de uso general que sirve tambin para memorizar parte del resultado en una multiplicacin o parte dividiendo antes de una divisin. En el 386 y superiores el registro EDX puede tambin dirigir la memoria de datos.

ECX count

EDX data

EBP Es utilizado como apuntador de locaciones de memoria, en todas las versiones de base pointer 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 direccin de destino de datos en las instrucciones con las cadenas.

ESI Puede ser utilizado como registro de uso general de 32 bit (ESI) o como registro de source index 16 bit (SI). A menudo es utilizado como registro de direccin de fuente de datos en las instrucciones con las cadenas. ESP Dirige el rea de memoria utilizada para el stack. stack pointer 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 segmento Son utilizados para generar las direcciones de memoria donde residen las instrucciones y los datos, en combinacin con otros registros. Para su funcionamiento especfico se ven las prximas dos pginas relativas a las problemticas de direccin. CS Individua una seccin de memoria donde est presente el cdigo relativo a los programas code y procedimientos que el microprocesador debe efectuar. El registro Code Segment individua la direccin de inicio de esta seccin de memoria. En las operaciones de modo-real la seccin de memoria puede ser larga 64K mximos. En las operaciones de modo-protegido puede llegar a 4GB. DA data Individua una seccin de memoria donde son presentes los datos utilizados por el programa. El registro Data Segment individua la direccin de inicio de esta seccin de memoria. Los datos en el interior de la seccin son despus individuados por una direccin (offset) que puede ser un nmero fijo o contenido con otro registro. En las operaciones de modo-real la seccin de memoria puede ser larga 64K mximos. En las operaciones de modo-protegido puede llegar a 4GB.

ES extra SS stack

Individua un segmento de datos adicional, a menido til en las operaciones como en las cadenas. Individua el area de memoria utilizada para el stack del microprocesador. Las locaciones en el interior de esta area son despus individuadas por el contenido del Stack Pointer (SP). Registros de segmento adicionales para poder acceder contemporaneamente a dos segmentos adicionales.

FS e GS

Otros registros EIP Individua la direccin de la prsima instruccin para efectuar, en el interior del Code instruction Segment.. pointer 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 instruccin para efectuar. Es automticamente incrementato despus de cada instruccin, 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 vlidos para todos los microprocesadores, mientras los sucesivos son especficos para el 386 en adelante. La descripcin de los diferentes bits est indicada a continuacin. C (carry) Memoriza la relacin (carry) en las operaciones de suma o el prstamo (borrow) en aquellas de resta. Es tambin utilizado para indicar condiciones de error en algunos procedimientos.

P (parity)

La igualdad individua el nmero de 1 presentes en un nmero. Vale 0 (igual impares) si el negro de 1 es impar, vale 1 (igual pares) si el nmero de 1 es igual. A (auxiliary carry) Memoriza la relacin (carry) en las operaciones de suma o el prstamo (borrow) en aquellas de resta, relativa a las posiciones 3 y 4 del resultado. Es usado en las operaciones con nmeros BCD. Z (cero) Indica si el resultado de una operacin es cero. Vale 1 si el resultado es 0, vale 0 en los otros casos. S (sign) Indica el signo del resultado de una operacin matemtica o lgica. 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 verificacin 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 automticamente decrementados, mientras si D=0 son automticamente incrementados. O (overflow) Indica que una operacin h generado un overflow (es decir un nmero que excede las capacidades de la mquina). IOPL (in/out Es usado en el modo protegido para seleccionar el nivel de privilege level) 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 verificacin 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 mltiple). AC Usado solamente en el 80486SX. (alignment check) VIF Usado en el Pentium. VIP Usado en el Pentium. ID Usado en el Pentium.

1.5 Direccin de memoria en el Modo Real


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 tpica 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 despus asar para operar con modalidad protegida mediante programacin de la misma. La modalidad protegida es la tpica de los sistemas multi-task donde ms programas operan contemporaneamente. Todos los ejemplos de uso del Mdulo E24 sern desarrollados con modalidad real. Con modalidad real todas las ubicaciones de memoria fsica son individuadas por una cmbinacin de una direcin de segmento y de una direccin de offset (o direccin efectiva) en el interior del segmento. La direccin de segmento, contenido en un registro de segmento, define el inicio de una zona de 64KB de memoria, denominada segmento (se trata de una direccin de 16 bit, con valores de 0000 a FFFF. Ladireccin de offset definine una ubicacin en el interior de las 64K ubicaciones del segmento (entonces es un registro de 16 bit con contenio variable de 0000 a FFFF). La figura 1.5.1 de al lado muestra como se obtiene la direccin de memoria fsica a partir de la direccin 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 direccin final de 20 bit que permite dirigir 1MB de memoria.

Fig. 1.5.1

La figura 1.5.2 muestra tutta la memoria (1MB) que se puede dirigir con modalidad real. Se ve como por ejemplo una direccin cualquiera fsica, por ejemplo la siguiente direccin, que suponemos que contiene un cdigo de programa: 1F000 se obtiene como combinacin de una direccin de segmento: CS = 1000 y de una direccin de offset: IP = F000 Muy a menudo se usa la siguiente expresin para indicar las direcciones de memoria fsicas: direccin de segmento:direccin de offset Ejemplo: CS:IP 1000:F000

1.6 Direccin de memoria en el Modo Protegido


El funcionamiento en modo protegido (caracterstico de los microprocesadores del 286 en adelante) permite acceder al primer 1M de memoria y tambin 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 direccin de segmento resulta diferente. En el lugar de la direccin de segmento, el registro segmento contiene ahora un selector que selecciona un descriptor de una tabla de los descriptores. El descriptor individua la ubicacin del segmento de memoria, unidamente a su longitud y a los derechos de acceso. El uso, tambin 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 ms a fondo el funcionamiento de la tabla de los descriptores.

El registro Data Segment DS contiene el nmero 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 direccin base del segmento igual a 00100000H, con una dimensin a 000FFH. El segmento de memoria fsica dirgigida por DS vara entonces de 100000H hasta 1000FFH.

Pgina blanca

1.7 Modos de direccin


Los modos de direccin representan las modalidades utilizadas por el microprocesador para individuar los datos solicitados por cada instruccin. El aprendizaje de los modos de direccin es de fundamental importancia para el desarrollo eficientes de los programas. Para la ilustracin de modos de direccin de los microprocesadores Intel se har referencia a la instruccin MOV.

Un ejemplo de instruccin MOV est indicado en la fig. 1.7.1 donde la instruccin 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.

La instruccin MOV es capaz de mover los datos en variados modos. Estos modos corresponden a las posibles variaciones de la instruccin segn el tipo de direccin utilizado y son indicados en la tabla. Tipo Register Immediate Direct Instruccin MOV AX,BX MOV CH,3AH MOV [1234H],AX Fuente Register BX Destino Register AX Register Data 3AH CH Memory Register DS*10H + DISP Address AX 10000H + 1234H 11234H Memory Register DS*10H + BX Address CL 10000H + 0300H 10300H Memory Register DS*10H + BX + SI Address SP 10000H + 0300H + 0200H 10500H Memory DS*10H + BX + 4 Register Address 10000H + 0300H + 4 CL 10304H DS*10H + ARRAY + BX Memory Register + SI Address DX 10000H + 1000H + 0300H 11500H + 0200H DS*10H + EBX + 2 * ESI Memory Register 10000H + 00000300H + Address AX 00000400H 10700 Generacin de direccin

Register Indirect

MOV [BX],CL

Base-plus-index

MOV [BX+SI],BP

Register relative

MOV CL,[BX+4]

Base relative-plus- MOV ARRAY index [BX+SI],DX MOV [EBX+2*ESI],AX

Scaled index

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

La ilustracin detallada de los diferentes modos de direccin est indicada a continuacin. 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 ubicacin de memoria fuente al registro o ubicacin de memoria de destino. Ejemplo: MOV CX,DX

Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) que se encuentren inmediatamente despus el cdgo de la instruccin en un registro o en una ubicacin de memoria. Ejemplo: MOV EAX,01234567H Direct Transfiere la copia de un byte (8 bit), de una palabra (16 bit) o de una doble Addressing palabra (32 bit) entre una ubicacin de memoria y un registro. Ejemplo: MOV AX,MEMPOS Register-Indirect Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre Addressing un registro y una ubicacin de memoria dirigida por un registro. Ejemplo: MOV AX,[BX] Base-Plus-Index Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre Addressing un registro y una ubicacin de memoria dirigida por un registro ms otros registro. El primer registro es denominado base y el segundo ndice. Ejemplo: MOV AX,[BX+DI] Register-Relative Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre Addressing un registro y una ubicacin de memoria dirigida por un registro ms un desplazamiento fijo. El registro se denomina base. Ejemplo: MOV AX,[BX+10H] Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre Base RelativePlus-Index un registro y una ubicacin de memoria dirigida por un registro ms otro registro ms un desplazamiento fijo. El primer registro es denominado base y el Addressing segundo ndice. Ejemplo: MOV AX,[BX+DI+10H] Scaled-Index Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre Addressing un registro y una ubicacin de memoria dirigida por un registro ms otro registro modificado por un factor de escala fijo 2X, 4X o 8X. Esta instruccin est disponible solamente a partir del 386. Ejemplo: MOV EDX,[EAX+4*EBX]

Immediate Addressing

Leccin N.2: El microprocesador Intel 386EX


Objetivos:
Saber: las caractersticas principales del microprocesador 80386EX su estructura interna el interfaz hacia los dispositivos externos

Requisiti:

Leccin N.1 del mdulo DL 3155E24

Contenidos:

caractersticas generales estructura interna interfaz con dispositivos externos configuracin

Pgina blanca

2.1 Caractersticas 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. Tambin 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 excepcin del vdeo e interfaz para Fig. 2.1.1 los discos. 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

Las caractersticas principales de este microprocesador pueden as ser brevemente resumidas: Ncleo interno igual al microprocesador 386 Arquitectura 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 33MHz Bus dirigidos externo de 26 bit para una direccin de 65MB de memoria Bus de datos externo de 16 bit. Desarrollado en tecnologa CHMOS de alta velocidad. Perifricas interne integradas: Unidad de gestin de la alimentacin y del clock Unidad de seleccin (Chip select) Unidad de control de las interrupciones Unidad Timer/Counter Unidad timer de Watchdog Unidad de serie asncrona de I/O Unidad de serie sncrona de I/O Unidad paralela de I/O Unidad de gestin DMA Unidad de control de refrsh Unidad de test compatible JTAG

2.2 Caractersticas elctricas


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

El nmero de pin es muy elevado y diferentes pin asumen una doble funcin que puede ser elegida a nivel de configuracin software del dispositivo. La figura de al lado muestra el mismo microprocesador con los diferentes pins reagrupados segn su funcin lgica. Se pueden entonces individuar: A El bus de los datos con sus 16 lneas El bus de las direcciones con sus 25 B lneas C: Las seaIes de clock y de reset Las seales relativas a la Port 1 de I/O D con las alternativas Las seales relativas a la Port 2 de I/O E con las alternativas Las seales relativas a la Port 3 de I/O F con las alternativas G Las seales de control H Otras seales

En el mdulo E24 es utilizada la versin EXTC del microprocesador que preve una alimentacin entre 4.5V y 5.5V. Todas las lneas externas son entonces TTL compatibles pudiendo as utilizar un circuito cualquiera integrado TTL en esu externo. La potencia absorbida por el microprocesador vara segn la frecuencia de trabajo y de la tensin de alimentacin del chip. Por ejemplo, con una frecuencia operativa de 25 MHz y con una alimentacin de 5.0V el microprocesador absorbe aproximadamente 250 mA.

2.3 Arquitectura interna


La arquitectura interna preve la presencia del ncleo central de 36 bit con el bus de los datos y de las direcciones. Sobre estos bus son despus conectadas todas las perifricas internas, como est ilustrado en la Fig. 2.3.1 .

Fig. 2.3.1 Sigue una breve descripcin de las perifricas internas integradas. 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 ncleo principal y por las perifricas integradas. Estn disponibles 2 Power Management Mode para el funcionamiento con ahorro de energa.

Uno es el Idle Mode donde el clock de la CPU es bloqueado mientras sigue activo el de las perifricas, y el otro el Powerdown Mode donde el clock es bloqueado completamente por todos los dispositivos internos. Chip Select Unit Esta periferica 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 perifrica interna contiene N.2 chip del tipo 8259A conectados en cascada. Soporta un mximo de 8 entradas (INT0-INT7) para las interrupciones externas y un mximo de 8 interrupciones internas. Timer/Counter Unit Esta perifrica tiene las mismas funcionalidades de base del timer/counter 8254. Estn 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 atrs 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 interrupcin o para indicar que se ha generado una condicin de prdida de sustentacin (hang) en el chip. Asynchronous Serial Unit Esta perifrica contiene un UART. Es equivalente al UART 16450. Es posible gestionar dos canales de comunicacin asncrona full-duplex equivalentes a los COM1 y COM2 del PC. Synchronous Serial Unit Esta perifrica gestiona un canal de comunicacin sncrono, con un trasmisor, un receptor y un generador de baud-rate dedicado. Es posible gestionar velocidad de trasmisin hasta 8.25 MHz con frecuencia de clock del procesador de 33 MHz. Parallel Input/Output Unit Esta perifrica 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 perifrica contiene N.2 canales de acceso directo a la memoria (DMA). Cada canal puede trasferir data entre una combinacin de memoria e I/O con otra combinacin cualquiera (8 o 16 bit) de fuentes de datos. Refresh Control Unit Esta perifrica simplifica el interfaz del microprocesador con las memorias RAM de tipo dinmico que necesitan una actualizacin.

JTAG Test-Logic Unit Esta perifrica permite el acceso a los pin del dispositivo a otras fuentes de informacin interna para operaciones de test. Es completamente compatible con el estndar IEEE 1149.1 disponiendo de 5 lneas de acceso dedicadas: TRST, TCK, TMS, TDI y TDO.

Pgina blanca

2.4 Temporizaciones
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 perodos de clock interno (CLKOUT) o estados-T (T1 y T2).

El fin de T1 es el de generar en la salida una direccin, en el bus de las direcciones, y hacer activa a nivel bajo la lnea ADS#. Tambin si las seales 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 operacin de escritura, mientras los segundos 2 muestran una operacin de lectura. La diferencia entre los ciclos de lectura y escritura reside en las seales de control y en el momento en que aparecen los datos en el bus de datos.

Durante un ciclo de escritura los datos son presentados en el bus a mitad de T1 y por toda la duracin 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 vlidos al final de T2 para ser ledos correctamente por el microprocesador.

2.5 Interfaccia con RAM ed EPROM


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

Interfaccia a 16 bit con memorie RAM 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: D0D7 alla memoria in basso e D8D15 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 (D0D7) e quindi viene usato per abilitare la memoria in basso. Il segnale BHE# indica che sul bus presente la parte alta dei dati (D8D15) e quindi viene usato per abilitare la memoria in alto.

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

2.6 Configuracin
Las mltiples prestaciones del microprocesador 80386EX son adaptadas para las diferentes aplicaciones mediante la programacin del dispositivo. Esta programacin consiste en la escritura de los regstros de configuracin del microprocesador. El primer registro para configurar es la Address Configuration Register. Permite seleccionar las direcciones de todos los registros de configuracin en dos posibles modalidades: Modalidad DOS compatible Modalidad expansa. En el mdulo E24 es utilizada la modalidad expansa. Es obtenida escribiendo un '1' en el bit 15 del registro de configuracin de la direccin, como muestra en la figura siguiente.

Una vez seleccionada la modalidad expansa para las direcciones, la programacin de las diferentes perifricas internas consiste en la escritura de los relativos registri de configuracin. La figura de al lado muestra los campos de direccin asignados a los registros de las diferentes perifricas integradas en el microprocesador.

La programacin de los diferentes dispositivos es muy compleja y exige un estudio profundizado. No es solicitada en el uso del Mdulo E24 ya que el programador puede utilizar los diferentes recursos simplemente a travs de las interrupciones del BIOS, es ms contrariamente co la programacin directa de los dispositivos de I/O. Con el fin de ejemplo son ilustrados a continuacin los registros utilizados para la gestin de las puertas de I/O del microprocesador, y como se produce la programacin de la Puerta 1 en la entrada y la lectura de sus lneas.

;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 IN AL,DX ;Status register ;read port

Pgina blanca

Leccin N.3: El Mdulo Microprocesador de 32 bit DL 3155E24


Objetivos:
Saber: la estructura del Mdulo Microprocesador de 32 bit DL 3155E24 sus componentes su uso.

Requisiti:

lecciones N.1 y N.2 del Mdulo DL 3155E24

Contenidos:

Estructura del mdulo DL 3155E24 Seccin de microprocesador y memorias Seccin de teclado, display LCD Seccin de puerto paralelo, de serie, convertidores A/D y D/A Otros dispositivos

Pgina blanca

3.1 Presentacin general


El mdulo de microprocesador de 32 bit E24 se presenta como en la figura:

En el mismo son presentes los siguientes bloques y dispositivos, que sern descritos con detalle en las pginas siguientes: El microprocesador 80386EX La 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-232 La interfaz paralela El pulsador de reset del microprocesador El display de 7 segmentos Las sondas lgicas El conector de interrupciones, timer, bus de serie El convertidor A/D El convertidor D/A

Pgina blanca

3.2 Microprocesador 80386EX


El microprocesador 80386EX est configurado, en el interior del mdulo 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, tambin un cierto nmero de perifricas integradas (Unidad de serie, Puertas paralelas, ..). En esta pgina es descrita su configuracin fundamental y las seales que estn disponibles en los especficos test-points. El clock del microprocesador llega por el microcontrolador que gestiona el teclado. Se trata de una seal a 1.8432 MHz. Ha sido elegida una frecuencia relativamente baja para permitir el uso de instrumentacin (osciloscopio) de medio-bajo nivel en las prcticas. Esta frecuencia resulta adems fcilmente divisible para generar las baud-rate para la interfaz de serie. El bus de los datos de 16 bit D0D15 se ha hecho disponible en el exterior sobre los especficos test-points (DATA). El bus de las direcciones A0A15 se ha hecho disponible en el exterior sobre los especficos test-points (ADDRESS). La seaI A0 corresponde a la seal BLE. Las seaIes de control estn tambin disponibles en el exterior sobre los test-points (CONTROL). Las seaIes presentes son: Reset Seal de reset del microprocesador (activo alto). UCS Seal de habilitacin de la EPROM de sistema (M4) CS0 Seal de habilitacin de la EPROM de usuario (M3) CS1 Seal de habilitacin de las RAM CS2 Seal de habilitacin del display LCD CS3 Seal de habilitacin del display de 7-segmentos RD Seal de Read (activo bajo) WR Seal de Write (activo bajo) W/R Seal de Write (alto)/Read (bajo) Seal de habilitacin de byte menos significativo (activo BLE bajo) Seal de habilitacin de byte ms significativo (activo BHE bajo) CLOCK Seal de clock del microprocesador. Las otras seales presentes en la figura son utilizadas por las perifricas del sistema y sern descritas en las pginas siguientes. Fig. 3.2.1

Pgina blanca

3.3 Memorias EPROM y RAM


Las memorias EPROM y RAM estn conectadas en el microprocesador 80386EX aprovechan las capacidades del mismo para gestionar perifricas de 8 y 16 bit. En particular las EPROM aprovechan 8 bit y las RAM 16 bit. Los dos casos diferentes son ilustrados a continuacin. 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 lnea UCS# como seal de habilitacin de la memoria EPROM de sistema M4. Esta lnea se ha hecho activa por el microprocesador inmediatamente despus del reset y es despus programada para descodificar todas las direcciones entre F8000 y FFFFF (32KB). La lnea UCS# est conectada en la lnea 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 seal 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.

El bus de los datos es desdoblado y enviado a las dos memorias: D0D7 a la memoria M2 y D8D15 a la memoria M1. Las direcciones de A1 y A15 son enviadas en paralelo a las dos memorias. La seal de habilitacin de las memorias llega de una combinacin de la lnea de chip select CS1# y de las seales BLE# y BHE#. La seal BLE# indica que en el bus est presente la parte baja de los datos (D0D7) y entonces es usado para habilitar la memoria M2. La seal BHE# indica que en el bus est presente la parte alta de los datos (D8D15) 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 El rea de memoria de 00000H a 00FFFH est reservada al monitor para la memorizacin de los vectores de interrupcin, de los datos de servicio y del stack. Para los programas de usuario est reservada al rea de memoria de 001000H a 0FFFFH (60KB).

3.4 Teclado
El teclado es el dispositivo con el quee usuario comunica con el sistema. Contiene las teclas relativas a los caracteres hexadecimales (0F) y las teclas para los mandos para impartir al sistema. En el mdulo E24 la gestin del teclado est reservada al microcontrolador ST6220. El microcontrolador lee el teclado para verificar si ha sido presionada una tecla y salva el cdido en la propia memoria. Cuando el microprocesador 80386EX interroga el microcontrolador a travs del bus de serie, este ltimo vuleve el cdigo de la tecla presionada. La lnea P2.4 del microprocesador 80386EX es utilizada para generar la seal de habilitacin (CS) para el microcontrolador. Las lneas P3.5 y P3.7 son utilizados respectivamente para leer los datos que proceden del microcontrolador y para generar el clock de lectura. La operacin de lectura ha sido desarrollada por la interrupcin software 09H .

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

Pgina blanca

3.5 Display LCD


El display LCD es el dispositivo a travs del cual el sistema comunica con el usuario. Est conectado en el microprocesador a travs del bus de datos de 8 bit D0D7. La habilitacin es obtenida a travs del CS2 que es programado para las direcciones 00000003. En particular son despus usadas las direcciones: 0000 Escritura del Instruction Register 0001 Escritura de la DRAM La seal de Enable (E) del LCD llega directamente de la seal CS2 del microprocesador. La seaI RS que individua los mandos (bajo) y los datos (alto) llega de la direccin A1. La seaI de escritura/lectura (R/W#) llega de la seal BLE.

Para las informaciones relativas a la programacin directa del LCD vese en los 'Manuales'.

Pgina blanca

3.6 Interfaz paralela y de serie


El mdulo E24 est dotado de una interfaz paralela con N.11 lneas de I/O que permite la conexin con dispositivos externos. En particular es posible la conexin directa con la interfaz paralela del Personal Computer para descargar los programas en el Mdulo E24. Se utiliza con el fin de del software E24ide (Integrated Development Environment). La puerta paralela usa un conector D25 hembra analgo en el conector usado en la puerta paralela del PC. Este recurso es obtenido sin ningn 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 travs de la Puerta 1 del microprocesador, mientras las lneas B0, B1 y B2 son obtenidas a travs de N.3 lneas de I/O de la Puerta 2 del microprocesador. La Puerta A puede ser utilizada como entrada o como salida. La lnea B0 es utilizada como salida porque corresponde con una lnea de entrada de la interfaz paralela del PC (ACK). Las lneas B1 y B2 son utilizadas como entradas porque corresponden a lneas de salida de la interfaz paralela del PC (STROBE y AUTO FD XT).

El mdulo E24 est dotado de una interfaz de serie asncrona RS-232. La interfaz de serie asncrona RS-232 del Mdulo E24 es obtenida utilizando la Asynchronous Serial I/O Unit N.1 del microprocesador 80386EX. Las lneas a disposicin son: TXD1, RXD1, RTS1, CTS1.

Se necesita solamente un componente externo, el Transceiver MAX 232 (IC2) para la daptacin de las seales de los niveles -12/+12V del estndar RS-232.

La programacin y el uso de la interfaz RS-232 es hecha a travs de la interrupcin software INT 14H (descrita en los 'Manuals').

3.7 Convertidores A/D y D/A


El Mdulo E24 contiene N.2 canales de entrada analgicos (AD-1 y AD2) 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 conexin en el microprocesador es hecho a travs de N.4 lneas de I/O: - la lnea P3.4 manda el CS del convertidor - la lnea P3.6 (DOUT del bus de serie) manda la lnea DI del convertidor - la lnea P3.5 (DIN del bus de serie) lee los datos de la lnea DO del convertidor - la lnea P3.7 (SCLK del bus de serie) mando de la entrada de clock del convertidor. Para las modalidades de programacin del dispositivo vase el data sheet del componente en los 'Manuales'. El BIOS del Mdulo E24 proporciona la interrupcin 18H que provee la gestin del convertidor de modo muy simple. El Mdulo E24 contiene N.2 canales de entrada analgicos (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 conexin en el microprocesador es hecho a travs de N.3 lneas de I/O: - la lnea P3.1 manda el CS del convertidor - la lnea P3.6 (DOUT del bus de serie) manda la lnea DIN del convertidor - la lnea P3.7 (SCLK del bus de serie) mando de la entrada de clock del convertidor. Para las modalidades de programacin del dispositivo vase el data sheet del componente en los 'Manuales'. El BIOS del Mdulo E24 proporciona la interrupcin 19H que provee la gestin del convertidor de modo muy simple.

Pgina blanca

3.8 Otros dispositivos


El Mdulo e24 contiene otros dispositivos a continuacin enumerados. RESET Esta seccin contiene la tecla de reset del microprocesador. Utilizar esta tecla cada vez que el sistema se bloquea durante la ejecucin de los programas. Los programas en la memoria no son alterados por esta operacin. Solamente los break-points son cancelados. 7-SEGMENT DISPLAY El display de 7-segmentos es utilizado por el BIOS del Mdulo E24 para la visualizacin de las teclas presionadas durante la inmisin de los mandos. Tambin puede ser usado por el usuario para aplicaciones propias. Est conectado en el microprocesador 80386EX a travs del latch 74374 IC9. El latch toma los datos del bus de datos D0D7 y los manda al display para el control de los 7 segmentos y del punto decimal. La seal de habilitacin del latch est conectado en la seal de Chip Select CS3 del microprocesador, que es programado para ser activo con la direccin 0010H.

Para mandar el display de 7 segmentos basta entonces hacer una operacin de OUT en la direccin 0010H. LOGIC PROBES Hay disponibles N.2 sondas lgicas de nivel para la visualizacin del estado de las seales lgicas a travs del LED. Las entradas de las sondas estn dotadas de resistencia de pull-up. Los LED se apagan cuando son conectados en puntos de nivel lgico bajo.

INTERRUPT/TIMER/SERIAL BUS Esta seccin del Mdulo E24 est dotada de un conector donde son indicadas las seales de interrupcin del microprocesador, de gestin 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 seales disponibles est indicado a continuacin. INT0 Seal de interrupcin ocultable N.0 INT1 Seal de interrupcin ocultable N.1 TMRGATE Puerta de entrada del timer/counter que permite controlar las operaciones de cuenta TMRCLK Entrada de clock externo del timer/counter TMROUT Salida del timer/counter Lnea de entrada (hacia el 386EX) del bus de serie. Est gestionada por la lnea P3.5 DIN del microprocesador Lnea de entrada (por el 386EX) del bus de serie. Est gestionada por la lnea P3.6 del DOUT microprocesador Lnea de clock (generado por el 386EX) del bus de serie. Est gestionada por la lnea SCLK P3.7 del microprocesador.

Leccin N.4: Desarrollo de programas


Objetivos:
Conocer: la programacin de los microprocesadores Intel las modalidades de desarrollo de programas aplicativos para el mdulo Microprocesador de 32 bit

Requisiti:

lecciones N.1, N.2 y N.3 del Mdulo DL 3155E24

Contenidos:

Introduccin al lenguaje Assembler Elementos base del lenguaje Assembler Instrucciones Modos de Gua Fases del desarrollo de un Programa Edit de un programa Asemblamiento de un programa Enlace de un Programa Verificacin de funcionamiento de un programa

Pgina blanca

4.1 Generalidades sobre el lenguaje Assembler


El lenguaje Assembler es el lenguaje normalmente utilizado para la programacin de los sistemas de microprocesador, debe los recursos en trminos de memoria exigen una optimizacin de los programas. En los sistemas ms complejos (por ejemplo el PC) se usan lenguajes de programacin del ms alto nivel. Las caractersticas fundamentales de los lenguajes Assembler pueden as ser resumidas: Son lenguajes de bajo nivel Existe la correspondencia uno a uno con las instrucciones del lenguaje de la mquina Los smbolos mnemnicos utilizados estn asociados a instrucciones, secuencias de instrucciones, direcciones de memoria, reas de memoria, dispositivos de I/O Posibilidad de utilizar lo mejor posible la mquina hardware La extensin de un programa Assembler es muy compleja. A continuacin son ilustrados brevemente todos los elementos y los conceptos que estn en la base del lenguaje Assembler. Statement Un programa Assembler est compuesto de Statements. Cada statement comprende una directiva para el Montador y corresponde a una lnea del programa. Si la directiva corresponde a una instruccin de la mquina ejecutable por la CPU, se denomina Instruccin, de lo contrario es una Pseudo-Instruccin. Instrucciones Son traducidas por el Montador en instrucciones de la Ejemplo: mquina. Cada instruccin est compuesta en general por: Label OpCode Operands START: MOV AX,BX - una Etiqueta (o Label) CMP AX,45h - un Cdigo Operativo (o Operation Code) - uno o ms Operandos (o Operands). Etiquetas (Label) Son identificadores de una instruccin; el montador las sustituye con la direccin de la instruccin que representan. Ofrecen las siguientes ventajas: - permiten encontrar con ms facilidad un punto del programa - permiten no tener nada que ver con las direcciones fsicas - facilitan la modificacin del programa. Cdigo Operativo (OpCode) Es el mnemonico de una instruccin assembler: en otros trminos especifica la operacin que debe ser efectuada por la CPU. Es el nico campo que nunca puede faltar en una instruccin Operandos (Operands) Contiene la indicacin necesaria para llegar hasta los operandos (uno o ms, segn los casos) exigidos por la instruccin. Sobre la base de lo indicado en este campo, la CPU proveer, durante la ejecucin del programa, para llegar a los operandos: - en la instruccin misma - en un registro - en la memoria - sobre una puerta de I/O.

Pseudo instrucciones Son mandos utilizados durante el proceso de montaje (por el Assembler), que no eson traducidos en instrucciones de la mquina ejecutables por la CPU. Ejemplo:
DSEG SUB1 SEGMENT PARA PUBLIC 'DATA' PROC NEAR ..... ENDP END

Comentarios Son palabras o frases introducidas por el programados para hacer el programa ms comprensible; sirven al programador mismo y a quien analizar en el futuro el cdigo. 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

4.2 Elementos base del lenguaje Assembler


Son descritos en esta pgina los elementos base del lenguaje Assembler, con referencia al montador MASM para los microprocesadores Intel que es utilizado en el E24ide (Integrated Development Environment). Un programa escrito en Assembly 8086 est compuesto por Statements; normalmente cada uno de los mismos ocupa una lnea hasta un <LF> o un par <CR><LF>.. Un statement puede proseguir sobre la lnea sucesiva, si esta empieza con el caracter &. El conjunto de los caracteres utilizables est compuesto por: - caracteres alfanumricos (maysculas, minsculas, cifras), - caracteres no imprimibles (espacio, TAB, <CR>, <LF> - caracteres especiales (+ - * / = () ...) En el interior del programa pueden aparecer: Identificadores Constantes Expresiones Ejemplo de programa:
CODE ASSUME PROGR: SEGMENT CS:CODE, DS:CODE ORG 0H 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 CODE JMP PROGR ;loop ENDS END PROGR

Identificadores Son usados como nombres asignados a entidades definidas por el programador (segmentos, variables, label, etc.). Estn compuestos por letras, nmeros o uno de los tres caracteres @ ? _, pero no pueden iniciar con un nmero. Tienen una longitud mxima de 31 caracteres. Constantes Se pueden utilizar constantes: binarias: 001101B optales: 15O, 15Q hexadecimales: 0Dh, 0BEACh (deben iniciar con un nmero) decimales: 13, 13D ASCII: S, Salve reales en base 10: 2.345678, 112E-3. Expresiones Se pueden utilizar los siguientes operadores: artimticos: (+,-,*,/, MOD, SHL, SHR) lgicos: (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).

Instrucciones El Assembler para los microprocesadores Intel hace disponible un elevado nmero de instrucciones, reagrupables en las siguientes clases: Trasferencia de Datos Aritmticas Manipulacin de Bit Trasferencia de Control Manipulacin de Cadenas Manipulacin de Interrupciones Control del Procesador En las pginas siguientes son enumeradas las instrucciones relativas a las clases precedentes. Para una descripcin detallada de las instrucciones hgase referencia a la seccin relativa a Instrucciones y programacin de los microprocesadores Intel en la documentacin on-line, reclamable con el link 'manuals' arriba en esta pgina.

4.3 Instrucciones
Son enumeradas en esta pgina las instrucciones ms importantes de los microprocesadores Intel. Para una descripcin detallada de las instrucciones hgase referencia a la seccin relativa a Instrucciones y programacin de los microprocesadores Intel en la documentacin on-line, reclamable con el link 'manuals' arriba en esta pgina.

Instrucciones de Trasferencia de Datos


OpCode Descripcin

Uso general

MOV POP PUSH XCHG XLAT Input/Output IN OUT Trasformacin LDS de direcciones LEA LES Trasformacin LAHF Flag register SAHF POPF PUSHF Instrucciones Aritmticas
OpCode

Move (Byte or Word) Pop a Word onto Stack Push Word onto Stack Exchange Register Translate Input Byte or Word Output to Port Load Pointer Using DS Load Effective Address Load Pointer Using ES Load Register AH From Store register AH into Pop Flags from the Stack Push Flags onto Stack

Descripcin

Suma

Resta

Multiplicacin

AAA ADC ADD DAA INC AAS SUB SBB DAS DEC CMP NEG AAM IMUL MUL

ASCII Adjust after Addition Add with Carry Addition Decimal Adjust after Addition Increment ASCII Adjust after Subtraction Subtract Subtract with Borrow Decimal Adjust after Subtraction Decrement Aparece Negate ASCII Adjust after Multiply Integer Multiply, Signed Multiply, Unsigned

Divisin

Conversin

AAD DIV IDIV CBW CWD

ASCII Adjust before Division Divide, Unsigned Integer Divide, Signed Convert Byte to Word Convert Word to Doubleword

Instrucciones para la Manipulacin de Bit


OpCode Descripcin

Lgicas

De Traslacin

Di Rotazione

AND OR XOR NOT TEST SAL SAR SHL SHR ROL ROR RCL RCR

Logical AND Logical OR Exclusive OR Logical NOT Test Shift Arithmetic Left (=SHL) Shift Arithmetic Right Shift Logical Left (=SAL) Shift Logical Right Rotate Left Rotate Right Rotate through Carry Left Rotate through Carry Right

Trasferencia del control


OpCode Descripcin

Saltos incondicionados

Salti condizionati

CALL RET JMP JA, JNBE JAE, JNB JB, JNAE, JC JBE, JNA JCXZ JE, JZ JG, JNLE JGE, JNL JL, JNGE JLE, JNG JNC JNE, JNZ JNO JNP, JPO

Call Procedure Return from Procedure Jump Unconditionally Jump If Above Jump If Above or Equal Jump If below Jump If below or Equal Jump if CX Register Zero Jump if Equal Jump if Greater Jump if Greater or Equal Jump if Less Jump if Less or Equal Jump if No Carry Jump if Not Equal Jump if No Overflow Jump if No Parity

JNS JO JP, JPE JS Instrucciones iterativas LOOP LOOPE, LOOPZ LOOPNE, LOOPNZ

Jump if No Sign Jump if Overflow Jump if Parity Jump if Sign Loop on Count Loop While Equal Loop While Not Equal

Instrucciones para la Manipulacin de Cadenas


OpCode Descripcin

Instrucciones de Desplazamiento

Instrucciones de Confronto

Instrucciones de Bsqueda

Instrucciones de Carga

Instrucciones de Escritura

MOVS MOVSB MOVSW CMPS CMPSB CMPSW SCAS SCASB SCASW LODS LODSB LODSW STOS STOSB STOSW

Move String (Byte or Word) Move String Byte Move String Word Aparece String (Byte o Word) Aparece String Byte Aparece String Word Scan String (Byte o Word) Scan String Byte Scan String Word Load String (Byte or Word) Load String Byte Load String Word Store String (Byte or Word) Store String Byte Store String Word
Descripcin

Prefijos de repeticin
OpCode

Prefijos de repeticin

REP REPE REPNE REPNZ REPZ

Repeat Repeat While Equal Repeat While Not Equal Repeat While Not Zero Repeat While Zero

Instrucciones para la Manipulacin de las Interrupciones


OpCode Descripcin

Manipulacin de Interrupciones

INT INTO IRET

Interrupt Interrupt on Overflow Interrupt Return

Instrucciones para el Control del Procesador


OpCode Descripcin

Modificacin de los Flag

Sincronizacin

Instruccin Nula

CLC CLD CLI CMC STC STD STI ESC HLT LOCK WAIT NOP

Clear Carry Flag Clear Direction Flag Clear Interrupt-Enable Flag Complement Carry Flag Set Carry Flag Set Direction Flag Set Interrupt Enable Flag Escape Halt Lock the Bus Wait No Operation

4.4 Modos de Direccin


El Modo de direccin de una instruccin define el mtodo para utilizar para determinar donde est memorizado un dato particular (operando). Representa un elemento fundamental de la programacin. Los operandos pueden estar contenidos: en registros; en la instruccin misma; en la memoria; sobre una puerta de I/O. Los Modos de Direccin pueden ser reagrupados en 7 clases: Register; Immediate; Direct; Register Indirect; Base Relative; Direct Indexed; Base Indexed. Son descritos a continuacin. Register Addressing En la instruccin est especificado el registro para utilizar como operando. Immediate Addressing En la instruccin misma est indicado el dato para utilizar como operando. Direct Addressing En la instruccin 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 expresin. La direccin fsica es obtenida sumando el EA con el contenido del Data Segment DS multiplicado por 16.

Formato Assembler: <Registro>

Ejemplo: MOV AX,BX

Formato Assembler: <expresin>

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

Formato Assembler: <variable><expresin>

Ejemplo: MOV AX,TABLE+10

Register Indirect Addressing Formato Assembler: El Effective Address del [<registro>] 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 instruccin est indicado donde encontrar la direccin del operando. Base Relative Addressing Formato Assembler: El Effective Address del [ < registro>+<displacement> ] 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 instrccin misma. Direct Indexed Addressing Formato Assembler: El Effective Address del <variable>[SI] operando es calculado <variable>[DI] sumando el valor de un offset, contenido en una variable, a un displacement, contenido en uno de los Index Register (SI o DI). BaseIndexed Addressing Formato Assembler: El Effective Address del < variable>[BX]+[SI] operando es calculado como <variable>[BX]+[DI] suma de los siguientes <variable>[BP]+[SI] trminos: <variable>[BP]+[DI] - 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 instruccin misma.

Ejemplo: MOV AX,[BX]

Ejemplo: MOV AX,[BX+4]

Ejemplo: MOV AX,TABLE[DI]

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

4.5 Fases del desarrollo de un Programa


El proceso de creacin de un programa Assembly pasa a travs de las siguientes fases: escritura, a travs de un normal EDITOR, de uno o ms file de caracteres ASCII con extensin .ASM que contienen el programa fuente. montaje, a travs de un MONTADOR, de los file fuente, y generacin de otros tantos file objeto, con extensin .OBJ. creacin del file ejecutable, con extensin .EXE, a travs de un LINKER. verifica y correccin de los eventuales errores a travs de un DEBUGGER. 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:

Pgina blanca

4.6 Edit de un programa


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 operacin directamente en el interior del ambiente de desarrollo.La figura siguiente muestra un ejemplo.

Pgina blanca

4.7 Asemblamiento de un programa


La fase de asemblamiento tranforma el program fuente en cdigo de mquina. A partir del file .ASM que contiene el cdigo fuente es generado el file .OBJ que contiene el cdigo de mquina. Este cdigo de mquina no es directamente ejecutable ya que es necesario efectuar antes la operacin de link. Eventuales errores de nivel de cdigo fuente son visualziados en esta fase. El assembler genera tambin 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 indicacin de todos los errores, directamente en la lnea en la que han sido individuados. Adems indica tambin todos los cdigos de la mquina 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.8 Edit de un programa


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 mdulo E24) para obtener el file .EXE que contiene el cdido ejecutable. Este file .EXE ser despus enviado al Microprocessor System e24 para la verificacin del funcionamiento. La figura siguiente muestra la ventana de mensajes al final de la operacin 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:

debe notarse como los programas generados por el linker inician en la direccin 0200h. Esta introduccin deriva del ambiente MS-DOS. El cdigo hexadecimal visible en la ventana Dump puede ser utilizado para la introduccin manual del programa en el mdulo E24. Los cdigos hexadecimal de la ventana Dump, a partir de la direccin 0200h, deben ser introducidos en la memoria del Mdulo e24 a partir de la direccin 0100:0000.

4.9 Verificacin de funcionamiento de un programa (Debug)


La verificacin del funcionamiento del programa es hecha trasfiriendo el programa en el Mdulo E24, y ejecutando la misma con los mandos del teclado del mdulo. La trasferencia de puede ser hecha de dos modos: Trasferencia manual En este caso se utilizan los cdigos hexadecimal de la ventana Dump, y se introducen a travs del teclado del Mdulo e24 a partir de la direccin 0100:0000. Trasferecia automtica a travs de la interfaz paralela del PC y del Mdulo E24 Se conecta la interfaz paralela del Mdulo E24 con la interfaz paralela del PC. Se opera despus con el mando 'Transfer to E24' del software E24ide. El programa es automticamente trasferido a partir de la direccin 0100:0000 y, al final, es puesto en ejecucin automticamente. La verificacin del funcionamiento (Debug) es hecha con los mandos del teclado del Mdulo E24. Estos mandos permiten efectuar las operaciones tpicas de una sesin de debug, como: 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.

Pgina blanca

1996 - 2012 DE LORENZO SPA - Printed in Italy - All right reserved DE LORENZO SPA V.le Romagna, 20 - 20089 Rozzano (MI) Italy Tel. ++39 02 8254551 - Fax ++39 02 8255181 E-mail: info@delorenzo.it Web sites: www.delorenzoglobal.com - www.technical-education.it www.delorenzoenergy.com

Você também pode gostar