Sei sulla pagina 1di 30

Leccin 3

Variaciones sobre representacin y


procesamiento

3.1. Propsito da mquina particular para escribir programas que


realicen operaciones bsicas de procesamiento, o
En las dos Lecciones anteriores hemos introdu- que establezcan comunicaciones entre mquinas
cido las ideas esenciales del nivel de mquina con- distintas. Pero, salvo en algunos de los ejerci-
vencional siguiendo la propuesta de von Neumann cios propuestos, no daremos detalles de ninguna
y los modelos concretos de Smplez y Smplez+i4. mquina real, ya que nuestro propsito es, como
Entre otras grandes simplificaciones, los datos nu- siempre, que el lector adquiera los conceptos bsi-
mricos representables en estas mquinas estn cos en los que enmarcar las particularidades de los
muy limitados: nmeros enteros comprendidos en- casos reales.
tre 0 y 4.095. En esta Leccin presentaremos los Aqu nos centramos en la representacin y los
formatos y los convenios que suelen adoptarse pa- convenios de almacenamiento en la MP y en los
ra representar en los ordenadores, en el nivel de registros de la UCP. La organizacin del almace-
mquina convencional, los datos numricos y sim- namiento de datos en memorias secundarias se tra-
blicos (cadenas de caracteres), as como los tipos tar en la Leccin 5.
de operaciones de procesamiento que pueden lle- Relegamos al Apndice A los sistemas de nu-
varse a cabo sobre esos datos. Tambin generaliza- meracin y la codificacin de caracteres, as co-
remos la idea del procesamiento de interrupciones mo los algoritmos bsicos de procesamiento nu-
introducida con Smplez+i4. Por ltimo, haremos mrico. Usaremos los prefijos B, D, Q o
una introduccin al procesamiento simblico, con H, con un apstrofo, para indicar, respectiva-
el que se construyen los sistemas del nivel de m- mente, que un nmero es binario, decimal, octal
quina simblica, incluyendo los procesos de tra- o hexadecimal. D es optativo: si un nmero no
duccin, montaje y carga de programas. lleva prefijo se supone que es decimal. Por ejem-
Hay una gran variedad de formatos y de con- plo, B101 = 22 + 1 = 5; Q101 = 82 + 1 = 65;
venios. Es importante conocer los detalles de ca- H101 = 162 + 1 = 257.

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

al nmero de lneas del bus de datos (bus D). A


veces hay que referirse a grupos de cuatro bits, o 27
palabra 27
cuartetos. 28
palabra 28
doble
palabra 27
29
La capacidad de las memorias se mide en bytes, 30
palabra 29

y normalmente es de varios millones (o miles de


millones, en el caso de las memorias secundarias).
Por esta razn, se utilizan los factores multiplica- (b) palabras, y dobles palabras,
tivos kilo, mega, etc. Pero hay que tener en con direcciones arbitrarias

cuenta que un kilobyte (abreviadamente, 1 KB)


no equivale a 1.000 bytes, sino a 210 = 1.024 by- Figura 3.1 Direcciones alineadas y no alineadas.
tes1 . Del mismo modo, un megabyte (1 MB) es
1.024 KB = 1.048.576 bytes. Las memorias se-
Direcciones de la MP
cundarias suelen tener capacidades de gigabytes
(1 GB = 1.024 MB = 230 B), y para medir grandes Aunque la longitud de palabra sea de varios by-
volmenes de datos se utilizan el terabyte (1 TB tes, la memoria principal normalmente es direc-
= 240 B), el petabyte (1 PB = 250 B), el exaby- cionable por bytes, palabras, dobles palabras, etc.
te (1 EB=260 B), el zettabyte (1 ZB = 270 B) y el Cuando inicia una operacin de acceso, la UCP
yottabyte (1 YB = 280 B). pone una direccin en el bus de direcciones y le
1 comunica a la MP, mediante seales de control, si
Esto quebranta el uso estndar de los prefijos en el
Sistema Internacional, por lo que algunas organizaciones quiere leer (o escribir) un byte, o una palabra, etc.
de normalizacin han propuesto la introduccin de nuevos En algunas UCP de diecisis bits es obligatorio
prefijos: Ki (kibi, por kilobinary), Mi (mebi, por megabi- que las palabras tengan siempre direccin par, co-
nary), etc., para referirse a 210 , 220 , etc. Esta propuesta,
que data de 1998, y que puede consultarse en la direccin
mo indica la Figura 3.1(a), y las dobles palabras
http://physics.nist.gov/cuu/Units/binary.html, mltiplo de cuatro. Se dice que las direcciones de-
ha tenido un seguimiento prcticamente nulo. ben estar alineadas. En otras, esta limitacin no
3.2. Memoria principal y registros 103

existe: una palabra, doble palabra, etc. puede em- UCP MP


