MICROPROCESADOR MICROPROCESA DOR DE 32 BIT DL 3155E24 GU G UÍA TEÓRICA
Laboratorio TIME
Página 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 Módulo Microprocesador de 32 bit DL 3155 E24 Desarrollo de programas de 32 bit
Página blanca
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
Página blanca
1.1 Evolución de los microprocesadores 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. Micr Mi crop opro roce cesa sado dorr Bu Buss de de Dat Datos os in inte tern rno o
Memo Me mori ria a
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 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.2 Estructura interna de un microprocesador 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: La Unidad Aritmético/Lógica (ALU) Los Registros internos La lógica de Control Son descritos a continuación. La Unidad Aritmético/Lógica (ALU)
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 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: suma y resta incremento y disminución desplazamiento derecho e izquierdo de los bit funciones lógicas AND, OR, XOR
Los Registros
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: 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 Contiene la instrucción que el microprocesador está efectuando. La instrucciones 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 Este registro sirve para individuar la instrucción que se está efectuando, y la programa 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 Este registro sirve para individuar la locación de memoria donde residen los direcciones de datos que son necesarios a la CPU. Su longitud debe ser tal para poder dirigir memoria 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 Estos registros expanden las posibilidades del registro acumulador para la general 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. Acumulador
La lógica de Control
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.
1.3 Estructura de un sistema de microprocesador El esquema de bloques de un genérico microprocesador está mostrado en la figura. 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
Todos los dispositivos de un sistema de microprocesador dialogan entre si a través de un BUS de conexión. Este BUS está dividido en: BUS de los DATOS. El microprocesador utiliza este bus de 8, 16, 32, 64 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.
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
Página blanca
1.4 El modelo de programación 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. 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 general Registros de segmento Otros 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 Ahora sigue una breve descripción 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 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.
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 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 dirección 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 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 Individua una sección de memoria donde está presente el código relativo a los programas code 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.
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 registros EIP Individua la dirección de la prósima instrucción 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 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.
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 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 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 Usado solamente en el 80486SX. (alignment check) VIF Usado en el Pentium. VIP Usado en el Pentium. ID Usado en el Pentium. P (parity)
1.5 Dirección 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 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). 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
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
1.6 Dirección de memoria en el Modo Protegido 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. El segmento de memoria física dirgigida por DS varía entonces de 100000H hasta 1000FFH.
Página blanca
1.7 Modos de dirección 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.
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.
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. 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
MOV [1234H],AX
Register AX
DS*10H + DISP 10000H + 1234H
Memory Address 11234H
MOV [BX],CL
Register CL
DS*10H + BX 10000H + 0300H
Memory Address 10300H
MOV [BX+SI],BP
Register SP
Memory DS*10H + BX + SI Address 10000H + 0300H + 0200H 10500H
MOV CL,[BX+4]
Memory Address 10304H
DS*10H + BX + 4 10000H + 0300H + 4
Register DX
DS*10H + ARRAY + BX Memory + SI Address 10000H + 1000H + 0300H 11500H + 0200H
Register AX
DS*10H + EBX + 2 * ESI 10000H + 00000300H + 00000400H
Direct
Register Indirect
Base-plus-index
Register relative
Base relative-plus- MOV ARRAY index [BX+SI],DX
Scaled index
MOV [EBX+2*ESI],AX
EBX = 00000300H, 00000300H, ESI = 00000200H, 00000200H, ARRAY = 1000H, DS = 1000H
Register CL
Memory Address 10700
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
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 Transfiere la copia de un byte (8 bit), de una palabra (16 bit) o de una doble Addressing palabra (32 bit) entre una ubicación 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 ubicación 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 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 Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre Addressing 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 RelativeTransfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) entre Plus-Index un registro y una ubicación de memoria dirigida por un registro más otro Addressing registro más un desplazamiento fijo. El primer registro es denominado base y el 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 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] Immediate Addressing
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
Página blanca
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
Las características principales de este microprocesador pueden así ser brevemente resumidas: Núcleo 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 dirección de 65MB de memoria Bus 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 clock Unidad de selección (Chip select) Unidad de control de las interrupciones Unidad Timer/Counter Unidad timer de Watchdog Unidad de serie asíncrona de I/O Unidad de serie síncrona de I/O Unidad paralela de I/O Unidad de gestión DMA Unidad de control de refrsh Unidad de test compatible JTAG
2.2 Características eléctricas 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.
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
El bus de las direcciones con sus 25 líneas C: Las señaIes de clock y de reset Las señales relativas a la Port 1 de I/O D con las alternativas Las señales relativas a la Port 2 de I/O E con las alternativas Las señales relativas a la Port 3 de I/O F con las alternativas G Las señales de control H Otras señales B
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.
2.3 Arquitectura interna 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. 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 principal y por las periféricas integradas. Están disponibles 2 Power Management Mode para el funcionamiento con ahorro de energía.
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 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.
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.
Página 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 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.
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.
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: 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 Queste due diverse modalità di interfacciamento per EPROM e per RAM sono usate nel Modulo E24.
2.6 Configuración 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: Modalidad DOS compatible Modalidad expansa. 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.
Una vez seleccionada la modalidad expansa para las direcciones, la programación de las diferentes periféricas internas consiste en la escritura escrit ura 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.
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 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.
;programming ;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 ;configurati on register OUT DX, AL MOV DX,P1PIN IN AL,DX
;Status register ;read port
Página blanca
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
Página blanca
3.1 Presentación general 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: 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 lógicas El conector de interrupciones, timer, bus de serie El convertidor A/D El convertidor D/A
Página blanca
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 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: Señal de reset del microprocesador (activo alto). Reset Señal de habilitación de la EPROM de sistema (M4) UCS Señal de habilitación de la EPROM de usuario (M3) CS0 Señal de habilitación de las RAM CS1 Señal de habilitación del display LCD CS2 CS3 Señal de habilitación del display de 7-segmentos RD Señal de Read (activo bajo) WR Señal de Write (activo bajo) W/R Señal de Write (alto)/Read (bajo) Señal de habilitación de byte menos significativo (activo BLE bajo) Señal de habilitación de byte más significativo (activo BHE bajo) CLOCK Señal de clock del microprocesador.
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.
Fig. 3.2.1
Página blanca
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). (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: 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 alt a 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 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).
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 .
Fig. 3.4.1 Para todas las informaciones relativas a los mandos y al significado de cada tecla se consultan los 'Manuals'.
Página blanca
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 Register 0001 Escritura de la DRAM
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'.
Página blanca
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.
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.
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').
3.7 Convertidores A/D y D/A El Módulo E24 contiene N.2 canales de entrada analógicos (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 conexión en el microprocesador es hecho a través de N.4 líneas de I/O: - la línea P3.4 manda manda el CS del convertidor convertidor - la línea P3.6 P3.6 (DOUT del del bus de serie) manda manda la línea DI del convertidor - la línea P3.5 P3.5 (DIN del bus bus de serie) lee los datos datos de la línea DO del convertidor - la línea P3.7 (SCLK (SCLK del bus de serie) mando mando de la entrada de clock del convertidor. 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. 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: - la línea P3.1 P3.1 manda manda el CS del del convertidor - la línea P3.6 P3.6 (DOUT (DOUT del bus bus de serie) manda la línea DIN del convertidor - la línea P3.7 P3.7 (SCLK (SCLK del bus bus de serie) mando de la entrada de clock del convertidor. 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.
Página blanca
3.8 Otros dispositivos 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.
INTERRUPT/TIMER/SERIAL INTERRUPT/TI MER/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. Señal de interrupción ocultable N.0 Señal de interrupción 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 Línea de entrada (hacia el 386EX) del bus de serie. Está gestionada por la línea P3.5 DIN del microprocesador Línea de entrada (por el 386EX) del bus de serie. Está gestionada por la línea P3.6 del DOUT microprocesador Línea de clock (generado por el 386EX) del bus de serie. Está gestionada por la línea SCLK P3.7 del microprocesador. INT0 INT1
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
Página blanca
4.1 Generalidades sobre el lenguaje Assembler 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: Son lenguajes de bajo nivel Existe la correspondencia uno a uno con las instrucciones del lenguaje de la máquina Los símbolos mnemónicos utilizados están asociados a instrucciones, secuencias de instrucciones, direcciones de memoria, áreas de memoria, dispositivos de I/O Posibilidad de utilizar lo mejor posible la máquina hardware La extensión de un programa Assembler es muy compleja. A continuación son ilustrados brevemente todos los elementos y los conceptos que están 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 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. Instrucciones Son 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). Etiquetas (Label)
Ejemplo: Label
OpCode Operands
START: MOV AX,BX CMP AX,45h
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 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ón Operandos (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 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 máquina 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 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
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 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). Un programa escrito en Assembly 8086 Ejemplo de programa: está compuesto por Statements; SEGMENT normalmente cada uno de los mismos CODE ocupa una línea hasta un o un par ASSUME CS:CODE, DS:CODE ORG 0H .. PROGR: MOV AL,0FFH ;data for segments OFF Un statement puede proseguir sobre la MOV DX,0010H ;7-segment address OUT DX,AL ;out data línea sucesiva, si esta empieza con el caracter ’&’. MOV AX,1000 ;1000 milliseconds El conjunto de los caracteres utilizables INT 1CH ;wait está compuesto por: MOV AL,00H ;data for segments ON - caracteres alfanuméricos (mayúsculas, MOV DX,0010H ;7-segment address minúsculas, cifras), OUT DX,AL ;out data - caracteres no imprimibles (espacio, TAB, , MOV AX,1000 ;1000 milliseconds - caracteres especiales (+ - * / = () ...) INT 1CH ;wait En el interior del programa pueden JMP PROGR ;loop aparecer: CODE ENDS – Identificadores END PROGR – Constantes – Expresiones Identificadores Son 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. Constantes Se pueden utilizar constantes: binarias: 001101B 001101 B 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. Expresiones
Se 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).
Instrucciones
El 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.
Instrucciones para el Control del Procesador OpCode
Modificación de los Flag
Sincronización
Instrucción Nula
Descripción
CLC
Clear Carry Flag
CLD
Clear Direction Flag
CLI
Clear Interrupt-Enable Flag
CMC
Complement Carry Flag
STC
Set Carry Flag
STD
Set Direction Flag
STI
Set Interrupt Enable Flag
ESC
Escape
HLT
Halt
LOCK
Lock the Bus
WAIT
Wait
NOP
No Operation
4.4 Modos de Dirección 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: en registros; en la instrucción misma; en la memoria; sobre una puerta de I/O. Los Modos de Dirección pueden ser reagrupados en 7 clases: Register; Immediate; Direct; Register Indirect; Base Relative; Direct Indexed; Base Indexed.
Son descritos a continuación. Register Addressing
En la instrucción está especificado el registro para utilizar como operando.
Formato Assembler: < Registro> Registro>
Ejemplo: MOV AX,BX
Formato Assembler: expresión>
Ejemplo: MOV AX,(5*8)/10
Formato Assembler: ±± >
Ejemplo: MOV AX,TABLE+10
Immediate Addressing
En la instrucción misma está indicado el dato para utilizar como operando. Direct Addressing
En 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.
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 instrucción está indicado donde encontrar la dirección del operando. Base Relative Addressing Formato Assembler: El Effective Address del [+ registro>+]] 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. Direct Indexed Addressing Formato Assembler: El Effective Address del [SI] variable>[SI] operando es calculado [DI] 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 [BX]+[SI] variable>[BX]+[SI] operando es calculado como [BX]+[DI] variable>[BX]+[DI] suma de los siguientes [BP]+[SI] variable>[BP]+[SI] términos: [BP]+[DI] 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 instrucción 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 P rograma El proceso de creación de un programa Assembly pasa a través de las siguientes fases: 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.
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:
Página 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 operación directamente en el interior del ambiente de desarrollo.La figura siguiente muestra un ejemplo.
Página blanca
4.7 Asemblamiento de un programa 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 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.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 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:
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.
4.9 Verificación de funcionamiento de un programa (Debug) 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: Trasferencia manual
En 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 E24 Se 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. 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: 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.
Página blanca
© 1996 - 201 2 DE LORENZO SPA - Printed in Italy Italy - All right right reserved reserved DE LORENZO SPA V.le Romagna, 20 - 20089 Rozzano (MI) Italy Tel. ++39 02 8254551 - Fax ++39 02 8255181 E-mail: [email protected] Web sites sites: www.delorenzoglobal www.delorenzoglobal.com .com - www.technical-education.it www.delorenzoenergy.com