Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas Digitales PDF
Sistemas Digitales PDF
INDICE
INTRODUCCIN
INDICE
UNIDAD TEMTICA N 1
SISTEMAS NUMRICOS 09
SISTEMAS NUMRICOS POSESINALES 09
CONVERSIONES ENTRE SISTEMAS NUMRICOS 09
NMEROS OCTALES Y HEXADECIMALES. 11
REPRESENTACIN DE NMEROS NEGATIVOS 12
FORMA DE COMPLEMENTO A 1. 13
FORMA DE COMPLEMENTO 2. 13
SUMA Y RESTA EN COMPLEMENTO A DOS 14
SUSTRACCIN CON COMPLEMENTOS A 2. 16
CODIGOS: NMERICOS Y ALFANUMERICOS 16
TIPOS DE CODIGOS 16
CDIGO REFLEJADO DE CUATRO BITS (CDIGO GRAY) 17
RESUMEN 19
BIBLIOGRAFA RECOMENDADA 19
AUTOEVALUACION FORMATIVA 20
UNIDAD TEMTICA N 2
ELECTRNICA DIGITAL 21
LA ELECTRNICA DIGITAL 21
ELECTRNICA ANALGICA 22
ELECTRNICA DIGITAL 23
ELECTRNICA DIGITAL 24
ESTRUCTURA DE LGEBRA DE BOOLE 25
SISTEMA BINARIO DE NUMERACIN 28
RESUMEN 28
BIBLIOGRAFA RECOMENDADA 29
AUTOEVALUACION FORMATIVA 29
UNIDAD TEMTICA N 3
OPERACIONES 31
OPERACIONES APLICANDO 0 Y 1 31
COMPUERTAS LGICAS 32
FUNCIONES LGICAS 33
RESUMEN 35
BIBLIOGRAFA RECOMENDADA 36
AUTOEVALUACION FORMATIVA 36
UNIDAD TEMTICA N 04
OPERACIONES UNITARIAS 37
OPERACIONES CON FUNCIONES 37
MAPAS DE KARNAUGH 39
MAPAS DE KARNAUGH PARA 2 VARIABLES 40
MAPAS DE KARNAUGH PARA 3 VARIABLES 41
5
Excelencia Acadmica
UNIDAD TEMTICA N 5
DECODIFICADORES Y MULTIPLEXORES 47
DECODIFICADOR 47
CODIFICADOR BCD A 7 SEGMENTOS 49
MULTIPLEXOR 51
BLOQUES ARITMTICOS Y CODIFICACIN NUMRICA 53
SUMA 53
RESTA 54
COMPARACIN 54
UNIDAD LGICA Y ARITMTICA ALU 55
ALU 56
RESUMEN 57
BIBLIOGRAFA 58
AUTOEVALUACION FORMATIVA 58
UNIDAD TEMTICA N 6
EL MICROPROCESADOR 59
ARQUITECTURA VON NEWMAN. 59
ARQUITECTURA VON NEWMAN. 61
EL ENSAMBLADOR 61
LA EVOLUCIN DEL MS-DOS. 64
MICROPROCESADORES 8086 88, 286, 386, 486 Y GENERACIN-PENTIUM. 64
CARACTERISTICAS GENERALES. 64
RESUMEN 68
BIBLIOGRAFA RECOMENDADA 68
AUTOEVALUACION FORMATIVA 68
UNIDAD TEMTICA N 7
EL PROCESADOR 69
REGISTROS DEL 80X86 Y DEL 80286. 69
REGISTROS DE LOS DATOS 69
REGISTROS DE SEGMENTO 70
REGISTROS NDICES 71
REGISTROS DEL 386 Y PROCESADORES SUPERIORES 72
ORGANIZACIN DE DIRECCIONES: SEGMENTACIN 72
MODOS DE DIRECCIONAMIENTO. 73
COMBINACIONES DE REGISTROS DE SEGMENTO Y DESPLAZAMIENTO 76
LA PILA 76
BIBLIOGRAFA 77
AUTOEVALUACION FORMATIVO 78
UNIDAD TEMTICA N 08
RESUMEN DE LAS INSTRUCCIONES Y BANDERINES. 79
RESUMEN DE LAS INSTRUCCIONES 79
EL LENGUAJE ENSAMBLADOR DEL 80X86 81
6
Excelencia Acadmica
7
Excelencia Acadmica
8
Excelencia Acadmica
SISTEMAS NUMRICOS
En el sistema de nmeros decimales se dice que la base o raz es 10 debido a que usa 10
dgitos, y los coeficientes se multiplican por potencias de 10.
El sistema binario nicamente posee dos valores posibles que son 0 y 1, en los cuales cada
coeficiente AJ se multiplica por 2J, como ejemplo tendremos el desarrollo del nmero binario
11010.11 el cual ser representado por la siguiente manera :
1x24+1x23+0x22+1x21+0x20+1x2-1+1x2-2
16+8+0+2+0+0.5+0.25 = 26.75
9
Excelencia Acadmica
Ejemplo :
(1010.011)2 = 1x23+0x22+1x21+0x20+0x2-1+1x2-2+1x2-3
= 8+0+2+0+0+0.25+0.125
= 10.375
Ejemplo :
(630.4)8 = 6x82+3x81+0x80+4x8-1
= 384+24+0.5 = 408.5
Ejemplo :
(41)10 = (101001)2
Para convertir cualquier entero decimal han cualquier sistema de base r la divisin se
hace entre r en lugar de 2.
Ejemplo :
(153)10=(231)8
Para convertir una fraccin decimal a binario, el sistema que se sigue es similar al que
utilizamos para los enteros, sin embargo, se usa la multiplicacin en lugar de la divisin, y
los enteros se acumulan en lugar de los residuos.
10
Excelencia Acadmica
Ejemplo :
(0.6875)10=(0.1011)2
Ejemplo :
Cuando deseamos hacer la conversin de un nmero decimal de una parte entera y una
parte fraccionaria la conversin se hace por separado y posteriormente se combinan las dos
respuestas.
Ejemplo :
Las conversiones entre cdigo binario, octal y hexadecimal es muy importante en las
comparaciones digitales, ya que cada dgito octal corresponde a tres dgitos binarios y a
cada dgito hexadecimal corresponde cuatro dgitos binarios.
11
Excelencia Acadmica
Ejemplo :
Los nmeros binarios son difciles de manejar ya que se requiere dos o cuatro veces mas
dgitos que su equivalente decimal.
Ejemplo :
Una forma de reducir esta deficiencia es emplear la relacin entre el sistema de nmeros
binarios con el sistema octal o hexadecimal.
Ejemplo :
A6 A5 A4 A3 A2 A1 A0
0 1 1 0 1 0 0
0 1 1 0 1 0 0
(+) Magnitud del numero
De este modo el nmero almacenado en el registro A es +52. El bit del signo se usa
12
Excelencia Acadmica
para indicar si un nmero binario almacenado es positivo o bien negativo. Para los nmeros
positivos, el resto de los bits se utilizan siempre para representar la magnitud del numero en
forma binaria.
Para los nmeros negativos, no obstante, existen tres formas posibles de representar
la magnitud.
El ejemplo visto anteriormente, contiene un bit de signo y seis bits de magnitud. Los bits
de magnitud son el equivalente binario verdadero de los valores binarios que se
representan.
Forma de complemento a 1.
Ejemplo :
NOTA : Observe que el bit de signo no se complementa sino que se conserva en un 1 a fin
de indicar un nmero negativo.
Forma de complemento 2.
Ejemplo :
13
Excelencia Acadmica
000110
1
---------
000111
Ejemplo :
Tres sistemas para representar nmeros binarios con signo se muestran a continuacin.
+9 01001 cosumando
+4 00100 sumando
--- -------- -------------
+13 01101 suma = +13
NOTA : Los bits de signo del cosumando y el sumando ambos son cero y pos lo tanto el bit
del signo de la suma es cero, lo cual indica que la suma es positiva. Ntese que el
cosumando y el sumando se forman con el mismo nmero de bits, esto siempre debe
llevarse a cabo en el sistema de complemento 2.
+9 01001
-4 11100
--- ----------
+5 1 00101
14
Excelencia Acadmica
NOTA : En este caso el bit del signo del sumando es uno. Observe que el bit del signo (+)
tambin participa en el proceso de adicin, de hecho, se genera un corrimiento en la ltima
posicin de la suma, este corrimiento siempre es despreciado, de modo que la suma final es
00101 = (+5).
-9 1 0111
+4 0 0100
--- --------
-5 1 1011
Se le saca el complemento 2
0100
1
---------
0101
NOTA: La suma en este caso tiene un bit de signo 1, lo cual indica que es negativo, esta se
encuentra en su forma de complemento 2 de manera que los ltimos 4 bits (1011),
representan en realidad el complemento 2 de la suma.
Para determinar la magnitud verdadera de la suma, debemos de tomar el complemento 2
de 1011, el resultado ser 0101(5).
-9 1 0111
-4 1 1100
---- ---------
-13 1 1 0011
Se toma el complemento 2
Resultado:1 1101
Este resultado final vuelve a ser negativo y esta en forma de complemento 2 con un bit de
signo 1. Ntese que 0011 es el complemento 2 de 1101(+13).
- 9 1 0111
+9 0 1001
--- ---------
0 1 0 0000
15
Excelencia Acadmica
Esta operacin en realidad comprende la operacin de adicin que hace uso del sistema de
complemento 2.
Cuando se resta un nmero binario (el sustraendo) de otro nmero binario (el minuendo), el
procedimiento es como sigue :
1.- Tmese el complemento 2 del sustraendo, incluye el bit del signo. Si el sustraendo es
un nmero positivo, este se transforma en un nmero negativo en forma de
complemento 2. Si el sustraendo es un nmero negativo, este se convertir en uno positivo
en forma binaria verdadera. En otras palabras se altera el signo del sustraendo.
Ejemplo:
+9 01001
- +4 11100
--- ---------
+5 1 00101
Tipos de Cdigos
- Cdigos Decimales
Los cdigos binarios para dgitos decimales requieren un mnimo de cuatro bits. Se
obtiene numerosos cdigos diferentes al ordenar cuatro o mas bits en diez distintas
combinaciones.
- Cdigo Reflejado
Los sistemas digitales pueden disearse para procesar datos solo en una forma discreta.
Muchos sistemas fsicos suministran salida de informacin continua. Esta informacin puede
16
Excelencia Acadmica
- Cdigos Alfanumricos
Cdigos Numricos
17
Excelencia Acadmica
1001 14
1000 15
Cdigos Alfanumricos
18
Excelencia Acadmica
Los sistema de numeracin de base 10 (decimal), es debido a que usa 10 dgitos, y todas
las operaciones matemticas que conocemos, podemos realizarlos con los otros sistemas
(sistema binario, sistema octal, sistema hexadecimal) y utilizando los mismos criterios que
conocemos.
El sistema binario posee dos valores posibles que son 0 y 1, con el tenemos que
familiarizarnos mas por su aplicacin en los sistemas digitales, puede ser manejado para
desarrollar diferentes operaciones matemticas.
19
Excelencia Acadmica
1. Resolver:
11111111+ 1111111 X 1000010 -
11011011 111 11111
11110111 ------------- ------------
------------
2. Convertir los siguientes nmeros binarios:
57810 numeracin base binaria
125410 numeracin base binaria
5748 numeracin base binaria
479316 numeracin base binaria
4.
47328 + 63278 + 51348 -
35278 74238 02658
------- ----------- ---------
20
Excelencia Acadmica
ELECTRNICA DIGITAL
LA ELECTRNICA DIGITAL
21
Excelencia Acadmica
(solamente la interpretacin de los smbolos, a travs del cdigo numrico, permite resolver
la comparacin).
22
Excelencia Acadmica
Al igual que en el caso del amplificador, el interruptor puede construirse con transistores (
tambin podra hacerse con triodos); para amplificadores se utiliza la zona lineal de
23
Excelencia Acadmica
operacin del transistor mientras que para interruptores se emplean los extremos de dicha
zona: corte ( I = 0) y saturacin ( V = 0).
Con interruptores (transistores) se construyen puertas lgicas (capaces de efectuar
operaciones booleanas individuales) y agrupando dichas puertas se configuran funciones
booleanas que son la base relacional de las variables digitales. Determinados conjuntos de
funciones booleanas de utilidad general se agrupan en bloques combinacionales que, junto
con los bloques con memoria (biestables, registros y contadores) constituyen los mdulos
bsicos para el diseo digital. Los biestables provienen de establecer realimentacin dentro
de una funcin booleana y con ellos se configuran los registros y los contadores. En
definitiva, todo en los sistemas digitales son funciones boleanas, las cuales se componen de
conjuntos de puertas lgicas, construidas con interruptores.
Por ello, la matemtica propia de la electrnica digital es el lgebra de Boole: las funciones
booleanas expresadas como combinacin de operaciones del lgebra booleana.
Complementariamente, los grafos de estado son una herramienta auxiliar apropiada para
describir el comportamiento de los circuitos digitales con memoria.
24
Excelencia Acadmica
25
Excelencia Acadmica
En relacin con el cuerpo de los nmeros reales, contrastando sus operaciones aritmticas
de suma y resta con las operaciones "o" e " y " booleanas, el lgebra de Boole presenta las
siguientes diferencias:
* La propiedad distributiva es doble; no slo de . respecto a +, sino tambin de + respecto a
..
* No existen elementos inversos respecto a las operaciones " o" e " y" y por ello no
estn definidas las operaciones inversas (como son la resta y divisin aritmticas).
* Existe, en cambio, el elemento complementario.
* Considrese el diferente papel que desempea el elemento complementario en relacin
con los elementos inversos:
- complementario a + a = 1 a . a = 0
- inversos a+ (a) = 0 a . (1/a) a =1].
A partir de los axiomas que definen el lgebra de Boole pueden deducirse directamente, los
siguientes teoremas operativos:
Dualidad : toda expresin booleana sigue siendo vlida si se efectan, a la vez, los
siguientes cambios: a a + ( operacin " o") . (operacin "y") 01
Idempotencia: a+a=a a.a=a
Absorcin: a+a.b=a a+a.b=a+b
a.(a+b) =a a.( a+b) =a.b
de Morgan: (a+b)= a. b (a.b)= a+b
de Consenso: a.b+a.c+b.c = a.b+a.c
(a+b).( a+ c).(b+ c) =(a+b).( a+c)
26
Excelencia Acadmica
[En el primer paso, se hace uso de los axiomas a.1=a, a+0=a; en el segundo, se aplica la
propiedad distributiva; en el tercer paso, se utilizan los axiomas a+1=1, a.0=0 y en el cuarto,
se emplean los mismos axiomas que en el primer paso.]
El teorema de Dualidad se deduce de que todos los axiomas siguen siendo vlidos si se
aplican sobre ellos dichos cambios (los tres a la vez) y, por tanto, tales cambios pueden
generalizarse a cualquier expresin booleana.
[Debe tenerse en cuenta que la Dualidad ha de ser aplicada a ambos miembros de
una expresin booleana y no solamente a uno de ellos:
Sea la funcin y=a+c.b
No es vlido hacer y=a+c.b = a.(c+b) sino y = a.( c + b) . ]
El lgebra booleana ms simple y de mayor inters prctico es la definida sobre un conjunto
de slo dos elementos, que necesariamente han de ser el 0 y el 1:
27
Excelencia Acadmica
N10 2 Ejemplo
2 cocientes restos
r1 C1
9765 1
2 4882 0
r2 C2
2441 1
1220 0
r3 C3 2 610 0
305 1
r4 C4 2 152 0
2 76 0
r5 C5 38 0
19 1
r6 1 9 1
4 0
2 0
1 1
n10 =1r6r5r4r3r2r12
976510 = 100110001001012
29
Excelencia Acadmica
30
Excelencia Acadmica
OPERACIONES
OPERACIONES LOGICAS.
a b suma acarreo
suma Acarreo = me llevo
0 0 0 0
Suma = a.b+a.b
0 1 1 0
1 0 1 0 =ab
1 1 0 1 acarreo = a.b
a b resta acarreo
resta Acarreo = me llevo
0 0 0 0
resta = a.b+a.b
0 1 1 1 =ab
1 0 1 0 acarreo = a.b
1 1 0 0
31
Excelencia Acadmica
Obviamente las anteriores expresiones booleanas para la suma, resta y comparacin de dos
dgitos pueden extenderse a nmeros binarios de ms de 1 dgito como veremos mas
adelante.
a b a.b
Compuerta AND
0 0 0
0 1 0
1 0 0
1 1 1
a b (a.b)
0 0 1
Compuerta NAND
0 1 1
1 0 1
1 1 0
Donde
Compuerta OR a b a+b
0 0 0
0 1 1
1 0 1
1 1 1
Compuerta NOR a b (a + b)
0 0 1
0 1 0
1 0 0
1 1 0
Donde
32
Excelencia Acadmica
Compuerta OR-EXCLUSIVA
a b ab
0 0 0
0 1 1
1 0 1
1 1 0
Compuerta NOR-EXCLUSIVA
a b (a b)
0 0 1
0 1 0
Donde 1 0 0
1 1 1
Compuerta INVERSOR
a a
Donde 0 1
1 0
a a
Compuerta BUFFER 0 0
1 1
33
Excelencia Acadmica
34
Excelencia Acadmica
Para cada funcion podemos construir un trmino grafico, formado por la aplicacin
del producto booleano (operacin "and" or) con variables de entrada, estando cada una de
ellas ingresando a las compuertas lgicas, y saliendo de estas su valor que depender del
vector de entrada, verdadera cuando vale 1 y negada cuando vale 0.
35
Excelencia Acadmica
36
Excelencia Acadmica
OPERACIONES UNITARIAS
Ejemplos:
Simplificar la siguiente funcin y diagramar el circuito:
Y = c.b.a + c.b.a + c.b.a + c.b.a + c.b.a
= c.a(b+b) + c.a(b.b) + c.b. a
= c.a + c.a + c.b. a Se eliminan por complementarios
= a(c + c) + c.b. a
= a+ c.b. a
Y = a+ c.b Por la propiedad de Absorcin
circuito de la funcin minimizada
37
Excelencia Acadmica
Compuerta nor-exclusiva
La negacin de la puerta "or-exclusiva" se denomina "nor-inclusiva" (porque coincide con
la operacin "y" incluyendo el caso 00) y corresponde a la funcin igualdad: dando un
resultado 1 cuando los dos operandos son iguales 00, 11.
Ejemplos:
Veamos el siguiente ejemplo de transformacin de expresiones booleanas con operaciones
bsicas a expresiones con puertas "y-negada":
Por ultimo, transformar la siguiente funcin Y2:
38
Excelencia Acadmica
39
Excelencia Acadmica
pequea posible para elaborar un circuito con pocas puertas lgicas y por ende mas sencillo
de ensamblar fsicamente:
La aplicacin directa de teoremas booleanos para simplificar las funciones requiere una
cierta habilidad, cuyos resultados dependen de la complejidad de la funcin y de la
experiencia e intuicin de quien la realiza.
Existen mtodos de simplificacin que aportan una formulacin sistemtica del proceso y
que aseguran la mxima simplificacin; los ms utilizados de ellos son el mtodo grfico de
los mapas de Karnaugh, que se describe a continuacin, y el mtodo algortmico de Quine-
McCluskey.
Los mapas de Karnaugh son el mtodo habitual de simplificacin cuando se hace a mano y
el nmero de variables de la funcin no es superior a 6 y determinra el numero de celdas
que tendr el mapa de Karnaugh (n= N de variables entonces el numero de celda ser 2n ).
Para mayores nmero de variables se recurre a la ayuda del computador, con programas de
simplificacin automtica que suelen estar basados en el algoritmo de Quine- MacCluskey.
La simplificacin de una funcin por medio de los mapas de Karnaugh se realiza dibujando
su tabla de operacin en un diagrama bidimensional segn la estructura siguiente:
Ejemplo:
Simplificar la siguiente funcin: Y=1,2,3
Solucion:
Aplicando variables es igual a Y = 01+10+11 entonces Y = b.a + b.a + b.a
40
Excelencia Acadmica
Formamos 2 grupos de 2
celdas, por que dichas celdas
pertenecen a un uno logico.
Circuito de la funcin Y = a + b
numeracin secuencial. Vemos que las celdas 3 , 2 y 7 , 6 estn alternados, quiere decir que
la ultima columna pasa a ser la penltima y la penltima columna pasa a ser la ultima pero
con sus respectivas numeraciones.
Ejemplo:
Simplificar la siguiente funcin: Y = 0,2,4,5,6,7
Solucion:
Aplicando variables es igual a Y = 000 + 010 + 100 + 101 + 110 + 111
Entonces Y = c.b.a + c.b.a + c.b.a + c.b.a + c.b.a + c.b.a
41
Excelencia Acadmica
OBS: El primer mapa de Karnaugh esta numerado en el sistema decimal para mayor
comprensin y el segundo mapa de Karnaugh esta numerado en el sistema hexadecimal.
Analizando el mapa de Karnaugh nos daremos cuenta que las celdas no tienen una
numeracin secuencial. Vemos que las celdas 3,2 - 7,6 - 15,14 y 11,10 estn alternados,
quiere decir que la ultima columna pasa a ser la penltima y la penltima columna pasa a
ser la ultima, igualmente vemos que las celdas 12,8 - 13,9 - 15,11 y 14,10 estn alternados,
42
Excelencia Acadmica
quiere decir que la ultima fila pasa a ser la penltima y la penltima fila pasa a ser la ultima
pero con sus respectivo numero.
Ejemplo:
Simplificar la siguiente funcin: Y = 0,1,2,3,5,7,8,9,A,B,D,F
Solucion:
Aplicando cuatro (a, b ,c d) variables a la funcin dada, tendremos:
Y = 0000+0001+0010+0011+0101+0111+1000+1001+1010+1011+1101+1111 Entonces:
Y=d.c.b.a+d.c.b.a+d.c.b.a+d.c.b.a+d.c.b.a+d.c.b.a+
d.c.b.a+d.c.b.a+d.c.b.a+d.c.b.a+d.c.b.a+d.c.b.a
Al aplicar Karnaugh a la funcin, notaremos que formamos un grupo de 4 celdas que tienen
un uno lgico y un grupo de 8 celdas que tienen un uno lgico, las celdas en blanco son de
cero lgico.
Al formar dos grupos de cuatro celdas
se tiene en cuenta el sistema binario
(2n), por lo tanto no existir grupos de 3,
5, 6, 7, 9, 10,11,12,13,14,15,.... celdas.
Circuito de la funcin simplificada Y
= a + a . c
43
Excelencia Acadmica
44
Excelencia Acadmica
45
Excelencia Acadmica
46
Excelencia Acadmica
DECODIFICADORES Y MULTIPLEXORES
5.1. DECODIFICADOR
Sean tres variables de entrada; podemos construir todos sus trminos mnimos:
bastarn para ello 8 puertas AND de 3 entradas y 3 inversores.
Este bloque digital, cuyas salidas corresponden a los diversos trminos mnimos
de sus entradas, recibe el nombre de decodificador; tal denominacin se debe a que
decodifica un nmero binario de m dgitos sobre 2m lneas, de forma que para cada nmero
o vector de entrada activa una salida diferente.
Un decodificador es un bloque digital con m lneas de entrada y 2m lneas de salida que
corresponden a los 2m posibles vectores de entrada (nmeros binarios de m bits): la lnea de
salida correspondiente al nmero binario establecido en las entradas se encontrar a 1 y el
resto de lneas de salida estar a 0.
47
Excelencia Acadmica
En el decodificador estn presentes todos los trminos mnimos de sus entradas; para
construir una funcin booleana de tales entradas, segn su forma cannica, bastar reunir
sobre una puerta "OR" los trminos mnimos que corresponden a valor 1 en la tabla de la
funcin, es decir, llevar a una puerta "OR" las salidas del decodificador que corresponden a
vectores de entrada que activan la funcin (dan resultado 1).
Ejemplo: Para construir de esta forma la funcin "ser nmero primo" de dgitos utilizaremos
un decodificador de 4 lneas de control seguido de una puerta "OR" que recibe aquellas
salidas con valor 1 que se ve en la tabla de verdad de la funcin (corresponden a los
nmeros primos 1, 2, 3, 5, 7, 11 y 13).
48
Excelencia Acadmica
Ejemplo:
5.2. CODIFICADOR BCD A 7 SEGMENTOS
Las cifras decimales (del 0 al 9) se expresan en BCD con cuatro dgitos binarios (del 0000 al
1001); pero tambin dichas cifras se pueden representar mediante un visualizador de 7
segmentos para lo cual hay que codificarlas en 7 bits, cada uno de los cuales controla
(enciende) uno de los segmentos:
49
Excelencia Acadmica
A partir de ella,
utilizando para
simplificar los
correspondientes
diagramas de
Karnaugh y
expresando las
funciones resultantes
en trminos de
puertas "and-
negada", se obtienen
50
Excelencia Acadmica
5.3.
MULTIPLEXOR
El multiplexor es un bloque digital que selecciona una de entre 2n lneas de entrada; para
ello dispone de n lneas de control y en cada momento el nmero binario establecido en
ellas determina la lnea de entrada que queda conectada a la salida.
Para seleccionar cada lnea de entrada por su nmero binario bastar realizar la operacin
"and" entre la lnea de entrada y el trmino mnimo que corresponde a dicho nmero binario;
una posterior operacin "or" en la salida recoger el resultado de dicha seleccin (recibir
las salidas de las citadas puertas "and").
51
Excelencia Acadmica
Para construir una funcin booleana utilizando un multiplexor bastar con fijar en sus lneas
de entrada los valores de la tabla de verdad de la misma; de esta forma, las variables de
control seleccionan sobre la propia tabla de la funcin el valor booleano que le corresponde
al vector de entrada.
Esta forma de configurar funciones booleanas mediante multiplexores, cuyas lneas de
entrada reciben los valores de la tabla de verdad de la funcin, se denomina look-up-table
(LUT).
Ejemplo: La funcin "ser nmero primo" de 4 dgitos, para construirla con un multiplexor de
4 lneas de control, conectaremos a 1 las lneas de entrada del multiplexor que presentan tal
valor en la tabla de verdad de la funcin (las correspondientes a los nmeros primos 1, 2, 3,
5, 7, 11 y 13); el resto de las lneas de entrada se conectarn a 0.
Obs:
Decodificadores y multiplexores son selectores de lnea:
- Un decodificador activa una de entre
n lneas de salida.
- Un multiplexor selecciona una de
entre n lneas de entrada y la pone en
comunicacin con su lnea de salida.
Cada uno de ellos proporciona una
forma de configurar una funcin de
sus variables de control:
-La forma cannica a partir de un
decodificador (suma de trminos
mnimos m)
52
Excelencia Acadmica
- La forma tabular sobre un multiplexor (look-up-table LUT). Ambas formas de construir una
funcin booleana no precisan de la expresin algebraica de la misma; se obtienen
directamente de su tabla funcional.
SUMA
A partir de la celda sumadora bsica
de dos dgitos a y b ms un tercero
de carreo (me llevo: carry) c.
A su vez, estos bloques sumadores de n cifras pueden conectarse en cadena, con la salida
C de cada uno de ellos unida a la entrada C- del siguiente ms significativo, para formar
sumadores de mayor nmero de cifras binarias.
En la celda sumadora, la
funcin arrastre C
obtenida mediante un
mapa de Karnaugh
queda un poco ms
simplificada que la
anterior:
c=a.b+c(b+a)
53
Excelencia Acadmica
Esta expresin simplificada nos interesa para compararla con la que resulta en el caso de
una celda restadora.
En los sumadores de muchos bits, los tiempos de propagacin de las celdas sucesivas se
suman y resulta un tiempo de propagacin global alto, lo cual puede limitar mucho la
velocidad de estos sumadores.
RESTA
Para restar dos nmeros positivos A-B es preciso que A = B; en otro caso, el arrastre ms
significativo valdr 1, indicando que B es mayor que A y, por tanto, el resultado no
corresponde a un nmero positivo. [En el apartado 4 de este mismo captulo se estudiar la
representacin y forma de operar con nmeros negativos].
Comparando las funciones bsicas de sumadores y restadores se observa que difieren
solamente en las relativas al arrastre y, en stas, solamente en la negacin de una variable:
arrastre de la resta c = b.a + c-.(b + a)
Resulta sencillo construir bloques sumadores/restadores, capaces de efectuar las dos
operaciones, con una entrada de seleccin d que diferencie entre ambas; bastar aadir
una operacin "or-exclusiva" a d, para determinar cundo la variable a debe actuar
afirmada (d=0: suma) o negada (d=1: resta) en las funciones que calculan los arrastres:
5.5. COMPARACIN
54
Excelencia Acadmica
- La funcin igualdad de una celda comparadora se activar cuando sus dos dgitos a b son
iguales (es decir, cuando ambos valen 0 o ambos valen 1:a.b+a.b) y, adems, la
informacin que reciba por su entrada i- respecto a los siguientes dgitos sea de que son
iguales (i- = 1);
- La funcin "A mayor que B" se activar cuando a=1 y b=0 o cuando ambos dgitos son
iguales (a.b+a.b) y la informacin que reciba por su entrada m- respecto a los siguientes
dgitos sea de que "A mayor que B" (m- =1).
5.6.
Unidad lgica y aritmtica ALU
Tambin podemos considerar como bloques operacionales a los que realizan operaciones
booleanas, constituidos por conjuntos de n puertas iguales de dos entradas que efectan la
operacin lgica correspondiente (sea esta operacin "o", "y","o-exclusiva", "y-negada", "o-
negada",...) sobre dos palabras de n dgitos o bits, operacin lgica que se realiza
individualmente, bit a bit.
En la siguiente figura, se representa uno de estos bloques, configurado por un conjunto de 4
puertas que realizan la operacin "y" entre dos palabras de 4 bits.
55
Excelencia Acadmica
ALU
Un bloque digital de este tipo recibe el nombre genrico de unidad aritmtica y lgica ALU.
Recibir como entradas dos operandos de n dgitos y los terminales de salida de las
diversas operaciones sern nicos, apareciendo sobre ellos el resultado de la operacin
seleccionada.
La siguiente figura representa una ALU de tipo sencillo que opera sobre palabras de 8 bits y
tiene capacidad para 16 operaciones (4 entradas de control).
Dos salidas adicionales y sus correspondientes entradas permiten la ampliacin de la ALU
para palabras de ms de 8 dgitos: la entrada y salida de acarreo c para la suma y la resta y
la entrada y salida de resultado nulo n, que se activa cuando todos los dgitos del resultado
son 0.
56
Excelencia Acadmica
57
Excelencia Acadmica
El presente capitulo se refiere a la forma de codificar, multiplexar los datos (0,1), con mas
complejidad, posibilitando que los bloques de datos puedan ser transportados o aplicados
de acuerdo a nuestra conveniencia por tener una configuracin de un operador genrico,
capaz de realizar una serie de operaciones aritmticas y lgicas sobre palabras de n bits: un
bloque multifuncin diseado para efectuar k operaciones distintas, de forma que en cada
momento se selecciona la operacin que interesa mediante unas entradas de control.
C B A d c b a
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
2.- Por que los multiplexores son muy utilizados para el transporte de datos.
58
Excelencia Acadmica
EL MICROPROCESADOR
El los primeros tiempos de los ordenadores, con sistemas de numeracin decimal, una
electrnica sumamente complicada muy susceptible a fallos y un sistema de programacin
cableado o mediante fichas, Von Newman propuso dos conceptos bsicos que
revolucionaran la incipiente informtica:
59
Excelencia Acadmica
Tomando como modelo las mquinas que aparecieron incorporando las anteriores
caractersticas, el ordenador se puede considerar compuesto por las siguientes partes:
- La Unidad Central de Proceso.
- La Memoria Interna.
- Unidad de Entrada y Salida.
Realicemos a continuacin una descripcin de lo que se entiende por cada una de estas
partes y cmo est relacionadas entre s:
- La Unidad Central de Proceso (CPU) viene a ser el cerebro del ordenador y tiene por
misin efectuar las operaciones aritmtico-lgicas y controlar las transferencias de
informacin a realizar.
- La Memoria Interna: contiene el conjunto de instrucciones que ejecuta la CPU en el
transcurso de un programa. Es tambin donde se almacenan temporalmente las
variables del mismo, todos los datos que se precisan y todos los resultados que
devuelve.
- Unidades de Entrada y Salida (I/O): son las encargadas de la comunicacin d ela
mquina con el exterior, proporcionando al operador una forma de introducir al
ordenador tanto los programas como los datos y obtener los resultados.
Como es de suponer, estas tres partes principales de que consta el ordenador deben estar
ntimamente conectadas; aparece en este momento el concepto de bus: el bus es un
conjunto de lneas que enlazan los distintos componentes del ordenador, por ellas se realiza
la transferencia de datos entre todos sus elementos.
Se distinguen dos tipos de bus:
60
Excelencia Acadmica
- De Datos: De tipo bidireccional, fluyen los datos entre las distintas partes del ordenador.
- De direcciones: Como vimos, la memoria est dividida en pequeas unidades de
almacenamiento que contienen las instrucciones del programa y los datos. El bus de
direcciones consta de un conjunto de lneas que permite seleccionar de qu posicin de
la memoria se quiere leer su contenido. Tambin direcciona los puertos de E/S.
Adicionalmente contamos con lneas de control que seleccionan desde dnde y hacia dnde
va dirigida la informacin, tambin las que marcan la secuencia de los pasos a seguir para
dicha transferencia.
La forma de operar del ordenador en su conjunto es direccionar una posicin de la memoria
en busca de una instruccin mediante el bus de direcciones, llevar la instruccin a la unidad
central de proceso CPU- por medio de bus de datos, marcando la secuencia de la
transferencia el bus de control. En la CPU la instruccin se decodifica, interpretando qu
operandos necesita; si son de memoria, es necesario llevarles a la CPU; una vez que la
operacin es realizada, si es preciso se devuelve el resultado a la memoria.
6.3. EL ENSAMBLADOR
61
Excelencia Acadmica
proceso discurra con la suficiente fluidez. Esta situacin, que indudablemente se influye
sobre la eleccin del lenguaje de programacin a utilizar en el desarrollo de una
determinada rutina, y dada la aparicin de nuevos compiladores de lenguaje de alto nivel
que optimizan el cdigo generado a niveles muy prximos a los que un buen programador
es capaz de realizar en ensamblador, no es la nica razn para su utilizacin.
EL ENSAMBLADOR
En 1973, el centro de investigacin de Xerox en Palo Alto desarroll un equipo informtico
con el aspecto externo de un PC personal actual. Adems de pantalla y teclado, dispona de
un artefacto similar al ratn; en general, este aparato (denominado Alto) introdujo, mucho
antes de que otros los reinventaran, algunos de los conceptos universalmente aceptados
hoy en da.
El desarrollo del primer microprocesador por Intel en 1971, el 4004 (de 4 bits), supuso el
primer paso hacia el logro de un PC personal, al reducir drsticamente la circuitera adicional
necesaria. Sucesores de este procesador fueron el 8008 y el 8080, de 8 bits. Ed Roberts
construy en 1975 el Altair 8800 basndose en el 8080; aunque esta mquina no tena
teclado ni pantalla (solo interruptores y luces), era una arquitectura abierta (conocida por
todo el mundo) y cuyas tarjetas se conectaban a la placa principal a travs de 100
terminales, que ms tarde terminaran convirtindose en el bus estndar S-100 de la
industria. El Apple-I apareci en 1976, basado en el microprocesador de 8 bits 6502, en
aquel entonces un recin aparecido aunque casi 10 veces ms barato que el 8080 de Intel.
Fue sucedido en mximo de 48 Kbytes de memoria.
62
Excelencia Acadmica
simple cara (160/180 Kb por disco) o doble cara (320/360 Kb). En 1983 apareci el IBM PC-
XT, que traa como novedad un disco duro de 10 Mbytes. Un ao ms tarde apareca el IBM
PC-AT, introduciendo el microprocesador 286, as como ranuras de expansin de 16 bits (el
bus ISA de 16 bits) en contraposicn con las de 8 bits del PC y el XT (bus ISA de 8 bits),
adems incorporaba un disco duro de 20 Mbytes y diskete de 51/4 pero con 1.2 Mbytes.
Alrededor del PC se estaba construyendo un imperio de software ms importante que el
propio hardware: estamos hablando del sistema operativo PC-DOS. Cuando aparecieron
mquinas compatibles con el PC de IBM, tenan que respetar la compatibilidad con ese
sistema, lo que fue sencillo (ya que Microsoft, le gustar o no a IBM, desarroll MS-DOS,
compatible con el PC-DOS pero que no requera la BIOS del ordenador original, cuyo
copyright era de IBM). Incluso, el desarrollo de los microprocesadores posteriores ha estado
totalmente condicionado por el MS-DOS.
A partir de 1986, IBM fue paulatinamente dejando de tener la batuta del mercado del PC. La
razn es que la propia IBM tena que respetar la compatibilidad con el anterior, y en ese
terreno no tena ms facilidades par innovar que la competencia. El primer problema vino
con la aparicin de los procesadores 386: los dems fabricantes se adelantaron a IBM y
lanzaron mquinas con ranuras de expansin an de 16 bits, que no permitan obtener todo
el rendimiento. IBM desarroll demasiado tarde, en 1987, la arquitectura Microchannel, con
bus de 32 bits pero cerrada e incompatible con tarjetas anteriores (aunque se desarrollaron
nuevas tarjetas, eran caras) y la incluy en su gama de ordenadores PS/2 (alguno de cuyos
modelos era an realmente ISA). La insolente respuesta de la competencia fue la
arquitectura EISA, tambin de 32 bits pero compatible con la ISA anterior.
EISA tambin era caro, as que los fabricantes orientales, cruzada ya la barrera de los aos
90, desarrollaron con la norma VESA las placas con bus local (VESA Local Bus);
bsicamente es una prolongacin de las patillas de la CPU a las ranuras de expansin, lo
que permite tarjetas rpidas de 32 bits pero muy conflictivas entre s. Esta arquitectura de
bus se populariz mucho con los procesadores 486. Sin embargo, al final el estndar que se
ha impuesto ha sido el propuesto por el propio fabricante de las CPU: Intel, con su bus PCI,
que con el Pentium se ha convertido finalmente en el nico estndar del bus de 32 bits.
Estas mquinas an admiten no obstante las viejas tarjetas ISA, suficientes para algunas
aplicaciones de baja velocidad (modems,etc).
63
Excelencia Acadmica
CARACTERISTICAS GENERALES.
El 8088 y 8086 poseen una arquitectura interna de 16 bits y pueden trabajar con operandos
de 8 y 16 bits; una capacidad de direccionamiento de 20 bits (hasta un Mb) y comparten el
mismo juego de instrucciones.
64
Excelencia Acadmica
Entre estas instrucciones, las ms rpidas se ejecutan en dos ciclos tericos de reloj y unos
9 reales (se trata del movimiento de datos entre registros internos) y las ms lentas en 206
(divisin entera con signo del acumulador por una palabra extrada de la memoria). Las
frecuencias internas de reloj tpicas son 4.77 MHz en la versin 8086; 8MHz en la versin
8086-2 y 10 MHz en la 8086-1. Recurdese que un MHz son un milln de ciclos de reloj, por
lo que un Pc estndar a 4.77 MHz puede ejecutar de 20.000 a unos 0.5 millones de
instrucciones por segundo, segn la complejidad de las mismas (un 486 a 50 MHz, incluso
sin memoria cach externa es capaz de ejecutar entre 1.8 y30 millones de estas
instrucciones por segundo).
Cuando la CPU est en modo protegido, los programas de usuario tienen un acceso limitado
al juego de instrucciones; slo el proceso supervisor -normalmente el sistema operativo-
est capacitado par realizar ciertas tareas. Esto es as para evitar que los programas de
usuario puedan campar a sus anchas y entrar en conflictos unos con otros, en materia de
recursos como memoria perifricos, Adems, de esta manera, aunque un error software
provoque el cuelgue de un proceso, los dems pueden seguir funcionando normalmente, y
el sistema operativo podra abortar el proceso colgado. Por desgracia, con el DOS el 286 no
est en modo protegido y el cuelgue de un solo proceso bien el programa principal o una
rutina operada por interrupciones- significa la cada inmediata de todo el sistema.
65
Excelencia Acadmica
El 8086 no posee ningn mecanismo para apoyar la multitarea ni la memoria virtual desde el
procesador, por lo que es difcil disear un sistema multitarea para el mismo casi imposible
conseguir que sea realmente operativo. Obviamente, el 286 en modo protegido pierde
absolutamente toda la compatibilidad con los procesadores anteriores. Las caractersticas
generales del 286 son: tiene un bus de datos de 16 bits, un bus de direcciones de 24 bits (16
Mb); posee 25 instrucciones ms que el 8086 y admite 8 modos de direccionamiento. En
modo virtual permite direccionar hasta 1 Gigadyte. Las frecuencias de trabajo tpicas son de
12 y 16 MHz, aunque existen versiones de 20 y 25 MHz. Aqu la construccin ms lenta es
la misma que el caso de 8086, solo que emplea 29 ciclos de reloj en lugar de 206. Un 286
de categora media (16MHz) podra ejecutar ms de medio milln de instrucciones de estas
en un segundo, casi 15 veces ms que un 8086 medio a 8 MHz. Sin embargo, transfiriendo
datos en el registro la diferencia de un procesador a otro se reduce notablemente, aunque el
286 es ms rpido y no slo gracias a los MHz adicionales.
Por su parte, el 386 dispone de una arquitectura de registros de 32 bits, con un bus de
direcciones tambin de 32 bits (direcciona hasta 4 Gigabytes = 4096 Mb) y ms modos
posibles de funcionamiento: el modo real (compatible 8086), el modo protegido
(relativamente compatible con el del 286), un modo protegido propio que permite romper la
barrera de los tradicionales segmentos y el modo virtual 86, en el que puede emular el
funcionamiento simultneo de varios 8086. Una vez ms, todos los modos son
incompatibles entre s y requieren de un sistema operativo especfico. Normalmente, los 386
suelen operar en modo real (debido al DOS) por lo que no se aprovechan las posibilidades
multitarea ni de gestin de memoria. Por otra parte, aunque que puedan emplear los
registros de 32 bits en modo real, ello no suele hacerse para mantener la compatibilidad
con procesadores anteriores- con lo que de entrada se est tirando a la basura un 50% de la
capacidad de proceso del chip, aunque por fortuna estos procesadores suelen trabajar a
frecuencias de 16/20 MHz (obsoletas) y normalmente de 33 y hasta 40 MHz.
El 486 se diferencia del 386 en la integracin en un solo chip del coprocesador 387.
Tambin se ha mejorado la velocidad de operacin: la versin de 25 Mhz dobla en trminos
reales a un 386 a 25 MHz equipado con el mismo tamao de memoria cach. La versin
486sx no se diferencia en el tamao del bus, tambin de 32 bits, sino en la ausencia del 387
(que puede ser aadido externamente). Una tendencia iniciada por el 486 fue la de duplicar
la velocidad del reloj interno (pongamos por caso de 33 MHz) aunque en las
comunicaciones con los buses exteriores se respeten los 33 MHz. Ello agiliza la ejecucin
de las instrucciones ms largas: bajo DOS, el rendimiento general del sistema se puede
66
Excelencia Acadmica
considerar prcticamente el doble. Son los chips DX2 (tambin hay una variante a 50 MHz:
25 x 2). La culminacin de esta tecnologa viene de la mano de los DX4 a 75/100 MHz
(25/33 x 3).
El Pentium, se diferencia respecto al 486 en el bus de datos (ahora de 64 bits, lo que agiliza
los accesos a memoria) y en un elevadsimo nivel de optimizacin y segmentacin que le
permite, empleando compiladores optimizados, simultanear en muchos casos la ejecucin
de dos instrucciones consecutivas. Posee dos cachs internas, tiene capacidad para
predecir el destino de los saltos y la unidad de coma flotante experimenta elevadas mejoras.
Sin embargo, bajo DOS, un Pentium bsico slo es unas 2 veces ms rpido que un 486 a
la misma frecuencia de reloj. Comenz en 60/90 MHz hasta los 166/200/233 MHz de las
ltimas versiones (Pentium Pro y MMX), que junto a diversos clones de otros fabricantes,
mejoran an ms el rendimiento. Todos los equipos Pentium emplean las tcnicas DX, ya
que las placas base tpicas corren a 60 MHz. Un equipo Pentium MMX a 200 MHz es cerca
de 2000 veces ms rpido en aritmtica entera que el IBM PC original de inicios de la
dcada de los 80; en coma flotante la diferencia aumenta incluso algunos rdenes ms de
magnitud. Aunque no hay que olvidar la revolucin del resto de los componentes: 100 veces
ms memoria (central y de vdeo), 1000 veces ms grande el disco duro.
67
Excelencia Acadmica
68
Excelencia Acadmica
EL PROCESADOR
69
Excelencia Acadmica
BX = Base: se usa como registro base para referenciar direcciones de memoria con
direccionamiento indirecto, manteniendo la direccin de la base o comienzo de tablas o
matrices. De esta manera, no es preciso indicar una posicin de memoria fija, sino la
nmero BX (as, haciendo avanzar de unidad en unidad a BX, por ejemplo, se puede ir
accediendo a un gran bloque de memoria en un bucle).
CX = Contador: Se utiliza comnmente como contador en bucles y operaciones repetitivas
de manejo de cadenas. En las instrucciones de desplazamiento y rotacin se utiliza como
contador de 8 bits.
70
Excelencia Acadmica
BP = Puntero base (base pointer): Es un puntero de base, que apunta a una zona dentro de
la pila dedicada al almacenamiento de datos (variables locales y parmetros de las
funciones en los programas compilados).
Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones
durante la ejecucin d eun programa. Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin,
que reflejan los resultados de operaciones del programa; los bits del 8 al 10 son indicadores
de control y el resto no se utilizan. Estos indicadores pueden ser comprobados por las
71
Excelencia Acadmica
instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa
segn el resultado de las operaciones.
Los 386 y superiores disponen de muchos ms registros de los que vamos a ver ahora. Sin
embargo, bajo el sistema operativa DOS slo se suelen emplear los que veremos, que
constituyen bsicamente una extensin a 32 bits de los registros originales del 8086.
Se ampla el tamao de los registros de datos (que pueden ser accedidos en fragmentos de
8, 16 32 bits) y se aaden dos nuevos registros de segmento multipropsito (FS y GS).
Algunos de los registros aqu mostrados son realmente de 32 bits (como EIP en vez de IP),
pero bajo sistema operativo DOS no pueden ser empleados de manera directa, por lo que
no les consideraremos.
72
Excelencia Acadmica
En la prctica, una direccin se indica con la notacin SEGMENTO: OFFSET; adems, una
misma direccin puede expresarse de ms de una manera: por ejemplo, 3S00h:0300h es
equivalente a 3D30: 0000h. Es importante resaltar que no se puede acceder a ms de 64 Kb
en un segmento de datos. Por ello, en los procesadores 386 y superiores no se deben
emplear registro de 32 bit para generar direcciones (bajo DOS), aunque para los clculos
pueden ser interesantes (no obstante, si sera posible configurar estos procesadores para
poder direccionar ms memoria bajo DOS con los registros de 32 bits, aunque no resulta por
lo general prctico).
Donde destino indica dnde se deja el resultado de la operacin en la que pueden participar
(segn casos) FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que
slo tiene un operando, como la siguiente, e incluso ninguno:
INSTRUCCIN DESTINO
Como ejemplos, aunque no hemos visto an las instrucciones utilizaremos un para de ellas:
la de copia o movimiento de datos (MOV) y la de suma (ADD).
73
Excelencia Acadmica
ADD AX,0FFFFh
Porque hay que tener en cuenta que cuando traduzcamos a nmeros el smbolo podra
quedar:
MOV DX,AX
MOV AH,AL
MOV AX,[57D1h]
74
Excelencia Acadmica
MOV AX,ES:[429Ch]
Esta sintaxis (quitando la h de hexadecimal) sera la suma que admite el programa DEBUG
(realmente habra que poner, en el segundo caso, ES: en una lnea y el MOV en otra). Al
trabajar con ensambladores, las variables en memoria se pueden referenciar con etiquetas
simblicas:
MOV AX,dato
MOV AX,ES:dato
Indirecto con ndice o indexado: el operando se encuentra en una direccin determinada por
la suma de un registro de segmento* 16, un registro de ndice, SI o DI y un desplazamiento
de 8 16 bits. Ejemplo:
75
Excelencia Acadmica
Indirecto con base e ndice o indexado a base: el operando se encuentra en una direccin
especfica por la suma de un registro de segmento* 16, uno de base, uno de ndice y
opcionalmente un desplazamiento de 8 16 bits:
CS SS DS ES
IP S No No No
SP No S No No
BP Con prefijo Por defecto Con prefijo Con prefijo
BX Con prefijo Con prefijo Por defecto Con prefijo
SI Con prefijo Con prefijo Por defecto Con prefijo
DI Con prefijo Con prefijo Por defecto Con prefijo(1)
(1) Tambin por defecto en el manejo de cadenas
7.8 LA PILA.
La pila es un bloque de memoria de estrucctura LIFO (Last Input First Ouput: ltimo en
entrar y primero en salir) que se direcciona mediante desplazamientos desde el registro SS
76
Excelencia Acadmica
Los compiladores de los lenguajes de alto nivel la emplean tambin para pasar los
parmetros de los procedimientos y para generar en ella las variables automticas
Variables locales que existen durante la ejecucin del subprograma y se destruyen
inmediatamente despus
- Por ello, una norma bsica es que se debe desapilar siempre todo lo apilado para evitar
una prdida de control inmediata del ordenador.
77
Excelencia Acadmica
1.- Diferencias entre memorias RAM dinmica y RAM esttica, de algunos ejemplos de cada
uno y describa sus caractersticas tcnicas y aplicaciones.
2.- Cual es la funcin de los CHIP-SET del norte y del sur en los computadores cual de ellos
determina el tipo de placa madre.
3.- Cuales son las funciones bsicas en una PC del Microprocesador, Memoria principal y
Puerto
4.- La computadora trabaja en modo Real y modo Protegido, defina cada uno.
5.- Como se genera una Direccin Fsica.
78
Excelencia Acadmica
Instruccin Sintaxis
O D I T S Z A P C
AAA AAA ? - - - ? ? X ? X
AAD AAD ? - - - x x ? x ?
AAM AAM ? - - - x x ? x ?
AAS AAS ? - - - ? ? x ? x
ADC dst,fnt ADC dst,fnt x - - - x x x x x
ADD dst,fnt ADD dst,fnt x - - - x x x x x
AND dst,fnt AND dst,fnt 0 - - - x x ? x 0
79
Excelencia Acadmica
Hasta ahora hemos visto los mnemnicos de las instrucciones que pasadas a su
correspondiente cdigo binario ya puede entender el microprocesador. Si bien se realiza un
gran avance al introducir los mnemnicos respecto a programar directamente en lenguaje
mquina es decir, con nmeros en binario o hexadecimal- an resultara tedioso tener que
realizar los clculos de los desplazamientos en los saltos a otras partes del programa en las
transferencias de control, reservar espacio de memoria dentro de un programa para
almacenar datos, etc... Para facilitar estas operaciones se utilizan las directivas que indican
al ensamblador qu debe hacer con las instrucciones y los datos.
81
Excelencia Acadmica
Los corchetes, como es normal al explicar instrucciones en informtica, indican que loo
especificado entre ellos es opcional, dependiendo de la situacin que se trate.
Las etiquetas son de tipo NEAR cuando el campo de etiqueta finaliza con dos puntos (:);
esto es, se considera cercana: quiere esto decir que cuando realizamos una llamada sobre
dicha etiqueta el ensamblador considera que est dentro del mismo segmento de cdigo
(llamadas intrasegmento) y el procesador slo carga el puntero de instrucciones IP. Tngase
en cuenta que hablamos de instrucciones; las etiquetas empleadas antes de las directivas
como las directivas de definicin de datos por ejemplo, no llevan los dos puntos y sin
embargo no son cercanas.
Las etiquetas son de tipo FAR si el campo de etiqueta no termina con los dos puntos: en
estas etiquetas la instruccin a la que apunta no se encuentra en el mismo segmento de
cdigo sino en otro. Cuando es referenciada en una transferencia de control se carga el
puntero de instrucciones IP y el segmento de cdigo CS (llamadas intersegmento).
Campo de operandos. Indica cuales son los datos implicados en la operacin. Puede haber
0 , 1 2; en el caso de que sean dos al 1 Se le llama destino y al 2 -separado por una
coma- fuente.
mov ax, es: [di] ---> ax destino
es: [di] origen
82
Excelencia Acadmica
Campo de comentarios. Cuando en una lnea hay un punto y coma (;) todo lo que sigue en
la lnea es un comentario que realiza aclaraciones sobre lo que se est haciendo en ese
programa, resulta de gran utilidad de cara a realizar futuras modificaciones al mismo.
CONSTANTES: Pueden ser binarias (ej. 10010b), decimales (ej. 34d), hexadecimales (ej.
0E0h) u octales (ej. 21 21q); tambin las hay de cadena (ej. 'pepe', juan) e incluso con
comillas dentro de comillas de distinto tipo (como 'hola,amigo'). En las hexadecimales, si el
primer dgito no es numrico hay que poner un 0. Slo se puede poner el signo (-) en las
decimales (en las dems, calclese el complemento a dos). Por defecto, las numricas
estn en base 10 si no se indica lo contrario con una directiva (poco recomendable como se
ver).
OPERADORES ASIMTRICOS.
Pueden emplearse libremente (+), (-), (*) y (/) en este ltimo caso la divisin es siempre
entera-. Es vlida, por ejemplo, la siguiente lnea en ensamblador (que se apoya en la
directiva DW, que se ver ms adelante, para reservar memoria para una palabra de 16
bits):
dato DW 12*(nmero+65)/7
OPERADORES LGICOS.
83
Excelencia Acadmica
Puede ser el AND, OR, XOR y NOT. Realizan las expresiones lgicas en las expesiones.
Ej.:
Tambin es vlido:
MOV AX,OFFSET DS:variable
Operador .TYPE: devuelve el modo de la expresin indicada en un byte. El bit 0 indica modo
relativo al cdigo y el 1 modorelativo a datos , si ambos bits estn inactivos significa
modo absoluto. El bit 5 indica si la expesin es local (0 si est definida externamente o
indefinida); el bit 7 indica si la expresin contiene una referencia externa. El TASM utiliza
tambin el bit 3 para indicar algo que desconozco. Este operador es til sobretodo en las
macros para determinar el tipo de los parmetros:
84
Excelencia Acadmica
kilos DW 76
MOV AX,TYPE kilos ; AX = 2
Operador PTR: redefine el atributo de tipo (BITE, WORD, DWORD, QWORD, TBYTE) o el
de distancia (NEAR o FAR) de un operando de memoria. Por ejemplo, si se tiene una tabla
definida de la siguiente manera:
Tabla DW 10 DUP (0) ; 10 palabras a 0
Trabajando con varios segmentos, PTR puede redefinir una etiqueta NEAR de uno de ellos
para convertirla en FAR desde el otro, con objeto de poder llamarla.
85
Excelencia Acadmica
Operadores CS:, DS:, ES:, y SS: el ensamblador genera un prefijo de un byte que indica al
microprocesador el segmento que debe emplear para acceder a los datos en memoria. Por
defecto, se supone DS para los registros BX, DI o SI (o sin registros de base o ndice) y SS
para SP y BP. Si al acceder a un dato ste no se encuentra en el segmento por defecto, el
ensamblador aadir el byte adicional de manera automtica. Sin embargo, el programador
puede forzar tambin esta circunstancia:
MOV AL,ES:variable
Para solucionarlo hay que indicar en qu segmento est el dato (incluso aunque ste sea
DS):
MOV AL,DS:[0]
En este ltimo ejemplo el ensamblador no generar el byte adicional ya que las
instrucciones MOV operan por defecto sobre DS (como casi todas), pero ha sido necesario
indicar DS para que el ensamblador nos entienda. Sin embargo, en el siguiente ejemplo no
es necesario, ya que midato est declarado en el segmento de datos y el ensamblador lo
sabe:
MOV AL,midato
86
Excelencia Acadmica
Operador SHORT: indica que la etiqueta referenciada, de tipo NEAR, puede alcanzarse con
un salto corto (-128 a +127 posiciones) desde la actual situacin del contador de programa.
El ensamblador TASM, si se solicitan dos pasadas, coloca automticamente instrucciones
SHORT all donde es posible, para economizar memoria (el MASM no).
Operador $: indica la posicin del contador de posiciones (Location Counter) utiliado por
el ensamblador dentro del segmento para llevar la cuenta de por dnde se llega
ensamblando. Muy til:
frase DB simptico
longitud EQU $-OFFSET frase
Slo es obligatorio el campo nombre_directiva; los campos han de estar separados por al
menos un espacio en blanco. La sintaxis de nombre es anloga a la de la etiqueta de
las lneas de instrucciones, aunque nunca se pone el sufijo :. El campo de comentario
cumple tambin las mismas normas.
87
Excelencia Acadmica
anno DW 1991
mes DB 12
numerazo DD 12345678h
texto DB Hola,13,10
Se pueden definir nmeros reales de simple precisin (4 bytes) con DD, de doble precisin
(8 bytes) con DQ y reales temporales (10 bytes) con DT; todos ellos con el formato
empleado por el procesador. Para que el ensamblador interprete el nmero como real ha de
llevar el punto decimal:
temperatura DD 29.72
espanoles91 DQ 38.9E6
Con el operando DUP pueden definirse estructuras repetitivas, Por ejemplo, para asignar
100 bytes a cero y 25 palabras de contenido indefinido (no importa lo que el ensamblador
asigne):
Se admiten tambin los anidamientos. El siguiente ejemplo crea una tabla de bytes donde
se repite 50 veces la secuencia 1,2,3,7,7:
88
Excelencia Acadmica
num = 19
num = pepe + 1
dato = [BX+3]
dato = ES:[BP+1]
ORG (OriGin): pone el contador de posiciones del ensamblador, que indica el offset donde
se deposita la instruccin o dato, donde se indique. En los programas COM (que se cargan
en memoria con un OFFSET 100h) es necesario colocar al principio un ORG 100h, y un
ORG 0 en los controladores de dispositivo (aunque si se omite se asume de hecho un ORG
0).
END [expresin]: indica el final del fichero fuente. Si se incluye, expresin indica el punto
sonde arranca el programa. Puede omitirse en los programas EXE si stos constan de un
slo mdulo. En los COM es preciso indicarla y, adems, la expresin -realmente una
etiqueta- debe estar inmediatamente despus del ORG 100h.
.286, .386 y .8087 obligan al ensamblador a reconocer instrucciones especficas del 286, el
386 y del 8087. Tambin debe ponerse el . inicial. Con .8086 se fuerza a que de nuevo
slo se reconozcan instrucciones del 8086 (modo por defecto). La directiva .386 puede ser
colocada dentro de un segmento (entre las directivas SEGMENT/ENDS) con el ensamblador
TASM, lo que permite emplear instrucciones de 386 con segmentos de 16 bits;
alternativamente se puede ubicar fuera de los segmentos (obligatorio en MASM) y definir
stos explcitamente como de 16 bits con USE16.
89
Excelencia Acadmica
EVEN: fuerza el contador de posiciones a una posicin par, intercalando un byte con la
instruccin NOP si es preciso. En buses de 16 ms bits (8086 y superiores, no en 8088)
en dos veces ms rpido el acceso a palabras en posicin par:
EVEN
dato_rapido DW 0
- (No indicada): los segmentos se colocan unos tras otros fsicamente, pero son
lgicamente independientes: cada uno tiene su propia base y sus propios offsets
relativos.
90
Excelencia Acadmica
- COMMON: similar, aunque ahora los segmentos de igual nombre y clase se solapan.
Por ello, las variables declaradas han de serlo en el mismo orden y tamao.
- AT: asocia un segmento a una posicin de memoria fija, no para ensamblar sino
para declarar variables (inicializadas siempre con ?) de cara a acceder con comodidad
a zonas de ROM, vectores de interrupcin, etc. Ejemplo:
De esta manera, la direccin del primer puerto serie puede obtenerse de esta manera (por
ejemplo):
- STACK: segmento de pila, debe existir uno en los programas de tipo EXE; adems
el linkador de Borland (TLINK 4.0) exige obligatoriamente que la clase de ste sea
tambin STACK, con el LINK de Microsoft no siempre es necesario indicar la clase del
segmento de pila. Similar, por lo dems, a PUBLIC.
- MEMORY: segmento que el linkador ubicar al final de todos los dems, lo que
permitira saber dnde acaba el programa. Si se definen varios segmentos de este tipo el
ensamblador acepta el primero y trata a los dems como COMMON. Tngase en cuenta
que el linkador no soporta esta caracterstica, por lo que emplear MEMORY es
equivalente a todos los efectos a utilizar COMMON. Olvdate de MEMORY.
91
Excelencia Acadmica
El uso indica si el segmento es de 16 bits o de 32; al emplear la dirctiva .386 se asumen por
defecto segmentos de 32 bits por lo que es necesario declarar USE16 para conseguir que
los segmentos sean interpretados como de 16 bits por el linkador, lo que permite emplear
algunas instrucciones del 386 en el modo real del microprocesador y bajo el sistema
operativo DOS.
Por ltimo, clase es un nombre opcional que emplear el linkador para encadenar los
mdulos, siendo conveniente nombrar la clase del segmento de pila con STACK.
ASSUME reg_segmento:nombre_segmento[,]
PROC-ENDP permite dar nombre a una subrutina, marcando con claridad su inicio y su fin.
Aunque es redundante, es muy recomendable para estructurar los programas.
cls PROC
...
cls ENDP
El atributo FAR que aparece en ocasiones junto a PROC indica que es un procedimiento
lejano y las instrucciones RET en su interior se ensamblan como RETF (los CALL hacia l
sern, adems, de 32 bits). Observar que la etiqueta nunca termina con dos puntos.
92
Excelencia Acadmica
PUBLIC: permite hacer visibles al exterior (otros ficheros objeto resultantes de otros listados
en ensamblador u otro lenguaje) los smbolos variables y procedimientos- indicados.
Necesario para programacin modular e interfaces con lenguajes de alto nivel. Por ejemplo:
Declara la variable var_x y el procedimiento proc1 como accesibles desde el exterior por
medio de la directiva EXTRN.
EXTRN: Permite acceder a smbolos definidos en otro fichero objeto (resultante de otro
ensamblaje o de una compilacin de un lenguaje de alto nivel); es necesario tambin indicar
el tipo del dato o procedimiento (BYTE, WORD o DWORD; NEAR o FAR; se emplea
adems ABS para las constantes numricas):
En el ejemplo se accede a los smbolos externos proc1 y var_x (ver ejemplos de PUBLIC) y
a continuacin sera posible hacer un CALL proc1 o un MOV CX, var_x, Si la directiva
EXTRN se coloca dentro de un segmento, se supone el smbolo dentro del mismo. Si el
smbolo esta en otro segmento, debe colocarse EXTRN fuera de todos los segmentos
indicndose explcitamente el prefijo de registro de segmento (o bien hacer el ASUME
apropiado) al referenciarlo. Evidentemente, al final, al linkar habr que enlazar este mdulo
con el que define los elementos externos.
93
Excelencia Acadmica
cdigo SEGMENT
...
cdigo ENDS
datos SEGMENT
dato DW 1234
datos ends
94
Excelencia Acadmica
LABEL: permite referenciar un smbolo con otro nombre, siendo factible redefinir el tipo. La
sintaxis es: nombre LABEL tipo (tipo=BYTE, WORD, DWORD, NEAR o FAR). Ejemplo:
En el ejemplo, con MOV AX,palabra se acceder a ambos bytes a la vez (el empleo de MOV
AX,byte_bajo dara error: no se puede cargar un solo byte en un registro de 16 bits y el
ensamblador no supone que realmente pretendamos tomar dos bytes consecutivos de la
memoria).
STRUC ENDS: permite definir registros al estilo de los lenguajes de alto nivel, para
acceder de una manera ms elegante a los campos de una informacin con cierta
estructura. Estos campos pueden componerse de cualquiera de los tipos de datos simples
(DB, DW, DD, DQ, DT) y pueden ser modificables o no en funcin de si son simples o
mltiples, respectivamente:
alumno STRUCT
mote DB0123456789 ; modificable
edadaltura DB 20,175 ; no modificable
peso DB 0 ; modificable
otros DB 10 DUP(0) ; no modificable
telefono DD ? ; modificable
alumno ENDS
95
Excelencia Acadmica
tambin el primer elemento de los campos mltiples sin dar error. Tras crear la estructura,
es posible acceder a sus elementos utilizando un (.) para separar el nombre del campo:
RECORD: similar a STRUCT pero operando con campos de bits. Permite definir una
estructura determinada de byte o palabra para operar con comodidad. Sintaxis:
La estructura registro totaliza 7 bits, por lo que ocupa un byte. Est dividida en tres campos
que ocupan los 7 bits menos significativos del byte: el campo A ocupa los bits 6 y 5, el B los
bits del byte: el campo A ocupa los bi1 al 4 y el C el bit 0:
65 4321 0
11 0101 ?
Quedando reg1 con el valor binario 1001011 (el campo B permanece inalterado y el A y C
toman los valores indicados). Ejemplos de operaciones soportadas:
96
Excelencia Acadmica
DIRECTIVAS CONDICIONALES.
Se empelan para que el ensamblador evale unas condiciones y, segn ellas, ensamble o
no ciertas zonas de cdigo. Es frecuente, por ejemplo, de cara a generar cdigo para varios
ordenadores: pueden existir ciertos smbolos definidos que indiquen en un momento dado si
hay que ensamblar ciertas zonas del listado o no de manera condicional, segn la mquina.
En los fragmentos en ensamblador del cdigo que generan los compiladores tambin
aparecen con frecuencia (para actuar de manera diferente, por ejemplo, segn el modelo de
memoria). Es interesante tambin la posibilidad de definir un smbolo que indique que el
programa est en fase de pruebas y ensamblar cdigo adicional en ese caso con objeto de
depurarlo. Sintaxis:
PAGE num_lineas, num_columnas: formatea el listado de salida; por defecto son 66 lneas
por pgina (modificable entre 10 y 255) y 80 columnas (seleccionable de 60 a 132). PAGE
97
Excelencia Acadmica
.TITLE ttulo: indica el ttulo que aparece en la primera lnea de cada pgina (mximo 60
caracteres).
.LFCOND: Lista los bloques de cdigo asociados a una condicin falsa (IF).
.TFCOND: Invertir vigente del listado de los bloques asociados a una condicin falsa.
98
Excelencia Acadmica
Programando en Assembler
5.1.- TASM/MASM.
Es el programa que convierte nuestro archivo fuente en cdigo objeto, es decir, lenguaje
mquina en el que slo faltan las referencias a rutinas externas. Permite la obtencin de
listado de cdigo y de referencias cruzadas (smbolos, etiquetas, variables). En general,
bastar con hacer TASM nombre_programa (se supone la extensin .ASM por defecto). El
fichero final tiene la extensin OBJ. La sintaxis es (tanto para TASM como para MASM):
5.2.- TLINK/LINK
El montador o linkador permite combinar varios mdulos objeto, realizando las conexiones
entre ellos y, finalmente los convierte en mdulo ejecutable de tipo EXE. El linkador permite
el uso de libreras de funciones de rutinas. TLINK, a diferencia de LINK, permite generar un
fichero de tipo COM directamente de un OBJ si se indica el parmetro/t, lo que agiliza an
ms el proceso. Puede obtenerse ejecutndolo sin parmetros. Los parmetros de TLINK
son sensibles a maysculas y minsculas, por lo que /T no es lo mismo que /t. Con LINK se
obtiene ayuda indicando /HELP. Aunque los parmetros de uno y otro son bastante
distintos, la sintaxis genrica de ambos es:
Los ficheros no necesarios se pueden omitir (o indicar NUL): para linkar el fichero pro1.obj y
el prog2.obj con la librera math.lib generando PROG.EXE basta con ejecutar TLINK
prog1+prog2 math.
8.14 EXE2BIN.
Los ficheros EXE generados por TLINK o LINK no son copia exacta de lo que aparece en la
memoria, sino que el DOS tras cargarlos debe realizar una ltima operacin de montaje.
Un programa COM en memoria es una copia del fichero del disco, es algo ms corto y mas
sencillo de desensamblar.
EXE2BIN, permite transformar un fichero EXE en COM siempre que el mdulo ocupe menos
de 64K y que este ensamblado con ORG 100h. Sino se indic el parmetro /t en TLINK,
ser necesario este programa (al igual que cuando se utiliza LINK). Cuando se crean
programas SYS (que se diferencian de los COM bsicamente en que no tienen ORG 100h)
no se puede ejecutar TLINK /t, por lo que es necesario la ayuda de EXE2BIN para convertir
el programa EXE en SYS. Sintaxis:
100
Excelencia Acadmica
/Ssegmento): esto permite generar cdigo para ser ejecutado en un segmento determinado
de la memoria (como puede ser una memoria EPROM o ROM).
TLIB/LIB.
El gestor de libreras permite reunir mdulos objeto en un nico fichero para poder tomar de
l las rutinas que se necesiten en cada caso. La sintaxis es la siguiente:
Por ejemplo, para aadir el mdulo QUICK. OBJ, borrar el SLOW. OBJ y reemplazar el
SORT.OBJ por una nueva versin en LIBRERA. LIB se ejecutara:
C:\8086\TLIB librera+quick-slow-+sort
Si la lista es muy larga se puede incluir en un fichero y ejecutar TLIB @fichero para que la
lea del mismo (sin no cabe en una lnea del fichero puede escribirse & al final antes de pasar
a la siguiente).
TCREF/CREF.
Esta utilidad genera listados en orden alfabtico de los smbolos, como ayuda a la
depuracin. Con el MASM la opcin /c crea un fichero de referencias cruzadas de extensin
CRF (respondiendo afirmativamente cuando pregunta por el mismo o indicndolo
explcitamente en la lnea de comandos); la pocin /c de TASM lo incluye en el listado,
aunque si se indica el nombre del fichero de referencias cruzadas genera un fichero de
extensin XRF, CREF y TCREF interpretan respectivamente los ficheros CRF y XRF
101
Excelencia Acadmica
generando un fichero de texto con extensin REF que contiene el listado de referencias
cruzadas. Ejemplo:
C:\8086\TCREF fichero
Las referencias cruzadas son un listado de todos los smbolos del programa, indicando los
nmeros de lnea del mismo en que son referenciados (lnea en que son definidos se marca
con #); estos nmeros de lnea son relativos al listado de ensamblaje del programa (y no al
fichero fuente). Es til para depurar programas grandes y complejos.
MAKE.
Esta utilidad se apoya en unos ficheros especiales, al estilo de los BAT del DOS, de cara a
automatizar el proceso de ensamblaje. Slo es recomendable para programas grandes,
divididos en mdulos, en los que MAKE chequea la fecha y hora para ensamblar slo las
partes que hayan sido modificadas.
102
Excelencia Acadmica
103
Excelencia Acadmica
El ROM BIOS y DOS contiene rutinas que pueden ser usadas en los programas. Estas
rutinas usualmente no son invocadas por procedimientos usuales, pero pueden ser accedido
por mecanismos de interrupcin. La mayora de los programadores tpicamente organizan
los programas por interrupciones CALL. El BIOS y la funciones del DOS estn en forma de
cdigo objeto, y se encuentran en direcciones de memoria, en el lenguaje ensamblador hay
instruccin denominada INT que genera una interrupcin de software, en un
microprocesador 80x86 que provee una solucin a determinado cdigo de interrupcin. El
80x86 usa cdigo de interrupciones como ndice en una tabla para localizar la rutina a
ejecutar cuando la interrupcin ocurre. Esta tabla de funciones son conocidas como Tabla
del Vector de Interrupcin (IVT) y las funciones son conocidas como Interrupciones
Rutinarias de Servicio (ISRs). El IVT esta localizado en el primer 1,024 Byte de Memoria y
contiene 256 entradas . Desde cada direccin ISR es de la forma CS:IP cada entrada en el
IVT requiere de 4 Byte de almacenamiento (256*4=1,024 B). El 80x86 recibe seal de
interrupcin primero empuja (PUSH) los flags, CS y el registro IP que se encuentra en la pila
de ese orden, luego el CPU usa el numero de interrupcin para endexarlo en el vector de
interrupcin (IVT) y luego salta a las rutinas de servicio de interrupcin (ISRs) para esa
interrupcin. El ISRs termina con IRET (Interrup RETRY) los cuales remueve los datos de la
pila (POP) el intrusin Pointer (IP), el Code Segmnet (CS) y Flags de la Stack (Pila) por la
cual retorna el control a la interrupcin del programa
104
Excelencia Acadmica
IRET
Programa objeto
INTS
Direccin INTS
Incremento de la direccin
Memoria
. Ej:
1.- Ejecutando la interrupcin 5 ocasiona que el microprocesador grave el siguiente estado
y salta a la funcin de la tabla IVS en la entrada de la interrupcin 5,
2.- El microprocesador ejecuta el cdigo que maneja en esa interrupcin (imprimir pantalla),
3.- Cuando IRET es ejecutado se devuelve el control justo despus del comando colocado
en el programa objeto.
105
Excelencia Acadmica
19 BIOS La rutina asociada con esta interrupcin, lee el sector uno de la pista cero
del disco en la unidad A, a la que le transfiere el control.
1A BIOS Esta rutina permite seleccionar o leer el contenido del reloj que lleva la
hora. El registro CX contiene la palabra mas significativa del conteo
mientras que en DX se encuentra la menos significativa.
1B DOS Esta interrupcin se presenta cada vez que se genera una interrupcin
proveniente del teclado.
1C BIOS Esta interrupcin provoca la ejecucin IRET
1D BIOS Esta tabla de bytes y rutinas necesarias para establecer varios parmetros
para grficos.
1E DOS Tabla de diskette.
24 DOS Esta interrupcin se llama cada ves que ocurre un error crtico dentro de
dos, como puede ser un error de disco.
25 DOS Esta interrupcin transfiere el control, para lectura, al manejador del
dispositivo (driver).
106
Excelencia Acadmica
ORGANIZACIN DE LA MEMORIA:
El procesador prev un bus de direcciones de 20bist hacia la memoria el cual ubica el
byte de referencia, la memoria esta organizada como un arreglo lineal de un milln de byte
direccionados desde 00000H hasta FFFFFH. La memoria esta lgicamente separada en
segmentos de cdigo, datos, datos extra y pila, cada una de 64 KB, cada segmento continua
107
Excelencia Acadmica
con un limite de 16 bytes todas las referencias de memoria estn hechas con relacin a las
direcciones contenidas en el registro de segmento.
Los tipos de segmentos escogidos son basados en las necesidades de direcciones de
los programas. El registro de segmento para ser escogido tiene que cumplir la siguiente
regla: Toda la informacin en un segmento tipo comparte los mismos atributos lgicos
(Ejemplo: cdigo o datos). Para estructurar la memoria dentro de reas rescatables de
caractersticas similares, y para seleccin automtica de registros de segmentos, los
programas son cortos, veloces y mas estructuradados. La palabra de 16 bits puede ser
ubicada (localizada) en borde par o impar. Para direcciones y datos es decir operandos, el
ltimo byte significativo de la palabra es almacenada la ubicacin de la direccin mas baja y
el mas significativo en la prxima direccin mas alta.
Ciertas posiciones de memoria estn reservadas para operaciones especficas del CPU,
posiciones de direcciones del FFFFOH hasta FFFFFH son reservados para operaciones que
incluyen saltos hacia la rutina de inicializacin del sistema, siguiendo el RESET. El
microprocesador siempre ejecutar el cdigo de la posicin FFFFOH donde debe ser
ubicado una instruccin de salto ubicaciones del OOOOOH hasta OO3FFH son reservadas
para operaciones de interrupcin (4 bytes indicadores), conformado por la direccin de
segmento de 16 bits y de desplazamiento de 16 bits.
El microprocesador no puede realizar todo el trabajo de control del computador, existen
unos chips de soporte que le ayudan a gestionar, controlar y hacen posible que todo el
sistema funcione en forma coordinada. El microprocesador se comunica con estos
dispositivos a travs de las cuales pasa la informacin, tanto si viaja desde o hacia un
dispositivo de entrada /salida como un teclado, una impresora.
Cada puerto se identifica por una direccin de 16 bits, el cual puede variar desde 0000H
hasta FFFFH, debido a las 2 instrucciones de manejo de puerto:
in al,dx--------------(entrada)
out dx,al-------------(salida)
donde el registro DX contiene la direccin del puerto. Esto le da un total de 65536 puertos
de entrada /salida. No pueden haber 2 puertos con una misma direccin, esto creara un
conflicto en el sistema digital.
El acceso es similar que el acceso a memoria, es decir; el microprocesador utiliza el bus
de direcciones para generar el nmero del puerto y por el bus de datos viajar la informacin
hacia el microprocesador o sale de este. Pero aqu se genera otra seal de control para
distinguir el acceso a la memoria (IO/M). En otras palabras una direccin de puerto no es lo
108
Excelencia Acadmica
OBJETIVOS:
Familiarizarse con el microprocesador 8088
Construir un sistema con un microprocesador, es decir un sistema digital
programable, flexible, verstil, etc.
Incidir sobre todo en el hardware, ya que en la mayora est familiarizado con el
software.
Familiarizarse con el seguimiento y deteccin de fallas de sistemas digitales basados
con microprocesadores.
Familiarizar al alumno con microprocesadores para disear sistemas aplicados en la
industria control e instrumentos.
109
Excelencia Acadmica
110
Excelencia Acadmica
111
Excelencia Acadmica
Hay que tener en cuenta la forma en que se debe almacenar los datos en memoria, y
tambin el tamao del programa. Cuando se produce un RESET el microprocesador apunta
al ltimo prrafo de memoria (16 bytes) que son suficientes para alojar el programa escrito
anteriormente.
PROCEDIMIENTO:
1. Siguiendo el esquema del circuito, implementar el sistema digital teniendo mucho
cuidado en cuidar un orden al momento de cablear el bus de datos y el bus de
direcciones; es decir, utilizar un determinado color de cable para cada bus. Con
respecto a las lneas de control utilice otro color y colquele unas etiquetas a las
siguientes seales:
Lectura de memoria (MEMRD)
Escritura de puerto (IOWR)
Lectura de puerto (IORD)
Habilitacin de la EPROM (CS)
Reloj del sistema (CLK)
Habilitacin del latch de direcciones (ALE)
Habilitacin de datos(DEN)
Habilitacin del buffer de entrada (INPORT).
Seal de reloj del latch de salida (OUTPORT).
2. Grabar en la memoria EPROM el programa que ser ejecutado por el
microprocesador cada vez que se inicialice el sistema.
3. Con una fuente de alimentacin del laboratorio regule una salida de 5 voltios de DC y
aplquele al circuito. Antes de aplicar verifique que no haya ningn corto, ya que podra
malograr los chips.
4. Si el sistema esta funcionando. Anote y dibuje los siguientes valores y aada a su
informe final:
Seal de lectura de puerto
Seal de escritura de puerto.
Seal de reloj
Consumo de corriente de todo el circuito
112
Excelencia Acadmica
D7 D6 D5 D4 D3 D2 D1 D0
SISTEMA RELO SISTEMA
DECIMAL J g f e d c B a HEXADECIMAL
0 0 1 0 0 0 0 0 0 40h
1 0 1 1 1 1 0 0 1 79h
2 0 0 1 0 0 1 0 0 24h
3 0 0 1 1 0 0 0 0 30h
4 0 0 0 1 1 0 0 1 19h
5 0 0 0 1 0 0 1 0 12h
6 0 0 0 0 0 0 1 0 02h
7 0 1 1 1 1 0 0 0 78h
8 0 0 0 0 0 0 0 0 00h
9 0 0 0 1 1 0 0 0 18h
A 0 0 0 0 1 0 0 0 08h
B 0 0 0 0 0 0 1 1 03h
C 0 1 0 0 0 1 1 0 46h
D 0 0 1 0 0 0 0 1 21h
E 0 0 0 0 0 1 1 0 06h
F 0 0 0 0 1 1 1 0 0Eh
113
Excelencia Acadmica
MACROS
114
Excelencia Acadmica
115
Excelencia Acadmica
Desde el 286 existe una instruccin muy cmoda que introduce en la pila 8 registros,
otra que lo saca(PUSHA y POPA). Quien este acostumbrado a emplearlas, puede crear
unas macros que simulen estas instrucciones en los 8086;
SUPERPUSH MACRO
PUSH AX
PUSH CX
PUSH DX
PUSH BX
PUSH SP
PUSH BP
PUSH SI
PUSH DI
ENDM
La creacin de SUPERPOP es anloga, sacando los registros en orden inverso. El orden
elegido no es por capricho y se corresponde con el de la instruccin PUSHA original, para
compatibilizar. A partir de la definicin de esta macro, tenemos a nuestra disposicin una
nueva instruccin mquina (SUPERPUSH) que puede ser usada con libertad dentro de los
programas.
116
Excelencia Acadmica
PUSH AX
MOV AX,positivos
ADD AX,negativos
MOV total,AX
POP AX
Las instrucciones PUSH y POP sirven para no alterar el valor de AX y conseguir que la
macro se comporte como una caja negra; no es necesario que esto sea as pero es una
buena costumbre de programacin para evitar que los programas hagan cosas raras. En
general, las macros de este tipo no deberan alterar los registros y, si los cambian, hay que
tener muy claro cules.
Si se indican ms parmetros de los que una macro necesita, se ignorarn los restantes. En
cambio, si faltan, el MASM asumir que son nulos (0) y dar un mensaje de advertencia, el
TASM es algo ms rgido y podra dar un error. En general, se trata de situaciones atpicas
que deben ser evitadas.
Tambin puede darse el caso de que no sea posible expandir la macro. En el ejemplo, no
hubiera sido posible ejecutar SUMAR AX, BX, DL porque DL es de 8 bits y la instruccin
MOV DL, AX sera ilegal.
Son necesarias normalmente para los saltos condicionales que contengan las macros ms
complejas. Si se pone una etiqueta a donde saltar, la macro slo podra ser empleada una
vez en todo el programa para evitar que dicha etiquete aparezca duplicada. La solucin est
en emplear la directiva LOCAL que ha de ir colocada justo despus de la directiva MACRO:
117
Excelencia Acadmica
* Operador ;;
Indica que lo que viene a continuacin es un comentario que no debe aparecer al
expansionar la macro. Cuando al ensamblar se genera un listado del program, las macros
suelen aparecer expandidas en los puntos en que se invocan; sin embargo slo aparecern
los comentarios normales que comiencen po (;). Los comentarios relacionados con el
funcionamiento interno de la macro deberan ir con (;;), los relativos al uso y sintaxis de la
misma con (;). Esto es addems conveniente porque durante el ensamblaje son mantenidos
en memoria los comentarios de macros (no los del resto del programa) que comienzan por
(;), y no conviene desperdiciar memoria
* Operador &
Utilizado par concatenar texto o smbolos. Es necesario para lograr que el ensamblador
sustituya un parmetro dentro de una cadena de caracteres o como parte de un smbolo:
SALUDO MACRO c
MOV AL, &c
Etiqueta&c: CALL imprimir
ENDM
118
Excelencia Acadmica
Cuando se utilizan estructuras repetitivas REPT, IRP o IRPC existe un problema adicional al
intentar crear etiquetas, ya que el ensamblador se come un & al hacer la primera sustitucin,
generando la misma etiqueta a menos que se duplique el operador &:
MEMORIA MACRO x
IRP i, <1, 2>
X&j DB i
ENDM
ENDM
MEMORIA MACRO x
IRP i,<1, 2>
X&&i DB i
ENDM
ENDM
* Operador ! o <>
Empleado para que el carcter que viene a continuacin debe ser interpretado literalmente y
no como un smbolo. Por ello, !; es equivalente a <;>.
* Operador %
119
Excelencia Acadmica
Estas directivas pueden ser empleadas tambin sin las macros, aumentando la comodidad
de la programacin, aunque abundan especialmente dentro de las macros.
120
Excelencia Acadmica
Empleando smbolos definidos con (=) y apoyndose adems an las macros se puede llegar
a crear pseudo-instrucciones muy potentes:
SUCESION MACRO n
num = 0
REPT n
DB num
num = num + 1
ENDM ; fin de REPT
ENDM ; fin de macro
Es relativamente similar a la instruccin FOR de los lenguajes de alto nivel. Los ngulos (<)
y (>) son obligatorios. El smbolo de control va tomando sucesivamente los valores (no
necesariamente numricos) arg1, arg2, y recorre en cada pasada todo el bloque de
instrucciones hasta alcanzar el ENDM (no confundirlo con fin de macro) sustituyendo
smbolo_control por esos valores en todos los lugares en que aparece:
IRP i, <1,2,3>
DB 0, i, i*i
ENDM
121
Excelencia Acadmica
Nota: Todo lo encerrado entre los ngulos se considera un nico parmetro. Un (;) dentro de
los ngulos no se interpreta como el inicio d eun comentario sino como un elemento ms.
Por otra parte, al emplear macros anidadas, deben indicarse tantos smbolos angulares < y
> consecutivos como niveles de anidamiento existan.
Lgicamente, dentro de una macro tambin resulta bastante til la estructura IRP:
TETRAOUT MACRO p1, p2, p3, p4, valor
PUSH AX
PUSH DX
MOV AL, valor
IRP cn; <p1, p2, p3, p4>
MOV DX, cn
OUT DX, AL
ENDM ; fin de IRP
POP DX
POP AX
ENDM ;fin de macro
122
Excelencia Acadmica
OUT DX, AL
POP DX
POP AX
Cuando se pasan listas como parmetros hay que encerrarlos entre < y > al llamar, para
no confundirlas con elementos independientes. Por ejemplo, supuesta la macro INCD:
INCD MACRO lista. P
IRP i, <lista>
INC i
ENDM ;fin de IRP
DEC p
ENDM ;fin de macro
esta directiva es similar a la anterior, con una salvedad: los elementos situados entre los
ngulos (<) y (>) ahora opcionales, por cierto- soncaracteres ASCII y no van separados por
comas:
IRPC i, <813>
DB i
ENDM
123
Excelencia Acadmica
DB 8
DB 1
DB 3
Ejemplo de utilizacin dentro de una macro (en combinacin con el operador &):
INICIALIZA MACRO a, b, c, d
IRPC iter, <&a&b&c&d>
DB iter
ENDM ; fin de IRPC
ENDM ; fin de macro
* EXITM
sirve para abortar la ejecucin de un bloque MACRO, REPT, IRP IRPC. Normalmente se
utiliza apoyndose en una directiva condicional (IF ELSE ENDIF). Al salir del bloque,
se pasa al nivel inmediatamente superior (que puede ser otro bloque de estos). Como
ejemplo, la siguiente macro reserva n bytes de memoria a cero hasta un mximo de 100,
colocando un byte 255 al final del bloque reservado:
MALLOC MACRO n
maximo = 100
REPT n
IF maximo EQ 0 ; ya van 100?
EXITM ; abandonar REPT
ENDIF
maximo = maximo 1
DB 0 ; reservar byte
ENDM
DB 255 ; byte de fin de bloque
ENDM
124
Excelencia Acadmica
PUSH MACRO R1, R2, R3, R4, R5, R6, R7, R8, R9, R10
IRP reg, < R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>
IFNB <reg>
PUSH reg
ENDIF
ENDM ; fin de IRP
ENDM ;fin de XPUSH
Se expandir en :
PUSH AX
PUSH AX
PUSH DS
PUSH ES
PUSH VAR1
125
Excelencia Acadmica
Escribir un archivo que contenga las siguientes macros y grabarlo con el nombre
LIBRERA.MAC. el listado del archivo se muestra a continuacin:
; Curso: MICROPROCESADORES Y LENGUAJE ASSEMBLER
; Profesor: Inf. Alfredo Granados Ly
; Archivo: LIBRERA.MAC Archivo de librera de macros
; Fecha: 18/11/99
;**************************************************************************************************
; Establece la posicin del cursor en el modo texto: 80x25
CURSOR MACRO FILA, COLUMNA
PUSHA
MOV DH, FILA
MOV DL, COLUMNA
MOV BH, 0
126
Excelencia Acadmica
MOV AH, 2
INT 10H
POPA
ENDM
;**************************************************************************************************
; Dibuja un pixel en el modo VIDEO con color.
PIXEL MACRO FILA, COLUMNA, COLOR
PUSHA
MOV AH, 0CH
MOV AL, COLOR
MOV BH, 0
MOV CH, columna
MOV DX, FILA
INT 10H
POPA
ENDM
;**************************************************************************************************;Dibuj
a un cuadrado en el modo grfico.
CUADRADO MACRO FILX, COLX, FILY, COLY, COLOR
LOCAL O_LAZ1, O_LAZ2, O_LAZ3, O_LAZ4
MOV CX, COLX
O_LAZ1:
PIXEL FILX, CX, COLOR
INC CX
CMP CX, COLY
JNE O_LAZ1
127
Excelencia Acadmica
;**************************************************************************************************;Esta
blece el modo de video: Texto o grfico.
MODOVIDEO MACRO MODO
PUSHA
MOV AH,0
MOV AL, MODO
INT 10H
POPA
ENDM
;**************************************************************************************************;
Limpia la pantalla en el modo de texto.
CLS MACRO
PUSHA
MOV CX, 0
MOV DX, 2479H
MOV BH,7
MOV AX,0600H
INT 10H
128
Excelencia Acadmica
POPA
ENDM
;**************************************************************************************************;
Genera un retardo por software: TOTAL = TIME1 * TIME2 * TIME3 veces.
RETARDO MACRO TIME1, TIME2, TIME3
LOCAL P1, P2, P3
PUSHA
MOV DX, TIME1
P1: MOV CX, TIME2
P2: MOV BX, TIME3
P3: DEC BX
JNZ P3
DEC CX
JNZ P2
DEC DX
JNZ P1
POPA
ENDM
;**************************************************************************************************;
Imprime una cadena de caracteres.
CADENA MACRO BUFFER
PUSHA
LEA DX, BUFFER
MOV AH,9
INT 21H
POPA
ENDM
;**************************************************************************************************
; Llama las funciones de la Interrupcin 21h.
FUNCION MACRO N
MOV AH,N
INT 21H
129
Excelencia Acadmica
ENDM
;**************************************************************************************************;
Rutina en segundos utilizados en reloj (1-60).
SEGUNDOS MACRO SEG
LOCAL OTRO
PUSHA
MOV AH,2CH
INT 21H
MOV BH,DH
ADD BH,SEG
CMP BH,60
JL OTRO
SUB BH,60
OTRO:
MOV AH,2CH
INT 21H
CMP BH,DH
JNE OTRO
POPA
ENDM
;**************************************************************************************************; Ver
al mouse en pantalla.
VER_MOUSE MACRO
PUSH AX
MOV AX,01H
INT 33H
ENDM
;**************************************************************************************************; No
ver el mouse.
NO_MOUSE MACRO
PUSH AX
MOV AX,02H
130
Excelencia Acadmica
INT 33H
POP AX
ENDM
;**************************************************************************************************; Leer
coordenadas del mouse.
LEER_MOUSE MACRO
PUSH AX
MOV AX,03H
INT 33H
POP AX
ENDM
NOTA: La instruccin PUSHA y POPA son de los microprocesadores 286, para arriba.
PROGRAMA No 1.
Utilizando el editor escribir el siguiente, un programa que realice un cuenta regresiva de 10
segundos, mostrando un saludo al inicio y al final de la cuenta.
; INCTEL DC
; Curso : MICROPROCESADORES Y LENGUAJE ASSEMBLER
; Profesor : Ing. Alfredo Granados Ly
; Archivo : EJEM!.asm
; Fecha :
18/11/99.
IF1
INCLUDE LIBRERA.MAC
ENDIF
.286
.MODEL SMALL
.STACK 100H
.DATA
LOGO1 DB HOLA :-)$
LOGO2 DB ADIOS :-)$
131
Excelencia Acadmica
.CODE
MOV AX, @DATA
MOV DS,AX
CLS
CURSOR 12,37
CADENA LOGO1
MOV CL,9
LAZO:
CURSOR 13,40
MOV DL,CL
ADD DL,30H
FUNCION 02H
SEGUNDOS 1
LOOP LAZO
CURSOR 13,40
MOV DL,20H
FUNCION 02H
CURSOR 14,37
CADENA LOGO2
FUNCION 4CH
END
EJERCICIOS:
1. Escriba un programa que muestre en el centro de la pantalla su nombre, de tal manera
que se imprima un carcter de su nombre por segundo (debe generar un pitido al
momento de la impresin).
2. Escriba un programa que pida su nombre y lo muestre en sentido inverso:
Ingrese su nombre: ALFREDO
En sentido inverso: ODERFLA.
PROGRAMA No 2.
El desplazamiento de las imgenes de pantalla (scrolling) y el paginado son dos mtodos
diferentes de transferir bloques de informacin de memoria a pantalla. En el primero de ellos
132
Excelencia Acadmica
uno de los bordes de la pantalla acta como sumidero de la informacin que se genera en
el borde opuesto las nuevas lneas se van creando a partir de los datos de memoria;
repitiendo esta accin lnea a lnea se crea la ilusin de un texto en movimiento.
Cuando se desea desplazar verticalmente una pantalla de texto, se envan las lneas 2 a 25
a las 1 a 24, y se aade la siguiente lnea de datos a la memoria, almacenndola en la lnea
25. En esta operacin, se pierde la lnea superior de los datos, aunque contina existiendo
en memoria. El funcionamiento descendente funciona del mismo modo.
El siguiente programa hace uso del desplazamiento hacia arriba y debajo de un sector de la
pantalla. Para eso se hace uso de las funciones 06h y07h de la interrupcin 10h.
AH = 06H Funcin de deslizar hacia arriba.
AH = 07H funcin de deslizar hacia abajo.
AL = Lneas a deslizar.
BH = Atributo de relleno.
CH = Fila superior
CL = Columna izquierda.
DH = Fila inferior
DL = Columna derecha.
; INCTEL DC
; Curso : MICROPROCESADORES Y LENGUAJE ASSEMBLER
; Profesor : Ing. Alfredo Granados Ly
; Archivo : EJEM!.asm
; Fecha :
18/11/99.
IF1
INCLUDE LIBRERA.MAC
ENDIF
.286
.MODEL SMALL
.STACK 100H
133
Excelencia Acadmica
.DATA
LOGO1 DB ========$
LOGO2 DB | /\/ # \/\ |$
LOGO3 DB | \ 0 0 / |$
LOGO4 DB | ! |$
LOGO5 DB | \_/ |$
LOGO6 DB | BATMAN |$
LOGO7 DB ========$
.CODE
MOV AX, @DATA
MOV DS,AX
CLS
CURSOR 8,35
CADENA LOGO0
CURSOR 9,35
CADENA LOGO1
CURSOR 10,35
CADENA LOGO2
CURSOR 11,35
CADENA LOGO3
CURSOR 12,35
CADENA LOGO4
CURSOR 13,35
CADENA LOGO5
CURSOR 14,35
CADENA LOGO6
CURSOR 15,35
CADENA LOGO7
MOV CL,9
MOV AL,1 ; Desplazar una lnea.
LAZO:
MOV AH,6
134
Excelencia Acadmica
CALL DESPZ
RETARDO 5000,500,10
MOV AH,7
CALL DESPZ
REATRDO 5000,500,10
LOOP LAZO
FUNCION 4CH
DESPZ PROC
PUSH CX
PUSH DX
MOV CH,09 ; lnea superior izquierda
MOV CL,36 ; columna superior izquierda
MOV DH,13 ; lnea inferior derecha
MOV DL,45 ; columna superior derecha
INT 10H
POP DX
POP CX
RET
DESPZ ENDP
END
EJERCICIOS:
1. Escribir un programa que muestre su nombre desplazando de izquierda a derecha.
2. Escribir un programa que imprima su nombre en el centro superior de la pantalla y que
deje caer letra por letra hacia la parte inferior de la pantalla.
PROGRAMA No 3.
El siguiente programa tiene por objeto explicar el funcionamiento del mouse utilizando la
interrupcin 33h. Para la ejecucin de este programa asegrese de haber corrido antes el
archivo: MOUSE.EXE o MOUSE.COM (si est trabajando bajo D.O.S).
135
Excelencia Acadmica
Para ello hay que cambiar el modo de pantalla del modo texto (80x25) al modo grfico
(640x480) para esto utilizamos la funcin 00h de la interrupcin 10H, el modo de video se
especifica en el registro AL.
Tambin se utiliza la macro para escribir un pixel en pantalla para dibujar un rectngulo.
AH = 0CH : escribir un pixel en pantalla.
AL = color
BH = pgina de visulizacin.
CX = columna de pixel.
DX = fila de pixel.
INT 10H
136
Excelencia Acadmica
; INCTEL DC
; Curso : MICROPROCESADORES Y LENGUAJE ASSEMBLER
; Profesor : Ing. Alfredo Granados Ly
; Archivo : EJEM!.asm
; Fecha :
18/11/99.
IF1
INCLUDE LIBRERA.MAC
ENDIF
.286
.MODEL SMALL
.STACK 100H
.DATA
FILA DW ?
COLUMNA DW ?
BOTON DW ?
.CODE
MOV AX,@DATA
MOV DS,AX
MODOVIDEO 12H ; Grfico 640x480 16 colores.
CUADRADO 50,50,100,100,14
VER_MOUSE
ESPERA:
LEER_MOUSE
MOV FILA.CX
MOV COLUMNA.DX
MOV BOTON.BX ; 01 = Izquierda 02 = Derecha.
CMP BOTON,2
JNE ESPERA
CMP FILA,50
137
Excelencia Acadmica
JGE X1X1
JMP ESPERA
X1X1:
CMP FILA 100
JL X2X2
JMP ESPERA
X2X2:
CMP COLUMN,50
JGE X3X3
JMP ESPERA
X3X3:
CMP COLUMNA,100
JLX4X4
JMP ESPERA
X4X4:
MODOVIDEO 02H ; Texto 80x25 16 colores.
FUNCION 4CH
END
EJERCICIOS:
1. Escriba un programa que dibuje 16 lneas a lo largo de la pantalla cada una de diferente
color.
2. Escriba un programa de manera que se grafique una lnea entre dos puntos que han
sido seleccionados utilizando el botn izquierdo del mouse.
138
Excelencia Acadmica
- Una sola entrada y salida en cada mdulo: un mdulo slo debe llamar al inicio de otro
(con CALL) y ste debe retornar al final con un nico RET, no debiendo existir ms
puntos de salida y no siendo recomendable alterar la direccin de retorno.
- Excepto en los puntos en que la velocidad o, la memoria son crticas (la experiencia
demuestra que son menos del 1%) debe codificarse el programa con claridad, si es
preciso perdiendo eficiencia. Ese 1% documentarlo profusamente como se hara para
que lo lea otra persona.
- Los mdulos han de ser cajas negras y no deben modificar el entorno exterior. Esto
significa que no deben actuar sobre variables globales ni modificar los registros (excepto
aquellos registros y variables en que devuelven los resultados, lo que debe
documentarse claramente al principio del mdulo). Tampoco deben depender de
ejecuciones anteriores, salvo excepciones en que la propia claridad del programa
obligue a lo contrario (por ejemplo, los generadores de nmeros aleatorios pueden
depender de la llamada anterior).
Para el paso de parmetros entre mdulos existen varios mtodos que se exponen a
continuacin. Los parmetros pueden pasarse adems de dos maneras: directamente por
valor, o bien indirectamente por referencia o direccin. En el primer caso se enva el valor
del parmetro y en el segundo la direccin inicial de memoria a partir de la que est
139
Excelencia Acadmica
- Paso de parmetros en los registros: los mdulos utilizan ciertos registros muy concretos
para comunicarse. Todos los dems registros han de permanecer inalterados, por lo
cual, si son empleados internamente, han de ser preservados al principio del mdulo y
restaurados al final. Este es el mtodo empleado por el DOS y la BIOS en la mayora de
las ocasiones para comunicarse con quien los llama. Los registros sern preservados
preferiblemente en la pila ( con PUSH) y recuperados de la misma (con POP en orden
inverso); de esta manera, los mdulos son reentrantes y pueden ser llamados de
manera mltiple soportando, entre otras caractersticas, la recursividad (sin embargo, se
requerir tambin que las variables locales se generen sobre la pila).
- Paso de parmetros a travs de un rea comn: se utiliza una zona de memoria para la
comunicacin. Este tipo de mdulos no son reentrantes y hasta que no acaben de
procesar una llamada no se les debe llamar de nuevo en medio de la faena.
Los parmetros para programar depende de cmo se maneje las instrucciones, los registros,
la pila, etc. En la pita se apilan antes de llamar al mdulo que los va a acoger. Este debe
conocer el nmero y tamao de los mismos, para equilibrar el puntero de pila al final antes
de retornar, o en caso contrario el programa que llama deber encargarse de esta
operacin.
140
Excelencia Acadmica
141
Excelencia Acadmica
142