pezar en cualquier direccin, par o impar (Figu- AC instruccin en curso
ra 3.1(b)). En las UCP de treinta y dos bits un con-
CP instruccin siguiente
junto de dos bytes se llama media palabra; si las UAL
direcciones son alineadas, las direcciones de me-
dias palabras deben ser pares, las de palabra, ml- X
tiplos de cuatro y las de doble palabra mltiplos de
ocho2 .
Figura 3.2. El contador de programa en Smplez y en
Smplez+i4.
Registros
En Smplez+i4 hemos visto que el programador contener datos. Como veremos en la Leccin si-
poda hacer uso de dos registros: un acumulador guiente, las instrucciones aritmticas suelen ope-
(para operaciones aritmticas y para intercambio rar con los contenidos de dos de estos registros,
de datos entre la UCP y la MP y los perifricos) y dejando el resultado en un tercero. De este mo-
un registro de ndice (en principio, para direccio- do se reducen los accesos a la MP y se acelera la
nar operandos, aunque, como mostraban algunos ejecucin de los programas: es mucho ms rpido
ejemplos, puede tambin utilizarse con las mismas acceder a los registros que a la MP.
funciones que el acumulador).
Smplez y Smplez+i4 tienen otros registros que
son transparentes al programador, como vere-
mos al estudiar la microarquitectura. Entre ellos Registros de direccionamiento
est el contador de programa, CP, un registro de
El tener ms de un registro de ndice facilita
nueve bits en Smplez y de doce en Smplez+i4
la programacin (es posible que el lector lo haya
que contiene siempre la direccin de la siguiente
pensado si ha trabajado sobre los ejercicios pro-
instruccin a ejecutar (Figura 3.2). Pero en algu-
puestos en la Leccin 2). Pero hay otros modos de
nas UCP el contador de programa no es un registro
direccionamiento (los estudiaremos en el Aparta-
transparente al programador (en el nivel de mqui-
do 4.5) que implican la existencia de otros regis-
na convencional), ya que ste puede hacer uso de
tros, entre ellos el contador de programa, del que
l. Estudiaremos cmo lo puede hacer y para qu
ya hemos hablado, o registros de base, de segmen-
puede servir al final del Apartado 4.5 y, con ms
to y punteros de pila.
detalle, en la Leccin 6.
Actualmente, las UCP tienen muchos otros re-
gistros visibles para el programador:
Registros de propsito general

Registros aritmticos En la mayora de las UCP se pone a disposicin


del programador un conjunto de registros que ste
La idea de un registro acumulador ha queda- puede utilizar indistintamente como registros arit-
do obsoleta: las UCP disponen de varios registros mticos o para direccionamiento; se les llama re-
(8, 16, 32, e incluso muchos ms) previstos para gistros de propsito general (RPG). Normalmente
2
En estas mquinas, el intento de ejecutar una instruccin
estn dispuestos como una memoria local que se
con una direccin de palabra no alineada produce una inte- direcciona con un campo del formato de instruc-
rrupcin interna (vase, por ejemplo, la Tabla 8.14). ciones.
104 Leccin 3. Variaciones sobre representacin y procesamiento

Registro de estado nivel de mquina simblica; los trataremos some-


ramente en el Apartado 22.9.
El registro de estado es prcticamente impres-
cindible. En Smplez y Smplez+i4, para simpli-
ficar, hemos prescindido de l, lo que conduca a Caracteres
un problema de difcil resolucin: cmo guardar el La representacin de informacin simblica en
valor del indicador de cero (Z) al pasar a atender el nivel de mquina convencional se reduce a la re-
a una interrupcin (Apartado 2.9). Normalmente presentacin de cadenas de caracteres, sin ningn
hay cuatro indicadores de un bit asociados a la significado asociado, y, en consecuencia, es fcil:
UAL3 : basta con convenir un cdigo, que asigna a cada
Indicador de cero, Z: se pone a 1 si el resul- carcter un conjunto de bits. En la Leccin 1 hici-
tado de la operacin es cero (ste es el nico mos ya mencin de estos cdigos, al referirnos a
que tienen Smplez y Smplez+i4). las comunicaciones de la UCP con los perifricos
Indicador de negativo, N: se pone a 1 o a 0 (Apartados 1.2 y 1.12).
segn que el resultado de la operacin sea ne- El ASCII es una norma (ISO 646) universal-
gativo o no. mente adoptada desde hace aos para representa-
Indicador de desbordamiento, V: se pone a 1 cin de caracteres con siete bits. Las treinta y dos
si se ha producido desbordamiento en una ope- primeras codificaciones y la ltima no representan
racin aritmtica. caracteres visibles, sino acciones de control. Por
Indicador de acarreo, C: se pone a 1 si la su- tanto, quedan 27 33 = 95 configuraciones bina-
ma o la resta de los operandos generan un aca- rias con las que se codifican los dgitos decima-
rreo. les, las letras maysculas y minsculas y algunos
caracteres comunes (espacio en blanco, ., +,
Adems de Z, N, V y C, el registro de estado
, <, etc.), pero no letras con tilde, ni otros
contiene otros indicadores que deben guardarse y
smbolos como , , etc. Aadiendo un bit (es
restaurarse en el procesamiento de interrupciones:
decir, utilizando un byte para cada carcter) resul-
el de modo (usuario/supervisor, Apartado 4.2), el
tan ciento veintiocho nuevas configuraciones. Hay
de permiso de interrupciones, etc.
unas normas internacionales para esta ampliacin4
del ASCII, las ISO 8859-X. X es un nmero
comprendido entre 1 y 15: las normas definen dis-
3.3. Representacin de los tipos ele- tintos juegos de caracteres, para abarcar todas las
mentales de datos lenguas. La adecuada para Europa occidental y
Amrica es la ISO 8859-1, tambin conocida co-
Los tipos elementales de datos son los ca- mo ISO Latin1, o, ms reciente, la ISO 8859-15, o
racteres (letras, dgitos y otros smbolos bsicos), ISO Latin9, que se reproduce en el Apndice A.
las direcciones de la MP, los nmeros enteros y La norma ISO 10646, o UCS (Universal Charac-
los nmeros reales. Los tipos compuestos (re- ter Set), ms conocida como Unicode, pretende
gistros, listas, ficheros, etc.) se definen mediante evitar esta diversidad, con un cdigo nico para
software, por lo que estn ms relacionados con el todos los caracteres de todas las lenguas (Apndi-
ce A).
3
Algunas UCP no tienen estos indicadores. Su funcin
4
(permitir transferencias de control condicionadas) se realiza Ampliacin quiere decir que el nuevo cdigo es igual
mediante instrucciones de bifurcacin condicionadas al re- que el ASCII para codificaciones inferiores a H80 (es decir,
sultado de la comparacin de los contenidos de dos registros con el bit ms significativo a cero), y define nuevos caracteres
(bifurca si igual, bifurca si mayor, etc.) codificados entre H80 y HFF.
3.3. Representacin de los tipos elementales de datos 105

