Académique Documents
Professionnel Documents
Culture Documents
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
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.
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.
Fig. 2.1.1
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:
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
Fig. 2.1.1
Los registros de uso general pueden también ser
usados como registros de 8 y 16 bit.
Fig. 2.1.1
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.
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.
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.
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.
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 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.
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.
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.
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
Fig. 2.1.1
Las características principales de este microprocesador pueden así ser brevemente resumidas:
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.
Fig. 2.3.1
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.
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.
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.
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.
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.
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:
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
Objetivos: Saber:
la estructura del Módulo Microprocesador de 32 bit DL 3155E24
sus componentes
su uso.
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 .
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.
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.
Fig. 3.3.1
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.
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.
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.
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.
RESET
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.
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.
Objetivos: Conocer:
la programación de los microprocesadores Intel
las modalidades de desarrollo de programas aplicativos para el
módulo Microprocesador de 32 bit
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:
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).
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 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
Register;
Immediate;
Direct;
Register Indirect;
Base Relative;
Direct Indexed;
Base Indexed.
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.
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:
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