Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROPROCESADORES
“EL COPROCESADOR
ARITMETICO”
Último Coprocesador
vendido por Intel
de forma individual
Características
• El coprocesador se programa de forma similar al
procesador.
• Las instrucciones del coprocesador inician por la letra F
para diferenciarlas de las del procesador.
Procesador Coprocesador
ADD FADD
MUL FMUL
SUB FSUB
Formato de datos
• Los tipos de datos utilizados en los miembros de la
familia 80X87 incluyen:
Números enteros con signo
Números en BCD
Entero corto
31 0
S Magnitud
Entero largo
63 0
S Magnitud
Formato de datos
Ejemplo: Definición enteros con signo
Address Assembled Code Pseudo Code Comments
0000 0002 DATA1 DW +2 ; Entero de 16 bits
0002 FFDE DATA2 DW -34 ; Entero de 16 bits
0004 000004D2 DATA3 DD +1234 ; Entero corto
0008 FFFFFF9C DATA4 DD -100 ; Entero corto
000C 0000000000005BA0 DATA5 DQ +23456 ; Entero largo
0014 FFFFFFFFFFFFFF86 DATA6 DQ -122 ; Entero largo
Formato de datos
• Números en BCD
• Requiere 80 bits de memoria
ocupan 72 bits.
79 71 0
S x ..x D D D
17 16 15 D D D D D D D D D D D D D D D0
14 13 12 11 10 9 8 7 6 5 4 3 2 1
Bits no
utilizados
Formato de datos
• En formato BCD tanto los números positivos como
negativos se guardan en binario original y nunca en la
forma de complemento de diez.
F 0 F +
+
Exponent Exponent Exponent Exponent
Overflow Underflow Underflow Overflow
Not all real numbers in the Not all real numbers in the
range are representable range are representable
Page 13
Representación
Si consideramos por ejemplo un sistema de punto flotante
sencillo basado tan solo en:
dos bits de mantisa,
un exponente base 2 con rango [-2, 0],
un bit de signo y
un gap normalizado para los números en punto flotante entre
-4/16 a 4/16
Representación
Por ejemplo, para S = 0 (numero positivo), E = ‒2 y
b1b0 = 00
(-1)0 . (20 + 0.2-1 + 0.2-2) . 2-2 = 1 . (1) . 1/4 = 1/4 = 4/16
b1b0 = 01
(-1)0 . (20 + 0.2-1 + 1.2-2) . 2-2 = 1 . (1 + 1/4) . 1/4 = 5/16
b1b0 = 10
(-1)0 . (20 + 1.2-1 + 0.2-2) . 2-2 = 1 . (1 + 1/2) . 1/4 = 6/16
b1b0 = 11
(-1)0 . (20 + 1.2-1 + 1.2-2) . 2-2 = 1 . (1 + 1/2 + 1/4) . 1/4 = 7/16
Page 15
Representación
Vemos que todos los posible números caen en la recta
real mostrada a continuación:
Números negativos normalizados en punto flotante Números positivos normalizados en punto flotante
31 30 23 22 0
S Exponente Mantisa
.
63 62 52 51 0
S Exponente Mantisa
.
79 78 64 63 0
S Exponente 1 Mantisa
.
Representación
Ejemplo: Convertir el decimal 120.375 en un
número decimal de punto flotante de precisión
sencilla.
Solución:
Paso Resultado
1 120.37510 = 1111000.0112
2 1111000.0112 = 1.1110000112 x 210 +6
3 000001102 + 011111112 = 100001012
S Exponente Mantisa
4 0 10000101 11100001100000000000000
Representación
Ejemplo: Convertir un número de punto
flotante de precisión sencilla en un número
decimal.
Solución:
Paso Resultado
S Exponente Mantisa
1 1 10000111 10011011010000000000000
2 100001112 – 011111112 = 000010002
3 1.10011011012 x 210+8
4 110011011.012
5 -411.2510
Representación
• Los números en punto flotante se guardan en
memoria con el ensamblador utilizando las
directivas DD, DQ y DT.
• Ejm:
DATO7 DD -569.3
DATO8 DD 2.5
DATO9 DD 3.58E+7
DATO10 DQ 114.725
DATO11 DQ 0.00012056
DATO12 DT 563.78512
Representación
• Los números en punto flotante se guardan en
memoria con el ensamblador utilizando las
directivas DD, DQ y DT.
• Ejm:
DATO7 DD -569.3
DATO8 DD 2.5 Precisión
DATO9 DD 3.58E+7 sencilla
DATO10 DQ 114.725 Doble precisión
DATO11 DQ 0.00012056
DATO12 DT 563.78512 Precisión
extendida
Representación
• Los valores a ser representados en punto flotante pueden
ser divididos en:
ceros
números normalizados
números desnormalizados
infinitos
NaN ¬E, no es un número, (la raíz cuadrada de un número
negativo)
Clase Exp Fracción
Ceros 0 0
Números
0 distinto de 0
desnormalizados
Números normalizados 1-254 cualquiera
Infinitos 255 0
NaN (Not a Number) 255 distinto de 0
Aritmética en Punto Flotante
• SUMA
Tomando como ejemplo la suma de dos datos base 10
en punto flotante con:
2 dígitos para el Exponente y
4 dígitos para la Mantisa.
Aritmético 37
CLK286 D4
19
18
D5
Intel 80287 2
S0 D6
17
1 16
S1 D7
15
D8
38 14
HLDA D9
36 12
PEACK D10
39 11
CKM D11
8
D12
27 7
NPRD D13
28 6
NPWR D14
5
D15
34
NPS1
33 26
NPS2 ERROR
25
OCUPADO
29
24
CMD0 PEREQ
31
CMD1
3
COD/INTA
La arquitectura del 80X87
• Definición de terminales del 80287
CLK Entrada de reloj
CLM Modo de reloj
CLK286 Entrada de reloj del 80286
RESET Entrada de reinicialización
D15-D0 Canal de datos
BUSY Salida de ocupado
ERROR Salida de error
La arquitectura del 80X87
PEREQ Solicitud de transferencia de datos del operando.
Coprocesador listo para Tx
PEACK La solicitud PEREQ fue reconocida por el µP
NPRD Lectura (RD) del coprocesador
NPWR Escritura (WR) del coprocesador
NPS1,NPS2 Seleccionar coprocesador
CMD1,CMD0 Líneas de comando. Operaciones del coprocesador
HLDA Reconocimiento de cesión del canal
COD/INTA Reconocimiento de código/interrupción
Vcc y Vss Suministro alimentación y tierra
Arquitectura del 8087 y 80287
UNIDAD DE UNIDAD DE CANAL DE FRACCION
CANAL DE
CONTROL EJECUCION EXPONENTE
NUMERICA
PALABRA DE CONTROL MODULO DE UNIDAD DE
PALABRA DE ESTADO EXPONENTE CONOCIMIENTO
PROGRAMABLE
MODULO
ARITMETICO
MEMORIA UNIDAD DE
DATOS CONTROL DE
(BUFFER) MICROCODIGO
REGISTROS
DE TEMPORALES
DATOS COLA DE
ST0
REGISTRO DE ETIQUETAS
OPERANDOS
ST1
ST2 PILA
ST3
ESTADO DE
ST4
DIR Y RASTREO DEL REGISTROS
CANAL ST5
DIRECCION ST6
APUNTADORES DE
EXCEPCION ST7
80 bits
Arquitectura del 80287
Registro de Estado:
15 7 0
B C3 ST C2 C1 C0 IR PE UE OE ZE DE IE
Subnormal = bits
iniciales de la
mantisa son cero
Anormal = el
exponente en su
valor más negativo
Normal = forma
estándar de punto
decimal flotante
NAN ( no es un
número) = un
exponente de unos
y una mantisa que
no es igual a cero
Arquitectura del 80287
• Registro de control
15 7 0
IR RC PC IEM PM UM OM ZM DM IM
IM = Operación no valida
DM = Operando fuera de lo normal
ZM = Dividir/Cero
OM = Sobreflujo
UM = Subflujo
PM = Precisión
IEM = Enmascaramiento de habilitación de interrupción.
PC = Control de precisión
IC = Control de infinito
Arquitectura del 80287
Enmascaramiento de habilitación de interrupciones
0 = Interrupciones habilitadas
1 = Interrupciones deshabilitadas (enmascarada)
Control de precisión
00 = 24 bits
01 = (reservado)
10 = 53 bits
11 = 64 bits
Control de redondeo
00 = Redondear al mas cercano o par
01 = Redondear hacia abajo (hacia -)
10 = Redondear hacia arriba (hacia +)
11 = Recortar (truncar hacia cero)
Control de infinito
0 = Proyectivo
1 = Afinidad
Arquitectura del 80287
• Registro de Etiquetas
Indica el contenido de cada localidad de la pila del
coprocesador
15 0
ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA ETIQUETA
(0) (1) (2) (3) (4) (5) (6) (7)
Valores de Etiqueta
00 = Valido
01 = Cero
10 = Invalido o Infinito
11 = Vacio
EJEMPLO 1
• AREA DEL CIRCULO A = R2
AREA RADIO2
AREA PROC FAR
FLD RADIO
FMUL ST,ST(0)
ST(0) ST
FLDPI
ST(1)
FMUL ST(2)
FSTP AREA ST(3)
FWAIT ST(4) ...
RET
AREA ENDP
EJEMPLO 2
• FRECUENCIA RESONANTE F = 1/ 2 LC
.286
.287
DATA SEGMENT
FR DD ?
L DD 0.00001
C DD 0.00001
TWO DD 2.0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,
DS:DATA
FRES PROC FAR
MOV AX,@DATA
MOV DS,AX
. . . (continua)
EJEMPLO 2
• FRECUENCIA RESONANTE F = 1/ 2 LC
. . . (continuación)
FLD L
FMUL C
FSQRT
FMUL TWO
FLDPI
FMUL
FLD1
FDIVR
FSTP FR
FWAIT
RET
FRES ENDP
CODE ENDS
END
EJEMPLO 2
• FRECUENCIA RESONANTE