As pues, cada carcter se representa en un by- Nmeros enteros


te, y una cadena de n caracteres, en n bytes. Pero,
Para representar un nmero natural lo ms na-
en qu orden? Por ejemplo, cmo almacenamos
tural es tomar los bits de su expresin en bina-
la cadena Cdigo Latin1. en bytes sucesivos de
rio, fijando una determinada cantidad de bits, la
una memoria?. En total, contando el espacio en
misma para todos los nmeros. Esta cantidad pue-
blanco, son catorce caracteres, por lo que ocupa-
de coincidir con la longitud de la palabra, o ser
rn una zona de catorce bytes. Si esta zona empie-
un mltiplo de ella, si la longitud es insuficien-
za en la direccin d, un posible arreglo es guardar
te para representar toda la extensin de valores
la codificacin de C (B01000011 = H43)5 en
requeridos. Es obvio que slo puede representar-
el byte de direccin d, la de (B11110011 =
se un subconjunto finito, tanto mayor cuanto ms
HF3) en d + 1, etc., es decir:
bits se hayan fijado: con dos bits hay cuatro con-
Dir. Cont. Dir. Cont. figuraciones (00, 01, 10, 11), por lo que slo po-
d 43 ( C) d+7 4C (L) demos representar cuatro nmeros; con tres bits,
d+1 F3 ( ) d+8 61 ( a) ocho configuraciones (000, 001, ..., 111), y, en ge-
d+2 64 ( d) d+9 74 ( t) neral, con n bits tendremos (aplicando la combi-
d+3 69 ( i) d + 10 69 ( i)
natoria) VR2,n = 2n configuraciones.
d+4 67 ( g) d + 11 6E (n)
d+5 6F ( o) d + 12 31 ( 1) Para poder representar tanto enteros positivos
d+6 20 ( ) d + 13 2E (.) como negativos se hace una particin equitativa
del conjunto de todas las posibles configuraciones
Pero igualmente podramos convenir en almacenar de bits. El convenio unnimemente seguido es re-
C en la direccin d + 13 y seguir hacia arriba. servar un bit, el primero por la izquierda (el ms
Es una cuestin de convenios aparentemente tri- significativo), para dar la informacin sobre el
vial. De hecho, en el nivel de mquina simblica ni signo: 0 para los positivos y 1 para los negativos.
se plantea: los lenguajes de alto nivel facilitan un A ese bit se le llama bit de signo.
tipo de datos, normalmente llamado string, y el El resto de los bits contiene la informacin so-
compilador se encarga de su representacin inter- bre el valor absoluto del nmero. El primero de la
na y del orden de almacenamiento. Sin embargo, derecha es el bit de peso 0, o bit menos significa-
es importante tenerla en cuenta para las comunica- tivo, y en adelante lo abreviaremos como bms. La
ciones entre ordenadores. Volveremos sobre esto Figura 3.3 ilustra este convenio para el caso par-
en el siguiente Apartado. ticular de n = 16. Los nmeros que aparecen so-
bre el rectngulo coinciden con los pesos que stos
Direcciones de la MP tienen en el sistema de numeracin binario, salvo
para el bit ms significativo, bMs (llamado N en
Las direcciones de la MP corresponden al tipo la Figura 3.3), que da la informacin sobre el sig-
de datos puntero de los lenguajes de alto nivel. no: si bMs = 1, el nmero es negativo.
Son nmeros enteros comprendidos entre 0 y M ,
15 0
donde M = 2n 1, y n es el nmero de bits ne- b
N m
cesarios para direccionar la MP. Por tanto, se re- s
presentan igual que los nmeros enteros (que tra-
Figura 3.3 Formato de coma fija de diecisis bits.
taremos a continuacin) pero siempre en binario,
y, naturalmente, sin signo.
As pues, un nmero positivo se representar
5
Las codificaciones pueden comprobarse en las Ta- con 0 en el bit de signo y la informacin sobre
blas A.2 y A.3 del Apndice A. su magnitud en los n 1 bits restantes. Para los
106 Leccin 3. Variaciones sobre representacin y procesamiento

configuraciones interpretaciones decimales


binarias signo y magnitud complemento a 1 complemento a 2
0000...0000 0 0 0
nmeros 0000...0001 1 1 1
positivos ... ... ... ...
0111...1110 2n1 2 2n1 2 2n1 2
0111...1111 2n1 1 2n1 1 2n1 1
1000...0000 0 (2n1 1) (2n1 )
nmeros 1000...0001 1 (2 n1 2) (2n1 1)
negativos ... ... ... ...
1111...1110 (2n1 2) 1 2
1111...1111 (2n1 1) 0 1
Tabla 3.1 Comparacin de convenios para formatos de coma fija.

nmeros negativos, aparte de tener 1 en el bit de en signo y magnitud y en complemento a 1 exis-


