Vous êtes sur la page 1sur 82

MICROPROCESADOR DE 32 BIT

DL 3155E24
GUÍ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.

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

Acumulador Es el registro principal del microprocesador para la manipulación de los


datos.
Normalmente cualquier operación aritmético/lógica prevé la presencia de un
operando en el acumulador.
El acumulador trabaja con la misma longitud de palabra de datos usada por el
microprocesador, por lo que un microprocesador de 32 bit tendrá un
acumulador de 32 bit.
Registro de 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.

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 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 Como EAX también EBX puede ser usado como EBX, BX, BH y BL.
base index El registro EBX es utilizado paa la dirección de la memoria en todas las versionas
de los microprocesadores Intel.

ECX Es un registro de uso general que es utilizado para la cuenta en diferentes


count 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 Registro de uso general que sirve también para memorizar parte del resultado en
data 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 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 Puede ser utilizado como registro de uso general de 32 bit (EDI) o como registro de
destination 16 bit (DI).
index 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 Individua una sección de memoria donde son presentes los datos utilizados por el
data 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 Individua un segmento de datos adicional, a menido útil en las operaciones como en las
extra cadenas.

SS Individua el area de memoria utilizada para el stack del microprocesador.


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

FS e Registros de segmento adicionales para poder acceder contemporaneamente a dos


GS 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.
P (parity) La igualdad individua el número de 1 presentes en un número.
Vale 0 (igual impares) si el negro de 1 es impar, vale 1 (igual
pares) si el número de 1 es igual.
A (auxiliary carry) Memoriza la relación (carry) en las operaciones de suma o el
préstamo (borrow) en aquellas de resta, relativa a las posiciones
3 y 4 del resultado. Es usado en las operaciones con números
BCD.
Z (cero) Indica si el resultado de una operación es cero. Vale 1 si el
resultado es 0, vale 0 en los otros casos.
S (sign) Indica el signo del resultado de una operación matemática o
lógica. Vale 1 si el signo es negativo, mientras vale 0 si el signo
es positivo.
T (trap) Es usado en las operaciones de debug para la verificación del
funcionamiento de los programas.
I (interrupt) Controla las operaiones del pin de entrada INTR. Si I=1 el pin
está habilitado para generar interrupciones, si está a 0 las
interrupciones son bloqueadas.
D (direction) Selecciona la modalidad de incremento o decremento para los
registros DI y SI durante las instrucciones de cadena. Si D=1 los
registros son automáticamente decrementados, mientras si D=0
son automáticamente incrementados.
O (overflow) Indica que una operación h generado un overflow (es decir un
número que excede las capacidades de la máquina).
IOPL (in/out 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.
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 Register
Register MOV AX,BX
BX AX
Register
Immediate MOV CH,3AH Data 3AH
CH
Memory
Register DS*10H + DISP
Direct MOV [1234H],AX Address
AX 10000H + 1234H
11234H
Memory
Register DS*10H + BX
Register Indirect MOV [BX],CL Address
CL 10000H + 0300H
10300H
Memory
Register DS*10H + BX + SI
Base-plus-index MOV [BX+SI],BP Address
SP 10000H + 0300H + 0200H
10500H
Memory
DS*10H + BX + 4 Register
Register relative MOV CL,[BX+4] Address
10000H + 0300H + 4 CL
10304H
DS*10H + ARRAY + BX
Memory
Base relative-plus- MOV ARRAY Register + SI
Address
index [BX+SI],DX DX 10000H + 1000H + 0300H
11500H
+ 0200H
DS*10H + EBX + 2 * ESI Memory
MOV Register
Scaled index 10000H + 00000300H + Address
[EBX+2*ESI],AX AX
00000400H 10700
EBX = 00000300H, ESI = 00000200H, ARRAY = 1000H, DS = 1000H
La ilustración detallada de los diferentes modos de dirección está indicada a continuación.

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

Immediate Transfiere un byte (8 bit), una palabra (16 bit) o una doble palabra (32 bit) que
Addressing 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 Relative- Transfiere 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]
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 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 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
B
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

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 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 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 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 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 Port1 for input
MOV AL, 0FFH
MOV DX, P1LTC ;data-latch register
OUT DX, AL
MOV AL, 0FFH ;1111 1111 1=In, 0=Out
MOV DX, P1DIR ;direction register
OUT DX, AL
MOV AL, 000H ;0000 0000 0=I/O pin
MOV DX, P1CFG ;configuration register
OUT DX, AL

