Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
101
102 Leccin 3. Variaciones sobre representacin y procesamiento
dir. byte
3.2. Memoria principal y registros 0
palabra de direccin 0
1
Antes de entrar en los convenios sobre la repre- 2
palabra de direccin 2
3
sentacin binaria de los datos conviene tener pre-
sentes algunas caractersticas de los contenedo-
res de esos datos: la MP y los registros.
16
palabra de direccin 16
17
Bits, bytes y palabras
Sabemos (Apartado 0.8) que la unidad elemen-
tal de almacenamiento de la informacin es el bit. (a) palabras con direccin siempre par
Tambin, que en cada acceso a la MP se lee o se
dir. byte
escribe un conjunto de bits llamado palabra. En 0
palabra 0 doble
Smplez y Smplez+i4 la longitud de la palabra es 1
palabra 1 palabra 0
2
de doce bits. Pero, generalmente, los bits se agru- palabra 2
3
pan en conjuntos de ocho, y a uno de estos conjun-
tos se le llama octeto, o, ms habitualmente, byte.
La longitud de la palabra suele ser de uno, dos, 17
palabra 17
cuatro u ocho bytes (8, 16, 32 o 64 bits), y es igual 18
preciso hacer la conversin del sistema decimal al plemento a 9 y complemento a 10, similares a los
binario cada vez que se introduce un dato en el or- complementos a 1 y a 2. Par ms detalles vase el
denador, y a la inversa. Esto es conveniente si el Apndice A.
volumen de clculos a realizar es muy superior al
de las operaciones de entrada y salida; pero si stas
Nmeros reales
son muy frecuentes, y los clculos son reducidos,
entonces interesa ms tener los nmeros represen- Para la representacin de nmeros reales con
tados en decimal (con un cdigo BCD, vase el una cantidad finita de bits hemos de tener en cuen-
Apartado A.1) y realizar las operaciones aritmti- ta que no slo habr una extensin finita (un n-
cas en decimal. mero mximo y un nmero mnimo), sino tambin
Si la codificacin de cada dgito decimal ocu- una resolucin (diferencia entre dos representacio-
pa cuatro bits (un cuarteto), la representacin (sin nes consecutivas) finita, es decir, hay que hacer
signo) de un nmero de n dgitos ocupar n cuar- una discretizacin del espacio continuo de los n-
tetos, es decir, n/2 bytes. Esta representacin se meros reales.
llama empaquetada: cada byte contiene un pa- En principio, con un formato de coma fija pue-
quete de dos dgitos. Como ya hemos visto en el den representarse tambin nmeros reales: basta
Apartado 1.12, en las transferencias entre la UCP con aadir el convenio sobre dnde est la co-
y los perifricos los dgitos decimales (como los ma. Si, por ejemplo, tenemos una longitud de 32
otros caracteres) estn codificados con ocho bits bits, podramos convenir que los 16 primeros re-
(con un cdigo ISO, que coincide con ASCII con presentan la parte entera y los 16 siguientes la par-
un cero a la izquierda), y la conversin entre este te fraccionaria. Pero la rigidez que resulta es evi-
cdigo y BCD es muy fcil: como puede verse en dente: para conseguir la mxima extensin, el pro-
la Tabla A.2, ASCII(n) = BCD(n) + 48. Un pro- gramador tendra que poder decidir dnde se en-
grama que lea sucesivamente dgitos del teclado cuentra la coma, en funcin de que est trabajando
puede ir haciendo esta conversin sobre la mar- con nmeros muy grandes o muy pequeos. Aun
cha, y guardando en la MP las codificaciones en as, la extensin que se consigue puede ser insufi-
BCD, en bytes sucesivos. Resulta as una repre- ciente: con 32 bits, el nmero mximo representa-
sentacin en la que cada dgito ocupa un byte, que ble (todos unos y la coma a la derecha del todo)
se llama decimal desempaquetado, que ocupa el sera 231 1 2 109 , y el mnimo positivo (co-
doble de bits que la versin empaquetada. La Fi- ma a la izquierda y todos ceros salvo el bms)
gura 3.4 muestra un ejemplo. sera 231 2 1010
15 0 Por esto, lo ms comn es utilizar un formato
1001 1000 0111 0110
llamado de coma flotante, mucho ms flexible,
decimal empaquetado con ms extensin, y que libera al programador de
31 0
la necesidad de conocer en todo momento el orden
0000 1001 0000 1000 0000 0111 0000 0110
de magnitud de los datos. Consiste en representar
decimal desempaquetado
los nmeros dando tres informaciones, que se co-
difican en tres campos (grupos de bits) indepen-
Figura 3.4 Representacin en BCD de D9.876. dientes: N (signo del nmero, 1 bit), M (mantisa,
m bits) y E (exponente de una base, b, implcita
Para representar nmeros negativos se puede re- en el convenio, e bits), de modo que el nmero X
servar un bit, o, ms frecuentemente, un cuarteto, representado sea:
o, a veces, un byte (Ejercicio 6) para el signo. Hay
convenios de signo y magnitud, y tambin de com- X(b) = M(b) bE
108 Leccin 3. Variaciones sobre representacin y procesamiento
31 23 0
As, tendremos menos bits significativos (debido a b
los e bits reservados para el exponente), pero con N C M m
s
el factor de escala bE podemos conseguir una ex-
tensin grande. Figura 3.5. Formato de coma flotante con n = 32 bits.
Como ejemplo, la Figura 3.5 presenta un forma-
to tpico con 32 bits, de los que uno es para el signo n lugares a la izquierda o a la derecha, respecti-
(N ), e = 7 para el exponente (este campo se llama vamente. En cualquier caso, interesa, para que la
C en la figura por el motivo que ahora veremos) resolucin sea mxima, que M contenga el ma-
y m = 24 para la mantisa (M ). La extensin de yor nmero de dgitos significativos, lo que ocu-
E, como tiene siete bits, es de 0 a 27 1 = 127, o, rre cuando el primer dgito de M por la izquierda
con un convenio adecuado para representar nega- no es nulo; se dice entonces que la representacin
tivos (por ejemplo, dejar uno de los siete bits para est normalizada. Y para que la representacin,
el signo, y el resto en complemento a 2), de 64 a adems de normalizada, sea nica, se fija por con-
63. Si b = 2, resulta que el factor de escala puede venio la posicin de la coma; los criterios que ge-
variar entre 264 5 1020 y 263 1019 . neralmente se siguen son:
Sobre esta idea general existen numerosas va- Normalizacin entera, o coma a la derecha:
riantes que resumimos a continuacin. M representa un nmero entero.
Normalizacin fraccionaria, o coma a la iz-
Base del convenio
quierda: M representa un nmero menor que
La base implcita suele ser 2 o (ms raramente, la unidad, es decir, la coma est a la izquierda.
vase el Ejercicio 7) 16, pero podra ser otra cual- Si b = 2, D0,5 M < 1, puesto que el primer
quiera. Por ejemplo, si fuese b = 10 tendramos bit de M tiene que ser 1 (a veces, como ve-
un formato BCD (puesto que los dgitos decimales remos luego en el formato IEEE 754, se omite
de M se representarn internamente en binario) en la representacin explcita de ese bit).
coma flotante. El nmero 0 no se puede normalizar. Se con-
viene en representarlo por todos los bits del for-
Representacin de la mantisa
mato nulos.
Naturalmente, los dgitos en base b de M se re- Veamos un ejemplo. Supongamos que b = 16,
presentarn siempre internamente en binario. As, que se dispone de 24 bits para la mantisa (24/4 = 6
si X = D0,7 tendremos: dgitos hexadecimales), y que se trata de represen-
Con b = 2: D0,7 = H0,B33... = tar el nmero :
B0,101100110011...20 X = = D3,1415926...= H3,243F69A...
Con b = 16: D0,7= H0,B33...160 Consideremos primero el caso de normalizacin
(la mantisa se representara igual que en el caso entera; tendramos las siguientes posibilidades:
anterior) M E Nmero representado
Con b = 10: D0,7 = D0,7100 000003 0 H3160 = H3 = 3
000032 -1 H32161 = H3,2 = 3,125
y la mantisa sera 0,0111, puesto que el cdigo
000324 -2 H324162 = H3,24 = 3,140625
BCD de 7 es 0111. 003243 -3 H3243163 = H3,243 = 3,1413574
En principio, la representacin mediante una 03243F -4 H3243F164 = H3,243F = 3,1415863
3243F6 -5 H3243F6165 = H3,243F6 = 3,141592
mantisa y un exponente de una base implcita por
convenio no es nica, puesto que si se incrementa La ltima es la representacin normalizada; es la
o se decrementa E en n unidades, entonces se tie- que tiene ms dgitos significativos, y, por tanto,
ne el mismo nmero desplazando la coma en M mayor precisin.
3.3. Representacin de los tipos elementales de datos 109
Con normalizacin fraccionaria: ni lo puede estar en este caso, porque cada incre-
mento o decremento de E corresponde a un des-
M E Nmero representado plazamiento de cuatro bits en M .
000003 6 H0,000003166 = H3 = 3
Si cambiamos uno de los elementos del conve-
000032 5 H0,000032165 = H3,2 = 3,125
... ... ... nio, la base, y suponemos ahora que es 2, al nor-
3243F6 1 H0,3243F6161 = H3,243F6 = 3,141592 malizar la mantisa resulta:
H3,243F6A... =
y, como antes, la ltima es la representacin nor- B11,001001000011111101101010... =
malizada. B0,11001001000011111101101010...22
La caracterstica es ahora C = 2 + 64. Truncan-
Representacin de nmeros negativos do a 24 los bits de la mantisa obtenemos:
Como en el caso de coma fija, un bit, normal- 0 1000010 1100 1001 0000 1111 1101 1010
mente el primero de la izquierda, indica, si es 0, Vemos que al normalizar en binario ganamos dos
que el nmero es positivo, y si es 1, que es ne- dgitos significativos en la mantisa.
gativo. Se pueden seguir tambin los convenios de El mismo nmero pero negativo (), con con-
signo y magnitud, complemento a 1 o complemen- venio de complemento a 2, se representara en el
to a 2. En los dos ltimos casos puede convenirse primer caso (b = 16) como:
en complementar slo los bits reservados para la 1 1000001 1100 1101 1011 1100 0000 1010
mantisa (esto es lo ms frecuente), o todos. y en el segundo (b = 2):
1 1000010 0011 0110 1111 0000 0010 0110
Representacin del exponente
El inconveniente de la base 16 es que la man-
En los e bits reservados para el exponente puede
tisa no siempre se puede normalizar en binario, y
seguirse tambin el convenio de reservar uno para
esto tiene dos consecuencias: por una parte, como
el signo y los e 1 restantes para el mdulo, o el
hemos visto, pueden perderse algunos bits (1, 2
complemento a 1 o a 2 si E < 0. Pero el convenio
o 3) con respecto a la representacin con base 2;
ms utilizado no es ste, sino el de la representa-
por otra, hace algo ms compleja la realizacin de
cin en exceso de 2e1 : el nmero almacenado en
operaciones aritmticas. La ventaja es que, con el
esos e bits, llamado caracterstica, es:
mismo nmero de bits reservados para el exponen-
C = E + 2e1
te, la escala de nmeros representables es mayor.
Dado que 0 C 2e 1, los valores repre-
Concretamente, para e = 7 el factor de escala, con
sentables de E estarn comprendidos entre 2e1
b = 2, va, como vimos ms arriba, de 264 a 263
(para C = 0) y 2e1 1 (para C = 2e 1).
(o, aproximadamente, de 5 1020 a 1019 ), mien-
Como ejemplo, veamos la representacin del tras que con b = 16 va de 1664 a 1663 (aproxi-
nmero en el formato de la Figura 3.5, su- madamente, de 1077 a 1076 ).
poniendo que el exponente est en exceso de
64 con base 16 y que la mantisa tiene normali- Formatos IEEE 754
zacin fraccionaria. De acuerdo con lo que he- Con los objetivos de facilitar la portabilidad7
mos explicado antes, la mantisa ser H3243F6 = de los programas para aplicaciones de clculo nu-
B001100100100001111110110. Para la caracte- mrico y de potenciar la calidad del software di-
rstica tendremos: C = 1 + 64 = 65 = H41 = seado para estas aplicaciones, el I.E.E.E. propu-
B1000001, y la representacin resulta ser: so una norma para representacin de nmeros en
0 1000001 0011 0010 0100 0011 1111 0110 coma flotante, la IEEE 754, que ha sido adoptada
Obsrvese que, al ser la base 16, la mantisa est
7
normalizada en hexadecimal, pero no en binario, Es decir, que sirvan para distintas mquinas.
110 Leccin 3. Variaciones sobre representacin y procesamiento
31 30 23 22 0
por la mayora de los fabricantes de hardware y de
N C M
software. La norma define los formatos, las ope-
raciones aritmticas y el tratamiento de lo que se (a) precisin sencilla
llaman excepciones (desbordamiento, divisin 63 62 52 51 0
por cero, etc.). Aqu slo nos ocuparemos de los
N C M
formatos, que son los esquematizados en la Figu-
ra 3.6.8 (b) precisin doble
Los convenios de la norma IEEE 754 son:
Figura 3.6 Formatos de la norma IEEE 754.
Nmeros negativos: signo y magnitud.
Mantisa: normalizacin fraccionaria.
4. Si C = 255 y M = 0, X =
Base implcita: 2. (el formato prev una representacin especfica
Exponente: en exceso de 2e1 1 para el infinito)
Como la mantisa tiene normalizacin fracciona- 5. Si C = 255 y M 6= 0, X = NaN
ria y los nmeros negativos se representan con sig- (NaN significa no es un nmero; aqu se
no y magnitud, el primer bit de la mantisa siempre representan resultados de operaciones como
sera 1, lo que permite prescindir de l en la repre- 0/0, 0 , etc.)
sentacin y ganar as un bit. La coma se supone Y en el formato de precisin doble (Figura 3.6(b)):
inmediatamente a la derecha de ese 1 implcito,
1. Si 0 < C < 2.047, X = (1, M ) 2C1.023
por lo que, dada una mantisa M y un exponente
E, el nmero representado es (1, M ) 2E . 2. Si C = 0 y M = 0, X = 0
El exponente, E, se representa en exceso de 3. Si C = 0 y M 6= 0, X = 0, M 21.022
2 e1 1 (no en exceso de 2e1 ). La extensin de 4. Si C = 2.047 y M = 0, X =
E en el formato de 32 bits, que tiene e = 8, resulta 5. Si C = 2.047 y M 6= 0, X = NaN
ser: 127 E 128, y en el de 64 bits (e = 11):
1.023 E 1.024. Pero los valores extremos
de C (todos ceros o todos unos) se reservan para Distincin entre tipos de datos
representar casos especiales, como ahora veremos.
Esto nos da, en definitiva, un factor de escala que En cierto sentido, se puede decir que la UCP
va de 2126 a 2127 en el formato de 32 bits y de distingue entre dos tipos de datos si la UAL
21,022 a 21,023 en el de 64. tiene operaciones previstas para ambos tipos (por
Resumiendo, dados unos valores de M y C, el ejemplo, suma con coma fija y suma con coma flo-
nmero representado, X, si se trata del formato de tante). Pero normalmente el contenido de una pa-
precisin sencilla (Figura 3.6(a)), es el siguiente: labra no tiene por s mismo ningn significado: es
un conjunto ordenado de bits que la UCP puede
1. Si 0 < C < 255, X = (1, M ) 2C127
interpretar como una direccin, como una instruc-
2. Si C = 0 y M = 0, X = 0 cin o como un dato de un tipo u otro. Y as, como
3. Si C = 0 y M 6= 0, X = 0, M 2126 hemos visto en la Leccin 1, un mismo contenido
(nmeros ms pequeos que el mnimo repre- puede interpretarse unas veces como instruccin
sentable en forma normalizada) y otras como dato. Del mismo modo, es respon-
8
sabilidad del programador no cometer el error de
La norma contempla otros dos formatos, que son versio-
nes extendidas de stos: la mantisa ocupa una palabra com-
utilizar, por ejemplo, una instruccin de suma en
pleta (32 o 64 bits) y la caracterstica tiene 10 o 14 bits. Pero coma flotante sobre operandos que se supone re-
los de la Figura 3.6 son los ms utilizados. presentan a los datos en coma fija.
3.4. Convenios sobre el orden de almacenamiento 111
Ahora bien, algunos ordenadores tienen forma- venir en poner los ocho bits menos significativos
tos de representacin en los que se destinan algu- en la direccin ms baja (convenio que vamos a
nos bits de indicacin, o etiqueta, que dan in- llamar extremista menor) o en la ms alta (con-
formacin sobre el tipo de informacin que con- venio extremista mayor).
tienen los restantes. Por ejemplo, con una longitud
de palabra de treinta y dos bits, pueden reservarse
Extremistas menores y mayores
dos bits que indiquen que los otros treinta corres-
ponden a una instruccin, a un nmero en coma La distintas posibilidades sobre el convenio em-
fija, a un nmero en coma flotante o a otra cosa. piezan ya al atribuir nmeros a los bits que cons-
En la ejecucin de las instrucciones, la UCP tie- tituyen un byte o una palabra. En muchos textos
ne en cuenta si el tipo de dato se ajusta o no a la (ste incluido) y manuales de ordenadores se nu-
operacin y pone a cero o a uno un bit de esta- meran de derecha a izquierda, llamando 0 al
do. As, para la instruccin sumar en coma fija, bit menos significativo (bms), como en las Figu-
el bit se pondr a cero si ambos operandos tienen ras 1.4, 2.2, 3.3 y 3.7(a), pero otros proceden al re-
su etiqueta con el valor correspondiente a la infor- vs, llamando 0 (o, a veces, 1) al bit ms sig-
macin de coma fija, y se pondr a uno si alguno nificativo (bMs), como indica la Figura 3.7(b) pa-
de ellos corresponde a otra cosa. En el programa ra el caso de un byte. Los que optan por el primer
puede incluirse a continuacin una instruccin de convenio son extremistas menores: empiezan a
bifurcacin condicionada a ese bit. numerar por el extremo menor (bit menos signi-
Es inmediato comprender que esta nueva carac- ficativo). Anlogamente, los seguidores del segun-
terstica puede servir para detectar errores de pro- do convenio son extremistas mayores.
gramacin. Pero su incorporacin en el diseo de
un ordenador generalmente se hace con una inten- 7 0
b b
cin ms profunda: en algunos lenguajes de alto M
s
m
s
nivel se permite que el tipo de algunos datos se (a) convenio
defina durante la ejecucin (es lo que se llama ti- "extremista menor"
3.4. Convenios sobre el orden de al- El convenio extremista menor tiene la particula-
macenamiento ridad de que el nmero atribuido a cada posicin
coincide con el peso de esa posicin cuando se in-
Al hablar de la representacin de caracteres nos terpreta la configuracin de bits como un nmero
plantebamos la cuestin del convenio sobre el or- binario.
den de almacenamiento en la memoria de los by- Si se ha de escribir en horizontal una secuen-
tes que forman una cadena. Pero la misma cues- cia de bytes, lo razonable es numerarlos de manera
tin puede plantarse sobre los dems tipos de da- consistente con el convenio seguido para numerar
tos. Por ejemplo, si la UCP genera direcciones de los bits, y lo mismo si escribimos una secuencia de
32 bits, los punteros son tambin de 32 bits, cua- palabras. As, para una secuencia de palabras de
tro bytes. Cmo almacenamos un puntero en la diecisis bits (dos bytes), las numeraciones ex-
MP, en las direcciones d a d + 4? Podemos con- tremista menor y extremista mayor seran las
112 Leccin 3. Variaciones sobre representacin y procesamiento
byte 0 byte 1
0 12 34 5670 12 34 567 0 12 34 567 0 12 34 567
i N
b N
(b) extremista mayor
i+1 m
s
bit. S tiene importancia el orden en que se almace- i+3 N C byte 3 byte 2 byte 1 byte 0
nan las partes de una informacin que ocupa varios (a) convenio "extremista menor"
bytes en la MP, y el orden en que se envan de un
ordenador a otro los bits, los bytes o las palabras.
i N C
Vamos a centrarnos en el orden de almacenamien- (numeracin de bits extremista menor)
to en la MP. i+1 M23M16 31 23 0
b
Para guardar en la MP un nmero entero con el N C M m
i+2 M15M8 s
formato de coma fija de la Figura 3.3 la disyunti- b
i+3 M7M0 m byte 0 byte 1 byte 2 byte 3
s
va es almacenar los diecisis bits como indica la (b) convenio "extremista mayor"
Figura 3.9(a), con los ocho bits menos significa-
tivos en el byte de direccin ms baja y los ocho Figura 3.10. Almacenamiento, en cuatro bytes de la
ms significativos en el byte de direccin ms al- MP, de un nmero en coma flotante de treinta y dos
ta, o al revs, segn la Figura 3.9(b). El primero es bits.
un convenio extremista menor, y el segundo es
extremista mayor. De igual modo, se puede se- dir. byte 3 byte 2 byte 1 byte 0
guir un convenio u otro para almacenar en cuatro i "U" (H55)
"X" (H58) "I" (H49) "N" (H4E) "U" (H55)
bytes un nmero representado con el formato de
coma flotante de la Figura 3.5, como se ilustra en i+1 "N" (H4E) (a) convenio "extremista menor"
Las cadenas de caracteres se almacenan gene- i+3 "X" (H58) "U" (H55) "N" (H4E) "I" (H49) "X" (H58)
ralmente en bytes sucesivos de la MP, con el pri- cisin adecuados para las aplicaciones, simplifi-
mer carcter (el que escribimos ms a la izquierda) car los circuitos de la UAL o los programas que
en la direccin ms baja. Si la longitud de pala- realizan operaciones aritmticas no incluidas en la
bra es de varios bytes, una misma cadena da lu- UAL, minimizar el nmero de accesos a la MP,
gar a distintas configuraciones de bits en una pa- facilitar las comunicaciones con otras mquinas,
labra, como puede verse en la Figura 3.11 para el etc. Los diseadores de distintos fabricantes han
caso concreto de la cadena UNIX en una m- llegado a diferentes soluciones; en los Ejercicios
quina de treinta y dos bits. Si en una mquina ex- del Apartado 3.13 pueden verse algunos ejemplos.
tremista menor cargamos esta cadena de la MP en En principio, y en la medida en que el ordenador
un registro de treinta y dos bits, luego copiamos sea autnomo esto no reviste mayor importancia
(a travs de un bus de interconexin) el conteni- ni origina problemas especiales: nicamente si hay
do de este registro en un registro de una mquina que descender a programar en lenguaje de mqui-
extremista mayor y de aqu lo almacenamos en la na, o disear un traductor (ensamblador o compi-
MP de esta segunda mquina, el resultado es que lador), es preciso ocuparse de esos detalles. Pero
la cadena UNIX se transforma en XINU. Si en cuanto entramos en el campo de las comuni-
las mquinas fuesen de diecisis bits (con regis- caciones entre ordenadores, los diferentes conve-
tros de dos bytes), UNIX se transformara en nios de representacin y almacenamiento pueden
NUXI. Esto se conoce con el nombre de pro- ser una fuente de problemas.
blema NUXI, y se resuelve con algoritmos ade-
cuados en el proceso de comunicacin.
La eleccin del convenio de almacenamiento 3.5. Operaciones de procesamiento
suele estar ligada al modelo funcional de la m-
quina. Por ejemplo, en el Apartado 2.8 (Progra- En un momento determinado de la ejecucin
mas 2.4 y 2.5) adoptbamos un convenio para las de un programa los datos pueden estar almacena-
cadenas de caracteres en Smplez+i4 que no se co- dos en la memoria principal o en los registros de
rresponde con el habitual (almacenar el primer ca- la UCP. Tambin pueden estar en soportes exter-
rcter en la direccin ms baja). Poner el primer nos (procedentes de sensores, marcados sobre pa-
carcter en la direccin ms alta es, en efecto, ms pel, etc.) o en memorias auxiliares (cintas, discos,
conveniente en Smplez+i4, como el lector pue- etc.). Sobre estos datos cabe definir diversas ope-
de comprobar fcilmente si rehace aquellos pro- raciones, que pueden afectar a un solo dato (como
gramas considerando que las cadenas se almace- transferirlo de un sitio a otro, o cambiar su signo) o
nan con el convenio habitual. (En Smplez y Sm- a dos (como sumarlos o realizar el producto lgico
plez+i4 no tiene sentido hablar de extremista me- o and).
nor ni extremista mayor, porque todos los for-
matos son de doce bits, y los registros y las pala- Operaciones aritmticas
bras de la MP tienen tambin esa longitud).
En el Apndice A se presentan algoritmos pa-
ra las operaciones aritmticas bsicas en el nivel
Conclusin
de mquina convencional. Haremos aqu solamen-
La eleccin de formatos y de convenios (nme- te unas observaciones generales.
ros negativos, normalizacin, exponente, base, or- Ya hemos ilustrado en Lecciones anteriores que
den de almacenamiento) depende de muchas con- si la UAL no dispone de circuitos para realizar por
sideraciones: aprovechar al mximo la memoria al hardware ciertas operaciones, es posible realizar-
tiempo que se obtiene una extensin y una pre- las por software. Un ejemplo dramtico (en el
114 Leccin 3. Variaciones sobre representacin y procesamiento
sentido de que, al ser muy frecuente y fcil de im- op1 op2 AND OR XOR NAND NOR
plementar en hardware, la sustraccin est siempre 0 0 0 0 0 1 1
prevista en la UAL, y, por tanto, todos los ordena- 0 1 0 1 1 1 0
dores disponen de la correspondiente instruccin) 1 0 0 1 1 1 0
es la forma de restar en Smplez (Programa 1.5); 1 1 1 1 0 0 0
otro ejemplo similar (todos los ordenadores dispo-
nen de instrucciones especficas para ello, es decir Tabla 3.2 Operaciones lgicas sobre dos operandos.
de recursos hardware) de la disyuntiva hard-
ware/software es la forma de construir subpro-
gramas en Smplez (Programa 1.6). Pero no es na- Las otras cinco se aplican, bit a bit, sobre dos
da dramtico (no es raro) el hecho de que las operandos, y se definen como indica la Tabla 3.2,
operaciones aritmticas en coma flotante puedan donde en las dos primeras columnas se encuentran
realizarse mediante software o mediante hardware los cuatro valores posibles de dos operandos de un
(con una unidad de coma flotante opcional, que bit, y en las restantes se indican los resultados co-
conceptualmente es una ampliacin de la UAL). rrespondientes a cada operacin.
Como mnimo, la UAL siempre dispone de las El enmascaramiento consiste en realizar la
operaciones aritmticas bsicas (suma y resta) y operacin AND entre una informacin y un con-
de operaciones lgicas. Estas operaciones se reali- junto de bits prefijado (mscara) para poner a cero
zan sobre operandos de longitud igual a la del bus determinados bits (y dejar los dems con el valor
de datos (bus D) del ordenador, y si esta longitud que tengan). Por ejemplo, para extraer los cuatro
es mltiplo de un byte, tambin se pueden realizar bits menos significativos de un byte utilizaremos
sobre bytes, medias palabras, etc. Por ejemplo, si la mscara H0F = 00001111, y si la informacin
la longitud de palabra (y la anchura del bus D) es original es abcdefgh (a, b,... ,h {0,1}) el re-
treinta y dos bits, la UAL podr realizar operacio- sultado ser 0000efgh.
nes sobre palabras, sobre medias palabras (dieci-
sis bits) y sobre bytes.
Operaciones de desplazamiento
Los desplazamientos se realizan normalmente
Operaciones lgicas
en un subsistema hardware especfico, la unidad
Las principales operaciones lgicas son la com- de desplazamiento. Hay dos tipos bsicos: despla-
plementacin o negacin (NOT), el producto l- zamientos a la derecha, en los que el bit i del ope-
gico (AND), la suma lgica (OR), la suma mdu- rando pasa a ocupar la posicin del bit i 1, ste
lo 2 u or excluyente (XOR), el producto negado la del i 2, etc., y desplazamientos a la izquierda,
(NAND) y la suma negada (NOR). Se trata de las en los que se procede al revs. Y hay varios subti-
mismas operaciones de la lgica booleana que se pos (Figura 3.12), dependiendo de lo que se haga
utilizan en los circuitos digitales (Figura 9.2) apli- con el bit que est ms a la derecha (bms) y con el
cadas en paralelo a un conjunto de bits. que est ms a la izquierda (bMs):
La primera se aplica a un solo operando y con-
Desplazamientos lgicos
siste, simplemente, en cambiar todos sus ceros
por unos y viceversa. Si el operando se inter- En un desplazamiento lgico a la derecha el
preta como un nmero binario, el resultado es su bms se introduce en el indicador C (perdindose
complemento a 1. Por ejemplo: el valor anterior que ste tuviese), y por la izquier-
da se introduce un 0. Justamente lo contrario se
NOT(01101011) = 10010100 hace en el desplazamiento lgico a la izquierda:
3.6. Procesamiento de interrupciones 115
A LA DERECHA A LA IZQUIERDA
ilustra este tipo de desplazamiento, muy til para
los algoritmos de multiplicacin (vase el Apndi-
0 0
C C ce A).
SHR
(a) desplazamientos logicos
SHL Los nemnicos de las instrucciones son: SHRA
(shift right arithmetic) y SHLA (shift left arith-
metic) o similares.
Aparentemente, el desplazamiento aritmtico a
ROR ROL la izquierda tiene el mismo efecto que el desplaza-
(b) desplazamientos circulares
miento lgico a la izquierda, pero hay una diferen-
cia sutil: el primero pone un 1 en el indicador
C C de desbordamiento (V) si como consecuencia del
RORC ROLC desplazamiento cambia el bit de signo (N).
(c) desplazamientos circulares con acarreo Los desplazamientos, combinados con opera-
V ciones lgicas, se usan con frecuencia para pro-
cesamiento simblico.
N C C N 0
SHRA SHLA
(d) desplazamientos aritmeticos
3.6. Procesamiento de interrupcio-
Figura 3.12 Operaciones de desplazamiento. nes
Desplazamientos aritmticos
Causas de interrupcin
En el desplazamiento aritmtico a la izquierda,
el bMs se introduce en el indicador de acarreo (C), Las interrupciones pueden clasificarse de acuer-
y en el desplazamiento aritmtico a la derecha se do con la naturaleza de los acontecimientos o cau-
propaga el indicador de signo. La Figura 3.12(d) sas que las provocan.
116 Leccin 3. Variaciones sobre representacin y procesamiento
Las interrupciones externas son las originadas nes), mientras que los instantes de aparicin de las
por una causa ajena a la UCP. Por ejemplo: externas pueden variar.
Controlador de un perifrico que pide la trans-
ferencia de un carcter, o que avisa del final de Rutinas de servicio
la transferencia de un bloque en una operacin
de acceso directo a la memoria (Apartado 5.8). Con Smplez+i4 vimos que para todo perifrico
Fallo de la tensin de alimentacin. capaz de interrumpir es preciso mantener cargada
en la MP una RS (rutina de servicio). Lo mismo
Seal de reloj.
puede decirse de todas las otras causas. Las ope-
En los sistemas con gestin de memoria (Apar- raciones a realizar por estas RS son muy variadas;
tado 7.10), intento de acceso a una zona no au- comentemos, a grandes rasgos, algunos casos:
torizada. El fallo de alimentacin se produce cuando un
En los sistemas con memoria virtual (Aparta- circuito externo a la UCP detecta que la tensin
do 15.8), fracaso de pgina. suministrada por la fuente de alimentacin des-
En los sistemas multiprocesadores (Aparta- ciende por debajo de cierto lmite. En los milise-
do 15.2), un procesador que interrumpe a otro gundos siguientes la tensin puede seguir bajando,
para comunicarle un mensaje, o pedirle un re- pero hasta que la UCP deja de funcionar an tiene
curso. tiempo de hacer muchas cosas. La RS puede, por
Las interrupciones internas, o excepciones, se ejemplo, salvar en disco los registros y parte de la
producen como consecuencia de acontecimientos MP10 para poder luego arrancar el sistema ms
dentro de la UCP. Por ejemplo: fcilmente.
Desbordamiento en la UAL. La interrupcin de reloj tambin est gene-
Cdigo de operacin inexistente. rada por circuitos externos, pero es peridica (se
produce, por ejemplo, cada milisegundo). La RS
Interrupcin de rastreo (originada tras la ejecu-
puede actualizar variables que cuenten segundos,
cin de toda instruccin cuando la UCP est en
minutos, etc. (Ejercicio 13 de la Leccin 2). En
el modo rastreo; enseguida veremos en qu
los sistemas de tiempo compartido (Apartados 4.2
consiste).
y 20.6) el sistema operativo utiliza esta interrup-
Intento de ejecucin de una instruccin privile- cin para repartir la UCP entre los distintos proce-
giada en modo usuario (Apartado 4.2) sos que compiten por la UCP.
Direccin de memoria no alineada (Aparta- La RS de la interrupcin por desbordamiento
do 8.7). puede escribir un mensaje de aviso por la pantalla.
Interrupcin de programa (originada por la eje- La estudiaremos con detalle en el Apartado 7.4.
cucin de un tipo especial de instruccin, BRK, La interrupcin por cdigo de operacin ile-
que puede incluirse en los programas para pe- gal (o inexistente) es muy til cuando la UCP
dir al sistema operativo que se encargue de al- admite ampliaciones. Por ejemplo, si la unidad
guna operacin, como veremos con detalle en de coma flotante es opcional (no contenida en la
las Lecciones 18 a 20. UCP), las instrucciones de operacin en coma flo-
Las interrupciones externas son asncronas con tante tendrn sus cdigos de operacin binarios,
relacin al programa, mientras que las internas son pero la UCP no los entiende. Cuando la unidad
sncronas. Dicho de otro modo, si el mismo pro- 10
Con las tecnologas actuales, los registros y gran parte de
grama se ejecuta varias veces las interrupciones la MP son memorias voltiles, es decir, sus contenidos se
internas aparecern siempre en los mismos pun- borran al desaparecer la alimentacin, mientras que los discos
tos (durante la ejecucin de las mismas instruccio- no lo son.
3.6. Procesamiento de interrupciones 117
de coma flotante est conectada al sistema la UCP comprende los bits C, Z, N, V, el de ras-
delega en ella para ejecutar esas instrucciones, pe- treo, etc. Como hemos dicho en el Apartado 3.2,
ro si no lo est la UCP genera una interrupcin y todos estos indicadores estn contenidos en un re-
entonces son las RS las que se encargan de realizar gistro de estado. La UCP guarda el contenido de
las operaciones mediante software (con un tiem- este registro (y la direccin de retorno) al pasar
po de ejecucin mucho mayor que cuando s est a atender cualquier interrupcin. Los contenidos
la unidad, que realiza las mismas operaciones me- de los dems registros pueden guardarse por soft-
diante hardware). ware, en las rutinas de servicio (como se hace en
Para la interrupcin de rastreo la UCP debe Smplez+i4 con AC y X); en algunos ordenadores,
tener incluido entre los bits del registro de estado el hardware de la UCP se encarga tambin auto-
uno que pueda ser cambiado de valor por el pro- mticamente de guardarlos.
gramador y que indique, si est a 1, que la UCP
se encuentra en modo de rastreo. En este modo Vectores de interrupcin
siempre se genera una interrupcin tras la ejecu-
cin de toda instruccin. Esta es una ayuda para la Cuando son muchas las causas de interrupcin,
labor de depurar los programas mediante el pro- tambin son muchas las RS que hay que mantener
cedimiento de rastrear, paso a paso, la ejecucin, en la MP, unas ms largas y otras ms cortas. Una
para identificar la instruccin causante de su mal disposicin muy comn consiste en tener almace-
funcionamiento. La RS de esta interrupcin pue- nadas permanentemente en una zona reservada de
de presentar en la pantalla un listado con todos los la MP las direcciones de comienzo de todas las RS
contenidos de los registros. El programador, ha- (Figura 3.13).
ciendo uso de la instruccin que le permite poner En algunos diseos se guardan ms datos. Por
a 0 o a 1 el bit, puede sealar segmentos del ejemplo, para cada causa, junto con la direccin de
programa que le interese rastrear. En realidad, lo su RS, un nuevo valor para el registro de estado. El
normal es que el programador haga uso de otro conjunto de datos que corresponde a una causa de
programa, el depurador, que es el que, entre otras interrupcin se llama vector de interrupcin de
muchas cosas, maneja al bit de rastreo. esa causa. Al pasar a atender a una interrupcin,
la UCP salva la direccin de retorno y, en su caso,
Cambios de contexto los registros y luego, una vez identificada la cau-
nivel 4
sa, bifurca a la direccin contenida en el vector de
interrupcin correspondiente (si el vector contie-
nivel 3
ne otros datos, los maneja oportunamente: si, por
ejemplo, contiene un nuevo valor para el registro
de estado, lo carga en l). La Figura 3.13 presen- nivel 2
MP
datos
3.8. Tiempo de traduccin, tiempo
"codigo
objeto"
resultados
de carga y tiempo de ejecucin
En esta presentacin de los procesos de tra-
4. Se ejecuta el programa duccin (ensamblaje o compilacin) y carga he-
mos omitido, para centrarnos en lo bsico, algu-
nos asuntos importantes. Como seguramente co-
Figura 3.15. Ensamblaje de un programa fuente pre- noce el lector, los programas grandes se constru-
viamente a la ejecucin del programa objeto. yen de manera modular: un mdulo es un con-
junto de instrucciones, variables y constantes, que
Compiladores e intrpretes realiza determinadas funciones, que se ensambla o
se compila y se prueba (con un programa de prue-
De un lenguaje ensamblador se dice que es de ba) individualmente, pero que no puede ejecutarse
bajo nivel, porque est muy prximo al lengua- aisladamente. Los mdulos contienen referencias
je de mquina convencional (y el traductor es un externas, como bifurcaciones, llamadas a subpro-
programa relativamente sencillo). Los lenguajes gramas o accesos a datos de otros mdulos. Si en
de alto nivel (C, C++, etc.) facilitan la progra- las primeras fases del diseo del programa, al de-
macin (y sus traductores son ms complicados), cidir su descomposicin en mdulos, supisemos
al ser ms cercanos al lenguaje natural. Las cons- exactamente el nmero de palabras que va a ocu-
3.8. Tiempo de traduccin, tiempo de carga y tiempo de ejecucin 121
par cada uno, podramos establecer un mapa de la Las operaciones en tiempo de carga las reali-
memoria y dejar determinadas esas referencias al za el montador (por ejemplo, la asignacin de
escribir el programa fuente. Por ejemplo, si el m- direcciones a smbolos externos) o el cargador
dulo 1, que tiene 2.000 bytes, se carga a partir de (por ejemplo, la introduccin de valores defini-
la direccin 0 y el mdulo 2 a partir de la 2.000, y dos por DATA), tambin una sola vez (siem-
si en el mdulo 1 hay que hacer una bifurcacin a pre que se carga el programa).
la primera direccin del mdulo 2, escribiramos: Las operaciones en tiempo de ejecucin se rea-
BR /2000. Naturalmente, no es as. Podramos lizan cuando se ejecutan las instrucciones.
pensar en calcular por exceso la longitud de ca- Tomando de nuevo como ejemplo el Progra-
da mdulo, pero quedaran huecos en la MP, es ma 2.4, las constantes 3.840, 3.920, etc., que es-
decir, zonas inutilizadas. Hay una solucin mejor: tn definidas con DATA, se traducen a binario en
utilizar otro programa de procesamiento, que se tiempo de traduccin y se introducen en la MP en
llama montador. Veamos en qu consiste. tiempo de carga en las direcciones 5 y siguientes.
Pero los valores 0 para MSPAN y MSTEC, 79 para
XPAN y XTEC, etc., se introducen en tiempo de eje-
Montaje y carga
cucin (con las instrucciones [20] y siguientes).
El traductor genera, adems de un cdigo obje-
to, una tabla de smbolos externos: nombres sim- Reubicacin
blicos en el programa fuente cuya traduccin no
En tiempo de traduccin no puede saberse la di-
ha sido posible, y una tabla de smbolos de ac-
reccin a partir de la cual va a residir finalmente el
ceso: nombres a los que pueden hacer referencia
mdulo. Por tanto, el traductor genera direcciones
otros mdulos, junto con sus valores. Ese cdigo
relativas al comienzo del mdulo, como si ste
objeto an no puede ejecutarse, puesto que hace
fuera a cargarse a partir de la direccin 0. La reu-
referencia a direcciones de memoria que an no
bicacin es la carga del programa a partir de otra
se conocen (los smbolos externos). El programa
direccin de tal modo que se ejecute exactamente
montador genera, a partir de los cdigos obje-
igual que si se hubiese cargado a partir de la 0. Pa-
to y de las tablas de smbolos obtenidos de to-
ra que esto sea posible es necesario ajustar las di-
dos los mdulos, el programa binario ejecutable
recciones que ha generado el traductor, es decir, li-
(sin huecos) que un tercer programa de proce-
gar esas direcciones relativas a direcciones reales
samiento, el cargador se encarga de introducir en
de la MP. Esta operacin de ligadura es, concep-
la MP. Es frecuente que el montador y el cargador
tualmente, muy simple: una vez conocida la direc-
estn integrados en un nico programa, pero las
cin de carga del mdulo, basta con sumar esta di-
dos funciones son bien diferentes.
reccin a las relativas que ha generado el traductor.
Hay, pues, tres tiempos (englobando el mon-
Puede hacerse en tiempo de carga o en tiempo de
taje y la carga en uno), y es importante saber lo
ejecucin, y puede hacerse mediante software (al
que se hace en cada uno: muchos errores de pro-
ejecutarse el cargador) o mediante hardware (con
gramacin, tanto en bajo como en alto nivel, son
registros de base, o de segmento, que veremos en
consecuencia de su ignorancia.
la Leccin siguiente). Este valor constante que hay
Las operaciones en tiempo de traduccin las que sumar a todas las direcciones que deben ajus-
realiza el ensamblador o compilador una sola tarse se llama constante de reubicacin.
vez. Por ejemplo, la asignacin de direcciones No todas las direcciones que genera el traductor
de memoria a las etiquetas que aparecen en el han de ajustarse. Si, por ejemplo, tenemos la ins-
programa fuente. truccin BR /ETI, donde ETI es una etiqueta de-
122 Leccin 3. Variaciones sobre representacin y procesamiento
mdulos de
biblioteca mdulo
de carga
tiempo de
Visin global
carga
un lenguaje binario, dando como resultado de su concluye que si bien la diferencia entre uno y otro es
ejecucin las instrucciones en binario, que ya pue- trivial, no lo es el llegar a un acuerdo.
de interpretar la UCP. Un lenguaje ensamblador es Las denominaciones de los indicadores (flags) C,
de bajo nivel; los lenguajes de alto nivel hacen ms V, N y Z, provienen de Carry (acarreo), oVerflow
(desbordamiento), Negative y Zero.
fcil la programacin y exigen programas traduc-
Para las interrupciones no slo hay muchos esque-
tores ms complejos, llamados compiladores. mas distintos, tambin se encuentran muchas variantes
Esto nos ha llevado a detenernos en los procesos terminolgicas. Por ejemplo, algunos llaman excep-
que tienen lugar desde la lectura de los programas ciones a las interrupciones en general, distinguiendo
fuente de varios mdulos hasta la generacin de un entre ellas interrupciones (de perifricos), fallos,
cdigo objeto cargable y ejecutable, distinguien- abortos, etc., mientras que otros reservan ese trmi-
do entre tiempo de traduccin, tiempo de monta- no para las que no son de perifricos. La palabra trap
je/carga y tiempo de ejecucin, e introduciendo la (literalmente, trampa o cebo) se utiliza frecuentemente
para designar o bien a lo que aqu hemos llamado in-
problemtica de la reubicacin de programas en la
terrupciones internas, o bien slo a las interrupciones
MP y la ligadura de direcciones generadas por el de programa.
traductor a direcciones reales de la MP. El procedimiento que hemos llamado de consulta
corresponde a lo que en ingls se llama polling (ex-
ploracin, o sondeo). Tambin hemos traducido trace
3.10. Observaciones terminolgicas por rastreo, y debugging por depuracin. Este
ltimo trmino ingls tiene un interesante origen hist-
El vocabulario introducido en esta Leccin da lugar rico. Bug es insecto, o bicho, pero en inform-
a consideraciones muy interesantes. tica se entiende como error (de localizacin difcil) en
Byte, aunque admitida desde 2001 en el un programa (podramos traducirlo como gazapo).
D.R.A.E., puede traducirse por octeto; preferiramos Se cuenta que el primer bug apareci en el Mark I
la traduccin (que, adems, est libre de ambigedad, de Harvard, donde un fallo desasoseg a los programa-
puesto que, al menos en su origen, los bytes podan dores hasta que encontraron su causa: un bug atrapa-
tener seis, siete, ocho o nueve bits) si no fuera por la do en uno de sus rels13 .
costumbre asentada de medir la capacidad de las me- Ligar (asignar direcciones reales de la MP a las
morias en KB, MB, etc. Lo que hemos llamado direcciones relativas generadas por un traductor) y li-
cuarteto es, en ingls, nibble (mordisco, boca- gadura son traducciones de bind y binding.
do); hay que tener en cuenta que bit significa tam-
Hemos traducido entry symbols por smbolos de
bin elemento o trozo pequeo, y que byte, segn
acceso (menos confuso que smbolos de entrada),
el diccionario Concise Oxford, procede de un juego
linker por montador (ms breve que montador de
de palabras: se pronuncia igual que bite (morder).
enlaces), relocatable assembler por ensamblador
Mencin especial merece la denominacin de ex-
reubicante y relocating loader por cargador reubi-
tremistas menores (little-endians) y extremistas
cador. El cargador inicial es, en ingls, bootstrap
mayores (big-endians) para la referencia al conve-
loader. El origen de esta expresin es tambin bastan-
nio sobre el orden de almacenamiento en la memoria.
te curioso. Bootstrap es la pequea lengeta trasera
La cuestin la suscit Cohen (1981), tomando los tr-
que tienen las botas; to pull oneself up by ones boots-
minos de un pasaje de Los viajes de Gulliver de Jo-
traps (levantarse uno mismo tirndose de los boots-
nathan Swift. Concretamente, Gulliver vive en Liliput
traps) es una frase hecha que equivale a arreglrselas
una guerra civil originada por una ley dictada por su
por s mismo, pero que, interpretada literalmente, re-
rey segn la cual era obligatorio, contrariamente a la
cuerda al crculo vicioso mencionado al final del Apar-
tradicin, cascar los huevos por el extremo ms estre-
tado 3.8: quin carga al cargador? Esto ha derivado en
cho. Swift satirizaba as sobre las guerras religiosas de
el verbo boot con el sentido de arrancar automtica-
su poca, tan absurdas como la provocada por la forma
de cascar los huevos. Danny Cohen aplica la parbola 13
No obstante, segn Gruenberger (1993), Thomas A. Edi-
a los dos convenios bsicos que pueden seguirse para son ya haba utilizado anteriormente el trmino bug con un
ordenar los bits en la memoria y para transmitirlos, y sentido similar al actual en informtica.
3.13. Ejercicios 125
mente (no de dar una patada). Y, en espanglish, Sobre la importancia del extremismo menor o ma-
en botar y rebotar. yor, no ya para el almacenamiento, sino para la
comunicacin por buses, adems del artculo citado
de Cohen (1981) puede consultarse el de Kirrmann
3.11. Notas histricas (1983), los comentarios de Paterson (1984) y Gustav-
son (1985), y el divertido pero profundo artculo de Ja-
El trmino byte fue acuado en 1956 por Werner mes (1990).
Buchholz, uno de los diseadores del ordenador IBM
Stretch (Apartado 15.12), mutando bite para evitar
la confusin con bit. 3.13. Ejercicios
Los ordenadores diseados por los aos 50, 60 y 70
pertenecan tpicamente a una de dos categoras: cien- Algunos de los Ejercicios que se proponen se refie-
tficos o de gestin. Entre otras diferencias (vase ren no slo a los conceptos explicados en esta Leccin,
el Apartado 4.12), los primeros se caracterizaban por sino tambin a los que se tratan en el Apndice A.
representar la informacin numrica en binario, mien-
tras en los segundos se haca en BCD. Actualmente, 1. Escriba los contenidos de las palabras de direc-
es frecuente que la UAL disponga de operadores para ciones 100 y sucesivas en la MP de Smplez cuan-
trabajar en los dos sistemas de representacin. do en ellas representamos la cadena de caracteres:
Durante algn tiempo coexistieron varios cdigos Qu ambigedad puede ocasionar la letra ee?
para la representacin de caracteres: EBCDIC (que Ninguna!, con ocho bits por carcter (ISO La-
an se encuentra en algunos ordenadores), FielData, tin9).
etc. Como ya hemos dicho, el uso del cdigo ASCII de 2. A fin de poder representar nmeros negativos y
siete bits (ANSI, 1977) es hoy prcticamente universal. nmeros reales, podemos sustituir el convenio de
Hasta final de los aos 80 coexistieron varias extensio- representacin en Smplez dado en la Leccin 1
nes a ocho (o ms) bits (DCruz et al., 1989), pero han por los siguientes:
acabado por imponerse las normas ISO 8859-X para
coma fija: bit 11, signo; bits 100, valor, en
ocho bits (ISO, 1998), y se est extendiendo Unico-
complemento a 2 para nmeros negativos;
de para diecisis (ISO, 2003, Unicode 2003).
Sobre la evolucin de los lenguajes de programacin coma flotante: bit 11, signo; bits 10 a 6, expo-
y su procesamiento, vase el Apartado 22.14. nente de 2 en exceso de 16; bits 5 a 0: mantisa
con normalizacin fraccionaria y en comple-
mento a 2 para nmeros negativos.
3.12. Orientaciones bibliogrficas
a) Calcule los nmeros mximo y mnimo re-
Los formatos para la representacin de informa- presentables en ambos formatos, y el nme-
ciones se encuentran, naturalmente, en los manua- ro positivo ms pequeo en coma flotante.
les que proporcionan los fabricantes. La norma AN- b) Encuentre las representaciones de D100 en
SI/IEEE 754 (IEEE 1985) incluye no slo los formatos coma fija y en coma flotante.
de coma flotante que hemos reproducido, sino tambin
c) Halle la representacin de D3,14159 en
muchos otros detalles referentes a las operaciones arit-
coma flotante.
mticas. Ms detalles pueden verse en Hough (1981),
Coonen (1981) y Cody (1981). Posteriormente se ha
3. Considerando los formatos anteriores, y supo-
completado con otra norma, ANSI/IEEE 854, que ge-
niendo que disponemos de una instruccin NOT
neraliza la anterior para cualquier base y cualquier lon-
(complementar el acumulador, vase el Ejerci-
gitud de palabra (Cody et al., 1984; IEEE, 1987).
cio 14 de la Leccin 1), escriba un subprograma
La ISO no publica las normas en la web, pero en
para Smplez que realice la sustraccin.
Czyborra (1998) pueden verse todas las tablas de las
normas ISO 8859-X. En otra pgina del mismo autor 4. En cada palabra de Smplez pueden introducirse
(Czyborra, 1999) hay un buen resumen de Unicode, tres dgitos BCD. Halle la representacin en deci-
con muchos enlaces. mal empaquetado de D43.701.
126 Leccin 3. Variaciones sobre representacin y procesamiento
aplicaciones que requieren ms cifras significati- (d) punto flotante con cudruple precision
vas en M .
Los convenios de representacin son: Figura 3.17 Formatos de los IBM 370.
3.13. Ejercicios 127
7 0 7 0 7 0
i b b
N7N0 m i N7N0 m i C M22M16
s s
i+1 N N14N8 i+1 N15N8 i+1 N C7C1
i+2 b
(a) punto fijo i+2 N23N16 M7M0 m
s
16 bits
i+3 N N30N24 i+3 M15M8
7 0 7 0 7 0
M23M16 M23M16
M31M24 M31M2
b b b
M7M0 m M7M0 m M7M0 m
s s s
i+7 M15M8 i+7 M15M8 i+15 M15M8
dejando en la direccin mayor al que contiene el significativos van en el byte almacenado en la ter-
signo y los bits ms significativos. cera posicin, y los ms significativos en la direc-
Ahora bien, los convenios para almacenar los n- cin mayor. El lector podr reconocer fcilmente
meros en coma flotante, en sus cuatro versiones el mismo criterio hbrido en los otros formatos de
(Figuras 3.18(c) a 3.18(f)), pueden parecer extra- coma flotante.
vagantes al contemplar a primera vista las figu- Los otros convenios para los formatos de coma
ras. La clave para interpretarlos es la siguiente: flotante de VAX son los siguientes:
cada dos bytes constituyen una palabra de die-
cisis bits; el almacenamiento de los dos bytes Nmeros negativos con signo y valor absoluto.
de una palabra es extremista menor, mientras Mantisa con normalizacin fraccionaria, omi-
que el almacenamiento de palabras consecutivas tiendo el bit ms significativo, que siempre
es extremista mayor. As, en la Figura 3.18(c), es 1.
la primera palabra (los dos bytes de direcciones i Base: 2
e i+1) contiene el signo, la caracterstica y los bits Exponente en exceso de 128 (128 E
ms significativos de la mantisa, y la palabra que 127), 1.024 (1.024 E 1.023) o 16.384
corresponde a los bytes de direcciones i+2 e i+3 (16.384 E 16.383) segn que el formato
contiene los bits menos significativos (extremista reserve para e 8 bits (Figuras 3.18(c) y (d)), 11
mayor). Sin embargo, de los dos bytes que for- (Figura 3.18(e)) o 15 (Figura 3.18(f)).
man la primera palabra, el que contiene el signo y
los bits ms significativos del exponente (o sea, lo El Ejercicio consiste en hacer lo mismo que en el
que estara ms a la izquierda en una representa- anterior pero con estos formatos.
cin lineal completa de los treinta y dos bits) es-
9. El siguiente conjunto de treinta y dos bits:
t en la direccin ms alta (extremista menor). Y
lo mismo para la segunda palabra: los bits menos 1000 0001 0100 0110 0110 1000 0101 0100
128 Leccin 3. Variaciones sobre representacin y procesamiento
puede representar un nmero que depende del Razone por qu se puede optimizar mejor el algo-
convenio utilizado. Encuentre su significacin de- ritmo de comparacin de cadenas si el convenio
cimal en el caso de que el convenio sea: de almacenamiento es extremista mayor.
a) signo y mdulo; 13. Como se sugiere al final del Apartado 3.4, rees-
b) complemento a 1; criba los Programas 2.4 y 2.5 suponiendo que las
cadenas de caracteres se almacenan con el conve-
c) complemento a 2; nio habitual (primer carcter en el byte de direc-
d) BCD natural, Aiken y exceso de 3, sin sig- cin ms baja). Por qu motivos resultan ser ms
no; complicados los programas?
e) coma flotante con el formato de cuatro by- 14. Suponiendo que Smplez tuviese una instruccin
tes del VAX; BN (bifurcacin si negativo), escriba subprogra-
f) coma flotante con el formato de una palabra mas para sumar y restar que detecten la existencia
del IBM 370; de desbordamiento de acuerdo con los algoritmos
g) coma flotante con el formato de precisin que se presentan en el Apndice A. Los subpro-
sencilla IEEE 754. gramas tendrn dos argumentos de salida: uno, el
resultado de la operacin (transmitido, por ejem-
10. Represente los nmeros D0,01 y D199,5 en to- plo, por el acumulador) y otro una seal (trans-
dos los formatos de coma flotante descritos. mitida por una palabra de la memoria) que valdr
11. Suponga que en cuatro bytes consecutivos de la 0 si no ha habido desbordamiento y 1 si lo
MP de un VAX se tienen almacenados los n- ha habido.
meros +256 y 256 con el formato de la Figu- 15. En los siguientes problemas de sumas y restas,
ra 3.18(a). Por error, en un programa aparece una los nmeros se suponen enteros, representados en
instruccin de suma de enteros en longitud doble, coma fija con cinco bits ms signo, y con com-
que interpreta esos cuatro bytes como un entero plemento a 2. Ejecute a mano las operaciones si-
con el formato de la Figura 3.18(b). Qu nmero guiendo los algoritmos del Apndice A, detectan-
se interpretara? do en qu casos se produce desbordamiento, y
12. Si no se consideran los problemas ligados a la co- compruebe los resultados convirtiendo a decimal
municacin entre ordenadores (como el proble- las representaciones:
ma NUXI), parece que la adopcin de un conve- 001101 001101 001101 001101
nio extremista mayor o menor es indiferente. Pe- +010001 +101000 +110011 +101100
ro ciertos algoritmos pueden implementarse ms
110000 010000 010000 100000
eficientemente con un convenio que con otro. Por
010100 111111 000001 +000010
ejemplo, para ordenacin alfabtica de cadenas de
caracteres se aplican instrucciones de compara- 16. En Smplez no se han previsto instrucciones pa-
cin: la instruccin CMP compara dos operandos, ra operaciones lgicas, ni de desplazamiento, ni
y pone a 0 el indicador N si el primer operan- de comprobacin de bits, lo que hace difcil pro-
do es mayor o igual que el segundo, o a 1 en gramar los algoritmos de multiplicacin y divi-
caso contrario; si los operandos son iguales, el in- sin. No obstante, siempre pueden idearse tru-
dicador Z se pone a 1. Para comparar dos ca- cos. Por ejemplo, desplazar un nmero binario
denas se comparan los dos primeros caracteres: a la izquierda es lo mismo que multiplicarlo por
si son distintos, las cadenas se ordenan segn el 2, y esto es lo mismo que sumarlo a s mismo.
resultado; si son iguales se sigue con los caracte- Y el valor del bit nmero 11 se puede comprobar
res que van en segundo lugar, y as sucesivamen- si se dispone de la instruccin BN. Adapte con-
te. Una mquina de treinta y dos bits puede tener venientemente el algoritmo dado en el Apndice
tres instrucciones CMP: una para comparar bytes, A para multiplicar nmeros positivos, y escriba
otra para dos bytes (medias palabras) y otra pa- un programa que multiplique dos nmeros (para
ra palabras. La comparacin de palabras permite, simplificar, suponga que el resultado cabe en una
con una sola instruccin, comparar cuatro bytes. palabra de doce bits).
3.13. Ejercicios 129
20. Considere estos dos programas para Smplez: 21. Como sabemos, Smplez+i4 tiene una sola lnea
de entrada de interrupciones. Suponga que a esa
; Programa A lnea hay conectados dos controladores de perif-
MODULE A ricos como puede ver, adelando un poco y miran-
FROM B IMPORT SUMA2 do la descripcin en el nivel de microarquitectura,
EXPORT S1, S2, R en la Figura 9.18. El primero (el ms cercano a la
BR /PRINC UCP) sirve para controlar cierto proceso fsico,
S1 DATA 3 cuyos detalles no hacen al caso, que interrumpe
S2 DATA 5 espordicamente. El segundo controlador es de un
R RES 1 reloj que pide una interrupcin cada milisegundo,
PRINC BR /SUMA2 y sirve para mantener la hora en la UCP, que se
HALT muestra por un visualizador. El seudocdigo de
END las rutinas de servicio es:
130 Leccin 3. Variaciones sobre representacin y procesamiento
int main () {
int entero, i;
char *punt;
entero = 0x11223344;
punt = (char *) &entero;
if (*punt == 0x11)
printf("El convenio en este ordenador es extremista mayor\n");
else
printf("El convenio en este ordenador es extremista menor\n");
printf("El tamao de un entero es %d bytes \n", sizeof(entero));
printf("El nmero H'11223344 se almacena as: \n");
for (i=0; i<sizeof(entero); i++)
printf("direccin: %8x contenido: %2x \n", punt, *punt++);
exit(0);
}