signo, puede seguirse uno de estos tres convenios: ten dos representaciones para el nmero 0, mien-
signo y magnitud (o signo y mdulo): se re- tras que en complemento a 2 la representacin es
presenta el valor absoluto; nica (y hay un nmero negativo ms, cuyo valor
complemento a 1, que consiste en cambiar los absoluto no puede representarse con n bits). Asi-
ceros por unos y los unos por ceros mismo, que la extensin de la representacin (di-
en la representacin binaria del correspondien- ferencia entre el nmero mximo y el mnimo re-
te nmero positivo; presentables) es una funcin exponencial de n 1.
complemento a 2, que se obtiene sumando una La eleccin de un convenio u otro afecta al dise-
unidad al complemento a 1. o de la UAL. Es ms frecuente utilizar un conve-
Por ejemplo, el nmero 58 = H3A = nio de complemento, porque los circuitos de una
B111010, en el formato de la Figura 3.3, y se- UAL para sumar y restar con nmeros positivos y
gn el convenio que se adopte, dara lugar a las negativos resultan ser ms sencillos (pero ste es
siguientes representaciones: ya un asunto propio del nivel de circuito lgico).
con signo y mdulo: 1000000000111010 El nmero de bits, junto con el convenio adop-
tado, determinan el formato de coma fija del or-
con complemento a 1: 1111111111000101
denador. Generalmente, la UCP contempla varios
con complemento a 2: 1111111111000110 formatos de distinta longitud para que el progra-
Es fcil comprobar que si A es la representacin mador pueda hacer uso del que ms le interese, en
de un nmero con n bits, incluido el de signo, y si funcin de la extensin de la representacin que
C1 y C2 son respectivamente las representaciones necesite. Dicho de otro modo, existen (como ve-
en complemento a 1 y complemento a 2 del mismo remos en el Apartado 4.7) varias instrucciones de
nmero cambiado de signo, entonces A + C1 = suma, varias de resta, etc., unas para operar con
2n 1, y A + C2 = 2n .6 bytes, otras para operandos de diecisis bits, etc.
La Tabla 3.1 muestra una comparacin de los
tres convenios para n bits. Puede observarse que Representacin en BCD
6
Por tanto, en rigor, lo que habitualmente llamamos
Si se adopta la representacin interna con el sis-
complemento a 2 es complemento a 2n (y complemen- tema de numeracin binario y todas las operacio-
to a 1 es complemento a 2n 1). nes aritmticas se realizan en binario, entonces es
3.3. Representacin de los tipos elementales de datos 107

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"

pificacin dinmica), y esta caracterstica resulta 0 7


b b
M m
muy til para el diseo de los programas procesa- s s
dores (compiladores o intrpretes, Apartados 3.7 (b) convenio
"extremista mayor"
y 22.3) de esos lenguajes.
Figura 3.7 Numeracin de los bits de un byte.

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

palabra 1 palabra 0 dir.


byte 1 byte 0 byte 1 byte 0 b byte 1 byte 0
i m
s
7 6 5 43 2 107 6 5 43 2 107 6 5 43 2 10 7 6 5 43 2 10 N
i+1 N
(a) extremista menor

(a) convenio "extremista menor"


palabra 0 palabra 1
byte 0 byte 1 byte 0 byte 1

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

Figura 3.8 Numeracin de bits, bytes y palabras.


(b) convenio "extremista mayor"

indicadas en la Figura 3.8.9 Figura 3.9. Almacenamiento, en dos bytes de la MP,


de un entero representado con diecisis bits.
En realidad, la forma de numerar los bits de un
byte o los bytes de una palabra no tiene mucha im-
dir.
portancia, desde el momento en que la UCP mane- M7M0 m
b
i
s
ja ese conjunto de bits en paralelo, y los nmeros
0
no son ms que etiquetas que slo nos sirven i+1 M15M8 31 23
b
N C M m
a nosotros para referirnos individualmente a cada i+2 M23M16 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"

la Figura 3.10. i+2 "I" (H49) byte 0 byte 1 byte 2 byte 3

Las cadenas de caracteres se almacenan gene- i+3 "X" (H58) "U" (H55) "N" (H4E) "I" (H49) "X" (H58)

9 (b) convenio "extremista mayor"


No obstante, como la numeracin extremista menor para
los bits tiene la ventaja de hacer coincidir el nmero con el
peso de cada bit, en muchos manuales de ordenadores que, Figura 3.11. Representacin en una palabra de treinta
por lo dems son extremistas mayores, se numeran los bits
y dos bits de la cadena UNIX.
como indica la Figura 3.7(a).
3.5. Operaciones de procesamiento 113

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

el bMs se lleva a C y se introduce un 0 por la Adems de comunicarse con la MP y los perif-


derecha, vase la Figura 3.12(a). ricos y de procesar instrucciones y datos, la UCP
Las instrucciones que permiten realizar este ti- debe reconocer y atender a las interrupciones. En
po de desplazamientos suelen tener los nombres Smplez+i4 hemos introducido un esquema muy
nemnicos SHR (shift right) y SHL (shift left) bsico (Apartado 2.8) que, no obstante, incluye ya
o parecidos. los conceptos ms importantes. Aqu generaliza-
remos esos conceptos, y en Algortmez (Aparta-
Desplazamientos circulares do 6.14) volveremos a concretar con un esquema
En los desplazamientos circulares, tambin lla- ms elaborado.
mados rotaciones, el bit que sale por un extre- Los mecanismos de interrupciones son muy va-
mo se introduce por el otro, como indica la Figu- riados. El hardware previsto en la UCP para esta
ra 3.12(b). funcin puede ser ms o menos sofisticado, y de-
Los nemnicos de las correspondientes instruc- termina las operaciones que hay que realizar me-
ciones son del tipo: ROR (rotate right) y ROL diante software. Aqu nos centramos en lo que ata-
(rotate left). e al nivel de mquina convencional, por lo que
Las rotaciones a travs del indicador C funcio- haremos nicamente las alusiones imprescindibles
nan como puede verse en la Figura 3.12(c). Los a los componentes de hardware, que estudiaremos
nemnicos son RORC y ROLC con detalle en la Segunda Parte.

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-

Salvar el contexto es guardar todo lo necesario


vector 0
para que al volver al programa interrumpido ste
vector 1
contine como si nada hubiese pasado. En Sm-
plez+i4 la UCP guarda la direccin de retorno (en
una direccin fija de la MP, la 63), y las rutinas
RS1
de servicio guardan los contenidos de AC y de X
y luego los restauran. Ya apuntamos, en el Apar-
tado 2.9, que este esquema es insuficiente: habra
que guardar tambin la informacin de si el ltimo
RS0
resultado en la UAL ha sido cero (el bit Z)11 . En
general, hay que guardar el estado de la UCP, que
11
Tambin hemos visto que este fallo se puede subsanar
mediante software (Apartado 2.9 y Ejercicio 10 de la Lec-
cin 2). Figura 3.13 Vectores de interrupcin.
118 Leccin 3. Variaciones sobre representacin y procesamiento

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