MOV DX,P1PIN ;Status register


IN AL,DX ;read port
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 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:
Reset Señal de reset del microprocesador (activo alto).
UCS Señal de habilitación de la EPROM de sistema (M4)
CS0 Señal de habilitación de la EPROM de usuario (M3)
CS1 Señal de habilitación de las RAM
CS2 Señal de habilitación del display LCD
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 Fig. 3.2.1
periféricas del sistema y serán descritas en las páginas siguientes.
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).

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 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 AD-
2) gestionados por un único convertidor A/D.

Se usa el convertidor A/D TLC0832, que es un convertidor de tipo de serie


con N.2 canales de entrada.
La conexión en el microprocesador es hecho a
través de N.4 líneas de I/O:
- la línea P3.4 manda el CS del convertidor
- la línea P3.6 (DOUT del bus de serie) manda la
línea DI del convertidor
- la línea P3.5 (DIN del bus de serie) lee los datos
de la línea DO del convertidor
- la línea P3.7 (SCLK del bus de serie) mando de
la entrada de clock del convertidor.

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 manda el CS del
convertidor
- la línea P3.6 (DOUT del bus de
serie) manda la línea DIN del
convertidor
- la línea P3.7 (SCLK del bus de
serie) mando de la entrada de clock
del convertidor.

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 BUS

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

INT0 Señal de interrupción ocultable N.0


INT1 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.
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 Ejemplo:
máquina. Cada instrucción está compuesta en general por: Label OpCode Operands
START: MOV AX,BX
- una Etiqueta (o Label) CMP AX,45h
- un Código Operativo (o Operation Code)
- uno o más Operandos (o Operands).
Etiquetas (Label)
Son identificadores de una instrucción; el montador las sustituye con la dirección de la
instrucción que representan.
Ofrecen las siguientes ventajas:
- permiten encontrar con más facilidad un punto del programa
- permiten no tener nada que ver con las direcciones físicas
- facilitan la modificación del programa.
Código Operativo (OpCode)
Es el mnemonico de una instrucción assembler: en otros términos especifica la operación que
debe ser efectuada por la CPU.
Es el único campo que nunca puede faltar en una instrucció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 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 SEGMENT PARA PUBLIC 'DATA'