ta un posible mapa de la MP, en el que se supone


que los vectores estn almacenados desde la direc- nivel 1

cin 0 y que los dos primeros bytes de cada uno


programa
contienen el puntero a la RS.
t0 t1 t2 t3 t4 t5 t6
t
INT1 INT4
Consulta de interrupciones INT2 INT3
Figura 3.14 Anidamiento de interrupciones.
En Smplez+i4 el averiguar la causa de la inte-
rrupcin es trivial: si no es el teclado, ha sido la 1. Inicialmente, las interrupciones estn todas in-
pantalla. Si hay muchas causas se puede generali- hibidas, y estn pendientes una causa de nivel 1
zar el procedimiento: consultar los distintos puer- y otra de nivel 4.
tos de estado (y las causas internas) sucesivamente
2. En t0 el programa ejecuta la instruccin EI, que
hasta identificar al causante de la interrupcin (o a
da el permiso de interrupciones; la UCP inte-
uno de los causantes, ya que puede haber varios
rrumpe a este programa y pasa a la RS de la
pidiendo interrupcin). Esta es una consulta por
causa de nivel 4.
software, pero hay una manera ms eficiente (ms
rpida) de hacerlo. Los mismos circuitos que ge- 3. En t1 se termina la ejecucin de la RS, pero
neran la interrupcin pueden enviar a la UCP (por como an est pendiente otra interrupcin, la
el bus de direcciones) su vector de interrupcin UCP no vuelve al programa inicial, sino a la
(direccin de comienzo de la RS) o la direccin de RS de esta causa.
la MP donde el vector se encuentra. En este caso 4. En t2 an no ha terminado de ejecutarse esta
se habla de interrupciones vectorizadas. RS, pero aparece una interrupcin de nivel 2,
ms prioritaria, por lo que la UCP interrumpe y
pasa a servirla.
Anidamiento y gestin de prioridades
5. En t3 aparece una interrupcin de nivel 3, por
Ciertas causas de interrupcin requieren una lo que la UCP pasa a su RS.
atencin urgente (por ejemplo, la de fallo de ali- 6. En t4 termina la RS de la causa de nivel 3, y la
mentacin), y no pueden esperar porque otra se UCP vuelve a la de nivel 2.
est sirviendo. Cuando las interrupciones pueden
7. En t5 termina la RS del nivel 2, y vuelve a la
interrumpir a las RS de otras interrupciones se di-
del nivel 1.
ce que se anidan. A cada causa de interrupcin
se le asigna uno de entre varios niveles de priori- 8. En t6 termina la RS de la causa de nivel 1; no
dad, de modo que una interrupcin slo se atiende hay ms interrupciones pendientes, y la UCP
si su nivel es superior al de la causa cuya RS se es- contina con el programa.
t ejecutando. La Figura 3.14 ilustra grficamen- Para la gestin de prioridades hay tambin una
te la sucesin en el tiempo de los programas que variedad de esquemas, desde el puramente soft-
ejecuta la UCP en un caso imaginario en el que ware, hasta controladores hardware muy eficientes
hay cuatro niveles, desde el nivel 1 (el de menor para esa tarea. En el Apartado 6.14 estudiaremos
prioridad) al nivel 4 (el de mayor prioridad): casos concretos.
3.7. Introduccin al procesamiento simblico 119

3.7. Introduccin al procesamiento Smbolo Direccin


MSPAN 1
simblico MSTEC 2
XPAN 3
XTEC 4
En el Apartado 1.11 hemos presentado un len- ... ...
guaje ensamblador sencillo (que ms adelante, en PBIFPAN 54
el Apartado 6.7, ampliaremos) y tambin la idea PBIFTEC 55
esencial de la funcin de un programa ensambla- PFIN 56
dor (procesador del lenguaje).
En el segundo paso recomenzamos la lectura y
En este curso no trataremos (salvo muy gen- vamos traduciendo, consultando cuando es nece-
ricamente, en la Leccin 22) el nivel de mqui- sario la tabla.
na simblica, y, por tanto, no estudiaremos mo- Pues bien, los programas ensambladores tam-
delos detallados de los procesadores de lenguajes. bin pueden ser de un paso o (ms frecuentemen-
No obstante, parece interesante presentar aqu, de te) de dos pasos, y su ejecucin sigue, esencial-
manera intuitiva, las ideas bsicas del modelo pro- mente, este modelo procesal.
cesal de un ensamblador. Son las mismas que se- Por otra parte, es importante tener una idea clara
guiramos para llevar a cabo manualmente la tra- de la secuencia de actividades que deben seguirse
duccin de un programa fuente al cdigo objeto. para ejecutar un programa escrito en un lengua-
Fijmosnos en el Programa 2.4. Para traducir a je fuente (en este caso, escrito en ensamblador).
binario la primera instruccin (BR /PRINC) con- La Figura 3.15 (en la pgina siguiente) ilustra es-
sultamos la Tabla 1.2 que nos dice que los tres tas actividades. El smbolo en forma de cilindro
bits ms significativos van a ser 011; los tres representa un disco. En este disco tendremos per-
siguientes, segn el modelo funcional de Sm- manentemente disponible, entre otras muchas co-
plez+i4 (Apartado 2.3) sern 000, y para obte- sas, el programa ensamblador traducido a binario
ner los seis bits restantes tenemos que contar: si (ejecutable).
decidimos que esta primera instruccin se va a al- 1. Se carga el programa ensamblador mediante la
macenar en la direccin 0, avanzamos en la lec- ejecucin de otro programa, el cargador, que
tura del programa fuente y vemos que a la eti- tiene que estar previamente en la MP12 .
queta PRINC le va a corresponder la direccin 2. Al ejecutarse el ensamblador, las instrucciones
D12. Completamos as la traduccin a binario que forman nuestro programa fuente son los
de la primera instruccin: 011000001100. Luego datos para el ensamblador. ste, a partir de esos
vienen cuatro palabras reservadas, y tras ellas la datos, produce como resultado un programa es-
constante D3840, que traducimos por Q7400 = crito en lenguaje de mquina (un cdigo obje-
B111100111111, y as sucesivamente. En lugar to), que, normalmente, se guarda en el disco.
de este proceso, que implica avanzar a veces en 3. Se carga el cdigo objeto en la MP. El ensam-
la lectura para averiguar la direccin correspon- blador ya no es necesario, por lo que, como in-
diente a una etiqueta y luego retroceder para dica la figura, se puede hacer uso de la zona que
completar la traduccin de una instruccin, pode- ste ocupaba.
mos hacer la traduccin en dos pasos: en el prime-
4. Se ejecuta el cdigo objeto.
ro nos limitamos a leer el programa fuente e ir ano-
tando las direcciones que corresponden a las eti- 12
Si el cargador est en la MP, tiene que haber sido carga-
quetas; terminada esta primera lectura habremos do. En el Apartado siguiente veremos cmo se puede romper
completado una tabla de smbolos: este crculo vicioso.
120 Leccin 3. Variaciones sobre representacin y procesamiento

trucciones bsicas de un lenguaje de alto nivel no


MP
se llaman instrucciones, sino sentencias; ca-
ensamblador
da sentencia puede dar lugar, en el proceso de tra-
ensamblador duccin, a una o ms instrucciones de mquina. El
cargador
programa traductor para un lenguaje de alto nivel
se llama compilador. La secuencia de pasos ilus-
1. Se carga el ensamblador en la MP
trada en la Figura 3.15 sigue siendo aplicable, sus-
programa fuente
tituyendo ensamblador por compilador. En el
MP Apartado 17.4 veremos modelos ms detallados.
ensamblador Algunos lenguajes de alto nivel (Perl, Phyton,
etc.) estn diseados para ser interpretados, no
ensamblador
compilados. El programa intrprete no traduce a
"codigo objeto"
binario, sino que va analizando las sentencias del
programa fuente y ejecutndolas. Y an hay otros
2. Se ejecuta el ensamblador (Java, C#, etc.) concebidos para procesar el pro-
grama fuente en dos fases: en la primera se hace
MP una compilacin que genera un programa interme-
dio en el lenguaje de una mquina virtual, inde-
"codigo
objeto" pendiente de la mquina real en la que finalmente
ensamblador
se ejecutar; en la segunda fase, un intrprete es-
cargador crito para esa mquina real ejecuta el programa in-
"codigo objeto"
termedio. El caso concreto de Java se trata en las
3. Se carga el programa binario en la MP Lecciones 23 y 24.

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

finida en el mdulo en el que se encuentra esa ins- mdulo


fuente
truccin, entonces debe ligarse a la direccin real,
pero si el programador ha escrito BR /2000, pare-
ce obvio que quiere referirse a la direccin absolu-
compilacin o
ta D2.000, que no debe cambiarse. La lista de di- ensamblaje
tiempo de
recciones que hay que ajustar se llama diccionario
traduccin
de reubicacin. Un ensamblador que genera cdi- otros mdulos
objeto
go reubicable junto con un diccionario de reubica- mdulo
objeto
cin se llama ensamblador reubicante. Un car-
gador que toma el cdigo objeto y suma la cons-
tante de reubicacin a las direcciones indicadas en montaje
el diccionario se llama cargador reubicador.

mdulos de
biblioteca mdulo
de carga
tiempo de
Visin global
carga

En el Apartado 4.5 veremos la aplicacin de los carga

modos de direccionamiento relativos para la reubi-


cacin de programas, y en los Apartados 6.6 y 6.8,
mdulos de
ya con una mquina y un ensamblador concretos, biblioteca
cdigo
ejecutable
(carga dinmica)
insistiremos en todo esto. De momento, la Figu-
ra 3.16 resume lo que acabamos de explicar, y aa-
de algunos detalles. En esta figura se hace abstrac- ejecucin
en la UCP tiempo de
cin de los componentes fsicos (memoria princi-
ejecucin
pal y disco) que aparecan en la Figura 3.15. Se
representan con valos los procesos (ejecucin de
programas) y con rectngulos los resultados, que
generalmente (salvo en la salida del cargador) se Figura 3.16. Sucesin de procesos, desde la traduccin
guardan en disco, de donde los lee el proceso si- hasta la ejecucin.
guiente.
El montador recibe como entradas los mdulos Carga inicial
objeto (cada uno de stos incluye el cdigo objeto,
las tablas de smbolos y el diccionario) generados En el Apartado anterior sealbamos, en una
por el traductor, y tambin mdulos de biblioteca. nota a pie de pgina, un aparente crculo vicio-
stos son programas o rutinas de uso general, re- so: si el cargador tiene que estar en la MP para
sidentes en disco, de los que pueden hacer uso los ejecutarse, quin lo carga? La solucin primitiva
dems programas. Como indica la figura, los m- era cargar a mano (con acciones como las des-
dulos de biblioteca los puede incorporar el monta- critas al final del Apartado 1.3) un pequeo car-
dor o el cargador. La salida del cargador es ya un gador bsico que al ejecutarse cargaba el carga-
programa binario ejecutable. Para reducir su tama- dor definitivo. En los ordenadores actuales, este
o, ciertas funciones de biblioteca pueden cargarse cargador inicial est grabado en la zona de s-
dinmicamente, es decir, en tiempo de ejecucin lo lectura de la MP, y se ejecuta automticamente
(cuando el programa las reclama). al arrancar el sistema (Apartado 18.9).
3.9. Resumen 123

3.9. Resumen buscar una solucin equilibrada entre coste y efi-


ciencia (rapidez de ejecucin), y que la decisin
La informacin se representa en el interior del depende del tipo de problemas a resolver, es fre-
ordenador (en la MP, o en los registros de la UCP) cuente que el hardware para ciertas operaciones
de forma binaria, adoptando convenios sobre el sea una opcin.
significado de cada bit y el orden en que se con- Las operaciones lgicas se realizan bit a bit so-
sideran almacenados los bits y los bytes en la me- bre un operando (not) o sobre dos (and, or, nand,
moria y en los registros. nor y or excluyente) y resultan muy tiles para
En el nivel de mquina convencional, las infor- procesamiento simblico.
maciones a representar (dejando la representacin Las operaciones de desplazamiento se aplican a
de instrucciones para la siguiente Leccin) son de los bits de una palabra. Las hay de distintos tipos:
dos tipos: numricas y simblicas. Para represen- a la izquierda y a la derecha, lgicos, aritmticos
tar los caracteres o smbolos bsicos hay distintos y circulares. Un desplazamiento aritmtico a la iz-
cdigos, pero el ms utilizado es el cdigo ASCII quierda de un nmero binario equivale a una mul-
de siete bits, y su ampliacin a ocho bits, la norma tiplicacin por dos, y un desplazamiento aritmti-
ISO 8859-1 (ISO Latin1), o bien la ISO 8859-15 co a la derecha a una divisin por dos. De aqu que
(ISO Latin9). se apliquen sistemticamente en los algoritmos de
Para las informaciones numricas hay dos op- multiplicacin y divisin.
ciones: cadenas BCD (cada dgito decimal del va- Hemos visto las ideas fundamentales del proce-
lor numrico a representar se codifica con cuatro samiento de interrupciones: las causas de interrup-
bits y se empaquetan dos dgitos por byte, o no cin pueden ser internas o externas, y para cada
se empaquetan, y cada dgito ocupa un byte) o re- una es preciso mantener cargada en la MP una ru-
presentacin en el sistema binario de numeracin. tina de servicio, RS. Para cada RS existe un vector
En este ltimo caso tambin hay dos posibilida- de interrupcin almacenado en la MP que contie-
des: coma fija o coma flotante. En cualquier caso, ne, como mnimo, la direccin de comienzo de la
hay que tener en cuenta los convenios sobre los rutina. Al atender a una interrupcin, se hace un
formatos (longitud y estructura en campos de la cambio de contexto, salvando el estado de la UCP
representacin, nmeros negativos, base y repre- (para volver sin problemas al programa interrum-
sentacin del exponente en el caso de coma flo- pido), averiguando la causa de la interrupcin (me-
tante) y sobre el orden de almacenamiento en la diante una consulta por software o por hardware)
memoria: con el convenio extremista menor, los y pasando a la ejecucin de la RS. Cada causa de
bits menos significativos se almacenan en la direc- interrupcin tiene asociada una prioridad (de ma-
cin ms baja, y en el extremista mayor, en la ms nera que si en un momento hay varias pendientes
alta. se atiende a la ms prioritaria), y en esquemas ela-
Las operaciones aritmticas (suma, resta, mul- borados se permite un anidamiento de interrupcio-
tiplicacin, divisin) se realizan sobre operandos nes (de modo que si aparece una interrupcin ms
con algoritmos que, naturalmente, dependen del prioritaria que aquella a la que se est sirviendo, la
convenio seguido para representar a las informa- interrumpe).
ciones numricas. Algunos de estos algoritmos se Finalmente, tambin se ha introducido el asunto
presentan en el Apndice A. Lo ms importante a del procesamiento simblico a travs del concep-
recordar es que tales algoritmos pueden realizarse to de programa ensamblador: un programa cuyos
mediante circuitos lgicos, es decir, por hardware, datos de entrada son instrucciones de mquina co-
o, en ausencia de tales circuitos, mediante progra- dificadas en un lenguaje simblico (lenguaje en-
mas, es decir, por software. Dado que se trata de samblador), ms asequible para las personas que
124 Leccin 3. Variaciones sobre representacin y procesamiento

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

5. Si una determinada palabra de la MP de Smplez Nmeros negativos: complemento a 2.


contiene 100110011000, encuentre qu infor- Mantisa: normalizacin fraccionaria.
macin est representada, suponiendo que se in-
Base: 16
terpreta:
Exponente: en exceso de 64
a) como un dato en coma fija; (C = E + 64; 64 E 63)
b) como un dato en coma flotante; Al existir formatos que ocupan varias palabras
c) como una cadena de dgitos BCD; (Figuras 3.17(c) y 3.17(d)) es importante el con-
d) como una instruccin; venio de almacenamiento. Observando esas figu-
ras se ve que es un convenio extremista mayor:
e) como un carcter ASCII de siete bits (los los bits menos significativos van siempre a las di-
cinco ms significativos son indiferentes). recciones ms altas.
f) como un carcter ISO Latin9 de ocho bits Obtenga las configuraciones de bits que corres-
(los cuatro ms significativos son indiferen- ponderan en estos formatos a los nmeros que
tes). han resultado del Ejercicio anterior (D160 y
6. En el modelo funcional del Pentium (o, ms D18.337.497.088).
precisamente, la arquitectura Intel IA32) los
8. Un caso un poco ms complicado es el de la se-
enteros en BCD empaquetado se representan con
rie de ordenadores DEC-VAX (Figura 3.18), en
diez bytes, con convenio de signo y magnitud. El
los que la MP se direcciona por bytes. Conside-
bit ms significativo es el bit de signo, y los otros
remos primero el convenio sobre el orden de al-
siete bits de ese byte ms significativo son todos
macenamiento. Los formatos de coma fija (Figu-
ceros. El valor absoluto del nmero se representa
ras 3.18(a) y 3.18(b)) son claramente extremis-
en los nueve bytes restantes. El convenio de alma-
tas menores, no slo por la numeracin de los
cenamiento en memoria es extremista menor.
bits dentro de cada byte, que, como hemos dicho
a) Escriba el mapa de memoria de las direc- es lo menos importante, sino por la forma de al-
ciones d a d + 9 cuando en ellas est repre- macenar los bytes en memoria: empezando por el
sentado el nmero D98.765 1010 . byte que contiene los bits menos significativos y
b) Cules son el mayor y el menor nmero
representables? 0 31