SUB1 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 <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 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;
normalmente cada uno de los mismos CODE SEGMENT
ocupa una línea hasta un <LF> o un par ASSUME CS:CODE, DS:CODE
ORG 0H
<CR><LF>.. PROGR: MOV AL,0FFH ;data for segments OFF
Un statement puede proseguir sobre la MOV DX,0010H ;7-segment address
línea sucesiva, si esta empieza con el OUT DX,AL ;out data
caracter ’&’.
MOV AX,1000 ;1000 milliseconds
El conjunto de los caracteres utilizables INT 1CH ;wait
está compuesto por:
- caracteres alfanuméricos (mayúsculas, MOV AL,00H ;data for segments ON
minúsculas, cifras), MOV DX,0010H ;7-segment address
- caracteres no imprimibles (espacio, OUT DX,AL ;out data
TAB, <CR>, <LF> MOV AX,1000 ;1000 milliseconds
- caracteres especiales (+ - * / = () ...) INT 1CH ;wait
En el interior del programa pueden
aparecer: JMP PROGR ;loop
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
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.
4.3 Instrucciones
Son enumeradas en esta página las instrucciones más importantes de los microprocesadores Intel.
Para una descripción detallada de las instrucciones hágase referencia a la sección relativa a
Instrucciones y programación de los microprocesadores Intel en la documentación on-line,
reclamable con el link 'manuals' arriba en esta página.

Instrucciones de Trasferencia de Datos


OpCode Descripción
Uso general MOV Move (Byte or Word)
POP Pop a Word onto Stack
PUSH Push Word onto Stack
XCHG Exchange Register
XLAT Translate
Input/Output IN Input Byte or Word
OUT Output to Port
Trasformación LDS Load Pointer Using DS
de direcciones LEA Load Effective Address
LES Load Pointer Using ES
Trasformación LAHF Load Register AH From
Flag register SAHF Store register AH into
POPF Pop Flags from the Stack
PUSHF Push Flags onto Stack

Instrucciones Aritméticas
OpCode Descripción
Suma AAA ASCII Adjust after Addition
ADC Add with Carry
ADD Addition
DAA Decimal Adjust after Addition
INC Increment
Resta AAS ASCII Adjust after Subtraction
SUB Subtract
SBB Subtract with Borrow
DAS Decimal Adjust after Subtraction
DEC Decrement
CMP Aparece
NEG Negate
Multiplicación AAM ASCII Adjust after Multiply
IMUL Integer Multiply, Signed
MUL Multiply, Unsigned
División AAD ASCII Adjust before Division
DIV Divide, Unsigned
IDIV Integer Divide, Signed
Conversión CBW Convert Byte to Word
CWD Convert Word to Doubleword

Instrucciones para la Manipulación de Bit


OpCode Descripción
Lógicas AND Logical AND
OR Logical OR
XOR Exclusive OR
NOT Logical NOT
TEST Test
De Traslación SAL Shift Arithmetic Left (=SHL)
SAR Shift Arithmetic Right
SHL Shift Logical Left (=SAL)
SHR Shift Logical Right
Di Rotazione ROL Rotate Left
ROR Rotate Right
RCL Rotate through Carry Left
RCR Rotate through Carry Right

Trasferencia del control


OpCode Descripción
Saltos incondicionados CALL Call Procedure
RET Return from Procedure
JMP Jump Unconditionally
Salti condizionati JA, JNBE Jump If Above
JAE, JNB Jump If Above or Equal
JB, JNAE, JC Jump If below
JBE, JNA Jump If below or Equal
JCXZ Jump if CX Register Zero
JE, JZ Jump if Equal
JG, JNLE Jump if Greater
JGE, JNL Jump if Greater or Equal
JL, JNGE Jump if Less
JLE, JNG Jump if Less or Equal
JNC Jump if No Carry
JNE, JNZ Jump if Not Equal
JNO Jump if No Overflow
JNP, JPO Jump if No Parity
JNS Jump if No Sign
JO Jump if Overflow
JP, JPE Jump if Parity
JS Jump if Sign
Instrucciones iterativas LOOP Loop on Count
LOOPE, LOOPZ Loop While Equal
LOOPNE, LOOPNZ Loop While Not Equal

Instrucciones para la Manipulación de Cadenas


OpCode Descripción
Instrucciones de Desplazamiento MOVS Move String (Byte or Word)
MOVSB Move String Byte
MOVSW Move String Word
Instrucciones de Confronto CMPS Aparece String (Byte o Word)
CMPSB Aparece String Byte
CMPSW Aparece String Word
Instrucciones de Búsqueda SCAS Scan String (Byte o Word)
SCASB Scan String Byte
SCASW Scan String Word
Instrucciones de Carga LODS Load String (Byte or Word)
LODSB Load String Byte
LODSW Load String Word
Instrucciones de Escritura STOS Store String (Byte or Word)
STOSB Store String Byte
STOSW Store String Word
Prefijos de repetición
OpCode Descripción
Prefijos de repetición REP Repeat
REPE Repeat While Equal
REPNE Repeat While Not Equal
REPNZ Repeat While Not Zero
REPZ Repeat While Zero

Instrucciones para la Manipulación de las Interrupciones


OpCode Descripción
Manipulación de Interrupciones INT Interrupt
INTO Interrupt on Overflow
IRET Interrupt Return
Instrucciones para el Control del Procesador
OpCode Descripción
Modificación de los Flag 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
Sincronización ESC Escape
HLT Halt
LOCK Lock the Bus
WAIT Wait
Instrucción Nula 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á Formato Assembler: Ejemplo:
especificado el registro para <Registro> MOV AX,BX
utilizar como operando.

Immediate Addressing
En la instrucción misma está Formato Assembler: Ejemplo:
indicado el dato para utilizar <expresión> MOV AX,(5*8)/10
como operando.

Direct Addressing
En la instrucción está Formato Assembler: Ejemplo:
especificado el nombre de una <variable>±<expresión> MOV AX,TABLE+10
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
El Effective Address del Formato Assembler: Ejemplo:
operando está contenido en [<registro>] MOV AX,[BX]
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
El Effective Address del Formato Assembler: Ejemplo:
operando es claculado [<registro>+<displacement>] MOV AX,[BX+4]
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
El Effective Address del Formato Assembler: Ejemplo:
operando es calculado <variable>[SI] MOV AX,TABLE[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
El Effective Address del Formato Assembler: Ejemplo:
operando es calculado como <variable>[BX]+[SI] MOV AX,TABLE[BX][DI]
<variable>[BX]+[DI]
suma de los siguientes <variable>[BP]+[SI]
términos: <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.
4.5 Fases del desarrollo de un Programa
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 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 - 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

Vous aimerez peut-être aussi