c) Responda a las mismas preguntas anterio- N N30N0 bms

res suponiendo que el convenio fuese de (a) punto fijo


complemento a 10. 0 1 7 31
N C6C0 M23M0 bms
7. Como hemos dicho, prcticamente todos los fa- (b) punto flotante
bricantes han adoptado la norma IEEE 754. Sin 0 1 7 31
embargo, en los grandes ordenadores, en los que N C6C0 M5532
se siguen utilizando programas escritos hace mu-
M31M0 bms
chos aos, es frecuente que tambin se mantengan
(c) punto flotante con doble precision
los formatos antiguos. La Figura 3.17 muestra los
formatos de coma flotante de una serie histrica, 0 1 7 31

la IBM 370, que se conserva en procesadores ac- N C6C0 M111M88


tuales de esta compaa. Como puede verse, ade- M87M56
ms del formato de una sola palabra de treinta y
M55M32
dos bits hay otros dos, de doble y cudruple pre-
cisin, que ocupan dos y cuatro palabras, para las M31M0 bms

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

(b) punto fijo (c) punto flotante


32 bits 32 bits

7 0 7 0 7 0

i C M54M48 i C3C0 M51M48 i C7C0

N C7C1 N C10C4 N C14C8

M39M32 M39M32 M103M98

M47M40 M47M40 M111M104

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

(d) punto flotante (e) punto flotante (f) punto flotante


64 bits 64 bits 128 bits
(margen normal) (margen grande)

Figura 3.18 Formatos y convenios de los DEC-VAX.

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

17. Compruebe el algoritmo de Booth ejecutando a ; Programa B


mano los productos: 16 30; 8 (6), y 8 MODULE B
(6), representando los operandos con 6 bits y FROM A IMPORT S1, S2, R
complemento a 2. EXPORT SUMA2
SUMA2 LD /S1
18. Suponiendo que Smplez tuviese la instruccin
ADD /S2
SHL, escriba un programa que, haciendo uso ex-
ST /R
clusivamente de esa instruccin y de ADD (adems
HALT
de LD y ST), multiplique por 10 el contenido de
END
una palabra de la MP.
19. La orden para el ensamblador (directiva, vase La directiva IMPORT le dice al ensamblador que el
el Apartado 6.7) ORG permite definir la direccin smbolo o smbolos que le siguen estn definidos
de memoria a partir de la cual se van a almacenar en otro mdulo (smbolos externos), y la EXPORT
las instrucciones o constantes que le siguen. Por le dice que otros mdulos pueden hacer uso de ese
ejemplo, si escribimos: o esos smbolos (smbolos de acceso).

a) Escriba los resultados del proceso de en-


ORG 40 samblaje de ambos programas. Es decir:
CONT RES 1
Cdigo (escrito en octal)
CTE DATA 1
.... Tabla de smbolos del ensamblador
ORG 100 Tabla de smbolos externos
CLR Tabla de smbolos de acceso
ST /CONT Diccionario de reubicacin
.... b) Suponiendo que el montador pone el Pro-
ORG 400 grama B inmediatamente a continuacin
LD /CTE del Programa A, escriba el resultado del
.... montaje, es decir, el cdigo y el dicciona-
rio de reubicacin.
el ensamblador reservar la direccin 40, identi-
ficndola con la etiqueta CONT, pondr 1 en la c) Suponiendo que el cargador reubicador car-
direccin 41, pondr la instruccin CLR en la di- ga el mdulo resultante a partir de la direc-
reccin 100, la ST /CONT en la 101, la LD /CTE cin D400, escriba los contenidos de las
en la 400, etc. direcciones de MP D400 y sucesivas antes
y despus de la ejecucin
Escriba en ensamblador el subprograma para res-
tar y el programa con sus llamadas, vistos en el d) Hay alguna instruccin que no llegue a
Apartado 1.10, haciendo uso de ORG. ejecutarse?

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);
}

Programa 3.1 Programa del Ejercicio 22.

RS del controlador del proceso: a) El sistema funciona mal. En qu lo nota el


usuario? Explique la causa.
1. Guarda los registros que va a usar.
2. Realiza su funcin, en la que tarda entre dos y b) Llamado el tcnico (que es un especialis-
tres milisegundos ta electrnico), intercambia la posicin de
las tarjetas controladoras. Resuelve esto el
3. Repone los registros. problema?
4. Da el permiso general de interrupciones y re-
c) D una solucin razonada al problema in-
torna.
troduciendo las modificaciones necesarias
RS del reloj: en el seudocdigo dado anteriormente para
el software de interrupciones.
1. Guarda los registros que va a usar.
2. Actualiza contadores (milisegundos, segun-
dos, minutos y horas). 22. Si conoce el lenguaje C, analice el programa que
aparece ms arriba y prediga el resultado de su
3. Repone los registros.
ejecucin. Despus puede compilarlo y ejecutarlo
4. Da el permiso general de interrupciones y re- para comprobar ese resultado.
torna.

Potrebbero piacerti anche