Beruflich Dokumente
Kultur Dokumente
INDICE
INTRODUCCIN
INDICE
UNIDAD TEMTICA N 1
SISTEMAS NUMRICOS
SISTEMAS NUMRICOS POSESINALES
CONVERSIONES ENTRE SISTEMAS NUMRICOS
NMEROS OCTALES Y HEXADECIMALES.
REPRESENTACIN DE NMEROS NEGATIVOS
FORMA DE COMPLEMENTO A 1.
FORMA DE COMPLEMENTO 2.
SUMA Y RESTA EN COMPLEMENTO A DOS
SUSTRACCIN CON COMPLEMENTOS A 2.
CODIGOS: NMERICOS Y ALFANUMERICOS
TIPOS DE CODIGOS
CDIGO REFLEJADO DE CUATRO BITS (CDIGO GRAY)
RESUMEN
BIBLIOGRAFA RECOMENDADA
AUTOEVALUACION FORMATIVA
09
09
09
11
12
13
13
14
16
16
16
17
19
19
20
UNIDAD TEMTICA N 2
ELECTRNICA DIGITAL
LA ELECTRNICA DIGITAL
ELECTRNICA ANALGICA
ELECTRNICA DIGITAL
ELECTRNICA DIGITAL
ESTRUCTURA DE LGEBRA DE BOOLE
SISTEMA BINARIO DE NUMERACIN
RESUMEN
BIBLIOGRAFA RECOMENDADA
AUTOEVALUACION FORMATIVA
21
21
22
23
24
25
28
28
29
29
UNIDAD TEMTICA N 3
OPERACIONES
OPERACIONES APLICANDO 0 Y 1
COMPUERTAS LGICAS
FUNCIONES LGICAS
RESUMEN
BIBLIOGRAFA RECOMENDADA
AUTOEVALUACION FORMATIVA
31
31
32
33
35
36
36
UNIDAD TEMTICA N 04
OPERACIONES UNITARIAS
OPERACIONES CON FUNCIONES
MAPAS DE KARNAUGH
MAPAS DE KARNAUGH PARA 2 VARIABLES
MAPAS DE KARNAUGH PARA 3 VARIABLES
37
37
39
40
41
5
Excelencia Acadmica
42
43
44
44
45
UNIDAD TEMTICA N 5
DECODIFICADORES Y MULTIPLEXORES
DECODIFICADOR
CODIFICADOR BCD A 7 SEGMENTOS
MULTIPLEXOR
BLOQUES ARITMTICOS Y CODIFICACIN NUMRICA
SUMA
RESTA
COMPARACIN
UNIDAD LGICA Y ARITMTICA ALU
ALU
RESUMEN
BIBLIOGRAFA
AUTOEVALUACION FORMATIVA
47
47
49
51
53
53
54
54
55
56
57
58
58
UNIDAD TEMTICA N 6
EL MICROPROCESADOR
ARQUITECTURA VON NEWMAN.
ARQUITECTURA VON NEWMAN.
EL ENSAMBLADOR
LA EVOLUCIN DEL MS-DOS.
MICROPROCESADORES 8086 88, 286, 386, 486 Y GENERACIN-PENTIUM.
CARACTERISTICAS GENERALES.
RESUMEN
BIBLIOGRAFA RECOMENDADA
AUTOEVALUACION FORMATIVA
59
59
61
61
64
64
64
68
68
68
UNIDAD TEMTICA N 7
EL PROCESADOR
REGISTROS DEL 80X86 Y DEL 80286.
REGISTROS DE LOS DATOS
REGISTROS DE SEGMENTO
REGISTROS NDICES
REGISTROS DEL 386 Y PROCESADORES SUPERIORES
ORGANIZACIN DE DIRECCIONES: SEGMENTACIN
MODOS DE DIRECCIONAMIENTO.
COMBINACIONES DE REGISTROS DE SEGMENTO Y DESPLAZAMIENTO
LA PILA
BIBLIOGRAFA
AUTOEVALUACION FORMATIVO
69
69
69
70
71
72
72
73
76
76
77
78
UNIDAD TEMTICA N 08
RESUMEN DE LAS INSTRUCCIONES Y BANDERINES.
RESUMEN DE LAS INSTRUCCIONES
EL LENGUAJE ENSAMBLADOR DEL 80X86
79
79
81
Excelencia Acadmica
81
83
84
85
87
88
89
93
94
97
97
99
102
105
110
114
141
142
Excelencia Acadmica
Excelencia Acadmica
SISTEMAS NUMRICOS
Existen diferentes sistemas de numeracin los conocimientos sobre las diferentes
caractersticas o propiedades que resultan de las operaciones que se realizan, es para
comprender e interpretar de cmo funciona un computador
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
Para los nmeros expresados en base r podramos efectuar su conversin a decimal
multiplicando cada coeficiente por la potencia correspondiente de r y sumando.
Ejemplo :
(630.4)8 = 6x82+3x81+0x80+4x8-1
= 384+24+0.5 = 408.5
Cuando deseamos efectuar la conversin de decimal a binario o ha cualquier otro sistema
con base r es mas conveniente si el nmero se separa en parte entera y en una parte
fraccionaria, y la conversin de cada parte se efecta por separado :
Ejemplo :
Convertir el numero (41)10 a binario
41 1
LSB
20 0
10 0
5 1
2 0
1 1
MSB
(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 :
Convertir el numero (153)10 a base 8
153 1 LSB
198 3
2
2 MSB
(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 :
convertir (0.6875)10 a base 2
Entero
Fraccin
0.6875
0.3750
0.75
0.5
X
X
X
X
2
2
2
2
Coeficiente
1.3750 a-1
0.75 a-2
1.5 a-3
1.0 a-4
=
=
=
=
1
0
1
1
(0.6875)10=(0.1011)2
Cuando deseamos convertir una fraccin decimal en nmero expresado en base r, el
procedimiento es similar, la multiplicacin se hace con r en lugar de 2 y los coeficientes se
encuentran con los enteros.
Ejemplo :
convertir (0.513)10 a base 8
Entero
0.513
0.104
0.832
0.656
0.248
0.984
X
*
*
*
*
*
Fraccin
8 4 .104 a-1
8 0.832 a-2
8 6.656 a-3
8 5.248 a-4
8 1.984 a-5
8 7.872 a-6
Coeficiente
= 4
= 0
= 6
= 5
= 1
= 7
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 :
(41.6875)10 -> (101001.1011)2
Excelencia Acadmica
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.
13
Excelencia Acadmica
000110
1
--------000111
De tal forma que -57 se escribir como 1 000111 en su representacin de complemento a 2.
Ejemplo :
Tres sistemas para representar nmeros binarios con signo se muestran a continuacin.
Sistema de magnitud verdadera
complemento 2
+57
-57
0 111001
1 111001
Sistema de complemento 1
0 111001
1 000110
Sistema de
0 111001
1 000111
Excelencia Acadmica
15
Excelencia Acadmica
Excelencia Acadmica
8421(BCD)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
Exceso -3
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
84-2-1
00 0 0
01 1 1
01 1 0
01 0 1
01 0 0
10 1 1
10 1 0
10 0 1
10 0 0
11 1 1
2421
0000
0001
0010
0011
0100
1011
1100
1101
1110
1111
5043210(Biquinario)
0100001
0100010
0100100
0101000
0110000
1000001
1000010
1000100
1001000
1010000
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
17
Excelencia Acadmica
1001
1000
14
15
Cdigos Alfanumricos
Carcter Codigo interno Cdigo ASCII Cdigo EBCDIC
6 - bits
7 - bits
8 - bits
Cdigo de tarjeta
12 - bits
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
010 001
010 010
010 011
010 100
010 101
010 110
010 111
011 000
011 001
100 001
100 010
100 011
100 100
100 101
100 110
100 111
101 000
101 001
110 010
110 011
110 100
110 101
110 110
110 111
111 000
111 001
100 0001
100 0010
100 0011
100 0100
100 0101
100 0110
100 0111
100 1000
100 1001
100 1010
100 1011
100 1100
100 1101
100 1110
100 1111
101 0000
101 0001
101 0010
101 0011
101 0100
101 0101
101 0110
101 0111
101 1000
101 1001
101 1010
1100 0001
1100 0010
1100 0011
1100 0100
1100 0101
1100 0110
1100 0111
1100 1000
1100 1001
1101 0001
1101 0010
1101 0011
1101 0100
1101 0101
1101 0110
1101 0111
1101 1000
1101 1001
1110 0001
1110 0010
1110 0011
1110 0100
1110 0101
1110 0111
1110 1000
1110 1001
0
1
2
3
4
5
6
7
8
9
000 000
000 001
000 010
000 011
000 100
000 101
000 110
000 111
001 000
001 001
011 0000
011 0001
011 0010
011 0011
011 0100
011 0101
011 0110
011 0111
011 1000
011 1001
1111 0000
1111 0001
1111 0010
1111 0011
1111 0100
1111 0101
1111 0110
1111 0111
1111 1000
1111 1001
0
1
2
3
4
5
6
7
8
9
110 000
010 0000
0100 0000
no perforado
espacio
12,1
12,2
12,3
12,4
12,5
12,6
12,7
12,8
12,9
11,1
11,2
11,3
11,4
11,5
11,6
11,7
11,8
11,9
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
011 011
010 1110
0100 1011
12,8,3
111 100
010 1000
0100 1101
12,8,5
18
Excelencia Acadmica
010 000
010 1011
0100 1110
12,8,6
101 011
010 0100
0101 1011
11,8,3
101 100
010 1010
0101 1100
11,8,4
011 100
010 1001
0101 1101
11,8,5
100 000
010 1101
0110 0000
11
110 001
010 1111
0110 0001
0,1
111 011
010 1100
0110 1011
0,8,3
001 011
010 1101
0111 1110
8,6
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.
Editorial Prentice-hall
19
Excelencia Acadmica
1.
Resolver:
2.
11111111+
11011011
11110111
------------
1111111 X
111
-------------
1000010 11111
------------
1001110012
20
47328 +
35278
-------
63278 +
74238
-----------
51348 02658
---------
Excelencia Acadmica
ELECTRNICA DIGITAL
Los sistemas digitales representan valores de magnitudes fsicas mediante un
conjunto de dgitos o cifras, cada uno de los cuales admite varias posibilidades o smbolos.
La electrnica digital es binaria, es decir, cada dgito admite solamente dos posibilidades,
que solemos expresar con los smbolos 0 y 1, de forma que el sistema de numeracin que le
es propio es el sistema de base 2 (binario).
LA ELECTRNICA DIGITAL
Las seales elctricas son el soporte material de la informacin; segn la manera de
codificar la informacin (de representarla en forma de seales elctricas) aparecen dos tipos
de electrnica: la analgica y la digital.
La analgica representa las cantidades por analoga cuantitativa (a mayor cantidad, mayor
tensin) segn una relacin de proporcionalidad directa, mientras que la digital utiliza
smbolos a travs de un proceso de codificacin abstracta.
Tomemos el ejemplo de un termmetro analgico y otro digital; el primero representa la
temperatura mediante una columna de mercurio (a mayor temperatura mayor longitud de la
columna), en cambio el digital proporciona unos signos numricos (que es preciso
interpretar por referencia a un determinado cdigo). Si observamos que la columna de
mercurio ha aumentado, sabemos que ha subido la temperatura; en cambio, entre una
indicacin digital de 19 y otra de 23 no es obvio cul de ellas indica mayor temperatura
21
Excelencia Acadmica
(solamente la interpretacin de los smbolos, a travs del cdigo numrico, permite resolver
la comparacin).
2.1.
ELECTRNICA ANALGICA
La electrnica analgica representa los valores de una magnitud fsica mediante una
tensin, a travs de una relacin de proporcionalidad V(t) = k.M(t); se utiliza una sola
tensin, una constante de proporcionalidad relaciona la tensin con el valor que representa y
el rango de valores de la tensin es continuo, entre dos valores extremos Vmx y Vmn.
Para trasladar el valor de la magnitud fsica a la correspondiente tensin se necesita un
sensor adecuado (transductor magnitud fsica -> seal elctrica).
El dispositivo bsico de la electrnica analgica es el amplificador, el cual suministra una
tensin de salida proporcional a la tensin de entrada Vo = a.Vi, a expensas de recibir una
energa elctrica desde una fuente de alimentacin VCC.
operaciones
aritmticas
(derivadores,
sumadores,
restadores,
Excelencia Acadmica
2.2.
ELECTRNICA DIGITAL
Los sistemas digitales representan cada valor de una magnitud fsica mediante un
conjunto de dgitos o cifras, cada uno de los cuales admite varias posibilidades o smbolos.
Por ejemplo, en el sistema de numeracin decimal, cada dgito tiene diez posibilidades (0, 1,
2, 3, 4, 5, 6, 7, 8 y 9).
La electrnica digital es binaria, es decir, cada dgito admite solamente dos posibilidades,
que solemos expresar con los smbolos 0 y 1 (tambin, con los smbolos L y H), de forma
que el sistema de numeracin que le es propio es el sistema de base 2 (binario).
La electrnica digital representa los valores de una magnitud fsica mediante m seales
elctricas, cada una de las cuales admite solamente dos valores de tensin que
corresponden a los smbolos 0 y 1; para expresar un solo valor de la magnitud se necesitan
m seales, la relacin se establece mediante un proceso abstracto de codificacin y el rango
de cada seal es discontinuo, reducido a dos nicos valores Vmx y Vmn (por ejemplo, 0V
y 5V).
Para trasladar el valor de la magnitud a la correspondiente representacin digital es preciso
utilizar el sensor que transforma la magnitud en tensin analgica, seguido de un conversor
analgico-digital que aplique el correspondiente cdigo.
Por ejemplo, un sensor de temperatura aplicado a una temperatura de 17 puede
proporcionar una tensin de 4,25 V (factor de proporcionalidad 1/4) y el conversor analgicodigital debe transformar dicha tensin en 10001 (que corresponde al nmero 17 en binario),
que, en realidad, sern cinco tensiones en los terminales de salida del conversor: 5V 0V 0V
0V 5V.
Los dispositivos bsicos digitales de la electrnica digital es el conmutador o interruptor (con
dos estados: abierto = no conduce y cerrado = conduce).
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.
2.3.
ELECTRNICA DIGITAL
Excelencia Acadmica
2.4.
elementos (a, b, c,...) por tres operaciones con las propiedades siguientes:
la complementacin o negacin, a ,
la operacin "o", b + a ,
asociativa y conmutativa
a +1 = 1
a + a = 1
a.0=0
a.1=a
a . a = 0
0 = 1 y
dado
(conjunto
complementacin,
unin
de
e
todos
sus
interseccin;
subconjuntos)
tales
con
operaciones
las
operaciones
pueden
de
representarse
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
Idempotencia:
a+a=a
Absorcin:
a+a.b=a
a+a.b=a+b
a.(a+b) =a
de Morgan: (a+b)= a. b
de Consenso:
a.a=a
(a.b)= a+b
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
sino
y = a.( c + b) . ]
operacin "o"
a+b
operacin "y"
a.b
0+0
0.0
0+1
0.1
1+0
1.0
1+1
1.1
denominacin "o-exclusiva" deriva de que esta operacin coincide con la "o", salvo en el
caso 11 que adopta el valor 0:
0 0=0
1 0 =1
b a vale 1 cuando a b
0 1=1
y
1 1=0
vale 0 cuando a = b,
es decir, b a = 1 si a = 0 y b = 1 o, tambin, si a =1 y b = 0
o sea, a b = a.b + a. b
La expresin a.b+a. b representa la funcin "o-exclusiva" en trminos de operaciones
booleanas bsicas, en la forma de suma de productos; tambin puede expresarse dicha
operacin como producto de sumas, en la forma siguiente:
27
Excelencia Acadmica
valor relativo de la cifra que ocupa el lugar n (contado de derecha a izquierda, partiendo de
0).
El esquema operativo de los cambios de base binario-decimal es el siguiente:
edcba(base 2) = e.24+d.23+c.22+b.21+a.20(base 10)
Ejemplo:100110001001012 = 1x8192+0x4096+0x2048+1x1024+1x512+0x256+
0x128+0x64+1x32+0x16+0x8+1x4+0x2+1x1=976510
N10
r1
Ejemplo
2
C1
r2
C2
r3
C3
r4
2
C4
r5
2
2
C5
r6
cocientes
restos
9765
4882
2441
1220
610
305
152
76
38
19
n10 =1r6r5r4r3r2r12
976510 = 100110001001012
Excelencia Acadmica
*. DONALD A. REAMEN
Anlisis y Diseo de Circuitos Electrnicos
Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1999
*. M. MORRIS MANO
Editorial Prentice-hall
1.
2.
3.
4.
29
Excelencia Acadmica
30
Excelencia Acadmica
OPERACIONES
Las compuertas lgicas aplicadas a los diferentes circuitos digitales electrnicos
fueron para describir la forma esquemtica de una funcin booleana; corresponden a un
conjunto de diseos grficos que le dieron formas y que se estandarizaron sirviendo para
elaborar circuito complejos aplicados a sistemas elaborados que dan lugar a sistemas
computarizados.
3.1.
algoritmo que contenga solamente sumas, restas y comparaciones. Ahora bien, en el caso
del sistema binario estas tres operaciones pueden construirse con funciones booleanas
sencillas; vase a continuacin para dos nmeros binarios de 1 solo dgito:
OPERACIONES LOGICAS.
suma
resta
suma
acarreo
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
resta
acarreo
Acarreo = me llevo
Suma = a.b+a.b
=ab
acarreo = a.b
Acarreo = me llevo
resta = a.b+a.b
=ab
acarreo = a.b
31
Excelencia Acadmica
comparacin
igual
mayor
menor
Igual = a.b+a.b
= (a b)
mayor = a.b
menor = a.b
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.
3.2
COMPUERTAS LGICAS
Compuerta NAND
a
0
0
1
1
a
0
0
1
1
b a.b
0 0
1 0
0 0
1 1
b (a.b)
0 1
1 1
0 1
1 0
Donde
Compuerta OR
Compuerta NOR
Donde
32
a
0
0
1
1
b
0
1
0
1
a+b
0
1
1
1
a
0
0
1
1
b
0
1
0
1
(a + b)
1
0
0
0
Excelencia Acadmica
Compuerta OR-EXCLUSIVA
a
0
0
1
1
ab
0
1
1
0
b
0
1
0
1
Compuerta NOR-EXCLUSIVA
a
0
0
1
1
Donde
Compuerta INVERSOR
Donde
Compuerta BUFFER
3.3.
a
0
1
a
0
1
b
0
1
0
1
(a b)
1
0
0
1
a
1
0
a
0
1
FUNCIONES LGICAS
Dentro del lgebra de Boole de 2 elementos, una funcin booleana o funcin lgica
Excelencia Acadmica
34
Excelencia Acadmica
Binario
Variables
d c b a
Equivalencia
Equivalencia
Equivalencia
Decimal
Hexadecimal
Octal
0 0 0 0
d c b a
0 0 0 1
d c b
0 0 1 0
d c
b a
0 0 1 1
d c
0 1 0 0
c b a
0 1 0 1
c b
0 1 1 0
b a
0 1 1 1
1 0 0 0
d c b a
10
1 0 0 1
d c b
11
1 0 1 0
d c
b a
10
12
1 0 1 1
d c
11
13
1 1 0 0
c b a
12
14
1 1 0 1
c b
13
15
1 1 1 0
b a
14
16
15
17
1 1 1 1
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
*. DONALD A. REAMEN
Analisis y Diseo de Circuitos Electronicos
Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1999
*. M. MORRIS MANO
Lgica digital y diseo de computadores
Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1982
*. ROBER L. BOYLESTAD, LOUIS NASHELSKY Electronica: Teoria de circuitos Editorial
Prentice-hall Sexta Edicin Mejico
Ao 1999
1.
Compuerta and
Compuerta nand
Compuerta or
Compuerta nor
Compuerta or-exclusiva
Compuerta inversor
36
Excelencia Acadmica
OPERACIONES UNITARIAS
Aunque en la definicin del lgebra de Boole se establecen tres operaciones bsicas,
existen tipos especiales de operaciones que con ellas se puede realizar toda el lgebra y
aplicarlos a los circuitos digitales.
4.1.
= a(c + c) + c.b. a
= a+ c.b. a
Y = a+ c.b
37
Excelencia Acadmica
4.2.
COMPUERTA OR EXCLUSIVA
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
4.3.
MAPAS DE KARNAUGH
La aplicacin de los teoremas del lgebra permite simplificar las funciones, reduciendo el
nmero de puertas necesarias para su configuracin; en concreto, los teoremas ms tiles
para la simplificacin son los de idempotencia y absorcin ejemplo, en la siguiente funcin,
para minimizar se aplica los diferentes teoremas de tal forma que la funcin final sea lo mas
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 QuineMcCluskey.
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:
4.4.
MAPAS DE KARNAUGH
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
grupos
de
Circuito de la funcin Y = a + b
4.6.
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
4.7.
Mapa
Karnaugh
para
5
32
celdas (2 = 32).
43
Excelencia Acadmica
Mapa
de
Karnaugh
para
*. DONALD A. REAMEN
Anlisis y Diseo de Circuitos Electrnicos Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1999
*. M. MORRIS MANO
Lgica digital y diseo de computadores
Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1982
*. ROBER L. BOYLESTAD, LOUIS NASHELSKY Electrnica: Teora de circuitos Editorial
Prentice-hall Sexta Edicin Mejico
Ao 1999
44
Excelencia Acadmica
1.
45
Excelencia Acadmica
46
Excelencia Acadmica
DECODIFICADORES Y MULTIPLEXORES
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.)
-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.
5.1.
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
48
Excelencia Acadmica
Ejemplo:
5.2.
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 "andnegada", se obtienen
22 puertas booleanas.
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").
Ejemplo: La siguiente figura representa un multiplexor de 4 lneas de entrada y 2 de control;
en cada momento el nmero binario presente en las entradas de control determina cul de
las 4 lneas de entrada se encuentra conectada con la salida.
51
Excelencia Acadmica
La
funcin
booleana
que
52
(suma
de
trminos
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.
5.4.
SUMA
A partir de la celda sumadora bsica
de dos dgitos a y b ms un tercero
de carreo (me llevo: carry) c.
Puede configurarse un sumador de
dos nmeros binarios de n dgitos mediante la conexin en cadena de n celdas.
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
obtenida
mediante
un
mapa
de
queda
un
simplificada
Karnaugh
poco
que
ms
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", "onegada",...) 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
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.
*. DONALD A. REAMEN
Anlisis y Diseo de Circuitos Electrnicos
Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1999
*. M. MORRIS MANO
Lgica digital y diseo de computadores
Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1982
*. ROBER L. BOYLESTAD, LOUIS NASHELSKY Electrnica: Teora de circuitos Editorial
Prentice-hall Sexta Edicin Mejico
Ao 1999
1.C
0
0
0
0
1
1
1
1
B A
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
2.-
Por que los multiplexores son muy utilizados para el transporte de datos.
3.-
58
Excelencia Acadmica
EL MICROPROCESADOR
Los Microprocesadores se usan para procesar datos e instrucciones que tienen un
significado (informacin) durante la operacin de un bloque de informacin recibe el apoyo
de diferentes dispositivos. Las memorias donde el uso importante de las ROM es en el
almacenamiento de programas en microcomputadoras. Ya que todas las ROM son no
voltiles, estos programas no se pierden cuando la microcomputadora es apagada. Cuando
se enciende la maquina, pueden empezar de inmediato a ejecutar el programa almacenado
en la ROM. Tambin se emplean para almacenar programas y datos en quipo controlado
por microprocesadores como complejas cajas registradoras electrnicas.
6.1.
59
Excelencia Acadmica
La Memoria Interna.
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
60
Excelencia Acadmica
De Datos: De tipo bidireccional, fluyen los datos entre las distintas partes del ordenador.
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.
ARQUITECTURA VON NEWMAN. Un salto importante en la evolucin de los ordenadores
lo introdujo el microprocesador: se trata de una unidad central de proceso contenida
totalmente en un circuito integrado. Esta formado por:
-
Bloque de Registros: Los registros son celdas de memoria en donde queda almacenado
un dato temporalmente. Existe un registro especial llamado de Indicadores, estado o
flags, que refleja el estado operativo del microprocesador.
6.3.
EL ENSAMBLADOR
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.
Es sobradamente conocido que los actuales sistemas operativos son programados en su
mayor parte en lenguajes de alto nivel, especialmente C, pero siempre hay una parte en la
que el ensamblador se hace casi insustituible bajo DOS y es la programacin de los Drivers
para dos controladores de dispositivos, relacionados con la tareas de ms bajo nivel de una
mquina, fundamentalmente las operaciones de entrada/salida en las que es preciso actuar
directamente sobre los dems chips que acompaan al microprocesador.
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.
El 12 de Agosto de 1981 IBM present el IBM PC. Estaba basado en el microprocesador
8088, de 16 bits. El equipamiento de serie consista en 16 Kbytes de memoria ampliables a
64 en la placa base (y a 256 aadiendo tarjetas); el almacenamiento externo se haca en
cintas de casete, aunque pronto aparecieron las unidades de disco de 51/4 pulgadas y
62
Excelencia Acadmica
simple cara (160/180 Kb por disco) o doble cara (320/360 Kb). En 1983 apareci el IBM PCXT, 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
6.5.
1983. MS-DOS 2.0 introducido con el XT: reescritura del ncleo en C; mejoras en el
sistema de ficheros (FAT, subdirectorios,); separacin de los controladores de
dispositivo del sistema.
1984. MS-DOS 3.0: Aade soporte para disketes de 1.2M y discos duros de 20 Mb. No
sera necesaria una nueva versin del DOS para cada nuevo formato de disco si el
controlador integrado para A:, B:, y C: lo hubieran hecho flexible algn da.
1987. MS-DOS 3.3: Soporte para idsketes de 1.44M (31/2-HD). Permite particiones
secundarias en los discos duros. Soporte Internacional: pginas de cdigos.
1988. MS-DOS 4.0: soporte para discos duros de ms de 32 Mb (cambio radical interno
que forz la reescritura de muchos programas de utilidad) hasta 2Bb. Controlador de
memoria EMM386. Precipitada salida al mercado.
6.6
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.
La filosofa de diseo de la familia del 8086 se basa en la compatibilidad y la creacin de
sistemas informticos integrados, por lo que disponen de diversos coprocesadores como el
8089 de E/S y el 8087, coprocesador matemtico de coma flotante. De acuerdo a esta
filosofa y para permitir la compatibilidad con los anteriores sistemas de 8 bits, el 8088 se
dise con un bus de datos de 8 bits, lo cual le hace ms lento que su hermano el 8086,
pues ste es capaz de cargar una palabra ubicada en una direccin par en un solo ciclo de
memoria mientras el 8088 debe realizar dos ciclos leyendo cada vez un byte.
Dispones de 92 tipos de instrucciones, que pueden ejecutar con hasta 7 modos de
direccionamiento. Tienen una capacidad de direccionamiento con puertos de entrada y
salida de hasta 64K (65536 puertos), por lo que las mquinas construidas entorno a esos
64
Excelencia Acadmica
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.
Una caracterstica de los microprocesadores a partir del 386 es la disponibilidad de
memorias cach de alta velocidad de acceso muy pocos nanosegundos- que almacenan
una pequea porcin de la memoria principal. Cuando la CPU accede a una posicin de
memoria, cierta circuitera de control se encarga de ir depositando el contenido de esa
posicin y el de las posiciones inmediatamente consecutivas en la memoria cach. Cuando
sea necesario acceder a la instruccin siguiente del programa, sta ya se encuentra en la
cach y el acceso es muy rpido. Lo ideal sera que toda la memoria del equipo fuera cach,
pero esto no es todava posible actualmente. Una cach de tamao razonable puede doblar
la velocidad efectiva de proceso de la CPU. El 8088 careca de memoria cach, pero si
estaba equipado con una unidad de lectura adelantada de instrucciones con una cola de
prebsqueda de 4 bytes: de esta manera, se agilizaba ya un tanto la velocidad de proceso al
poder ejecutar una instruccin al mismo tiempo que iba leyendo la siguiente.
67
Excelencia Acadmica
68
1.
2.
Como fue el desarrollo del microprocesador desde sus inicios hasta la actualidad.
3.
4.
Excelencia Acadmica
EL PROCESADOR
Los procesadores disponen de registros, la misin de estos registros es almacenar
las posiciones de memoria donde se van a almacenar datos. No todos los registros sirven
para almacenar datos, algunos est especializados en apuntar a las direcciones de memoria
y la funcin de los programas consiste en cargar los registros con datos de la memoria o de
un puerto de E/S, para ser procesados los datos y devolver el resultado a la memoria,
7.1.
se suele emplear bajo el DOS). La misin de estos registros es almacenar las posiciones de
memoria que van a experimentar repetidas manipulaciones, ya que los accesos a memoria
son mucho ms lentos que los accesos a los registros. No todos los registros sirven para
almacenar datos, algunos est especializados en apuntar a las direcciones de memoria. La
mecnica bsica de funcionamiento de un programa consiste en cargar los registros con
datos de la memoria o de un puerto de E/S, procesar los datos y devolver el resultado a la
memoria o a otro puerto de E/S. Obviamente, si un dato slo va a experimentar un cambio,
es preferible realizar la operacin directamente sobre la memoria, si ello es posible.
A continuacin se describen los registros del 8086.
7.2.
AX,BX,CX,DX; pueden utilizarse bien como registros de 16 bits o como dos registros
separados de 8 bits (byte superior e inferior) cambiando la X por H o L segn queramos
69
Excelencia Acadmica
REGISTROS DE SEGMENTO:
Definen reas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas reas
pueden solaparse total o parcialmente. No es posible acceder a una posicin de memoria no
definida por algn segmento: si es preciso, habr de moverse alguno.
CS = Registro de segmento de cdigo (code segment): Contiene la direccin del
segmento con las instrucciones del programa. Los programas de ms de 64 Kb requieren
cambiar CS peridicamente.
DS = Registro de segmento de datos (data segment): Segmento del rea de datos del
programa.
SS = Registro de segmento de pila (stack segment): Segmento de pila.
70
Excelencia Acadmica
REGISTROS NDICES:
SI = ndice fuente (source index): utilizado como registro de ndice en ciertos modos de
direccionamiento indirecto, tambin se emplea para guardar un valor de desplazamiento en
operaciones con cadenas.
DI = ndice destino (destination index): Seusa en determinados modos de direccionamiento
indirecto y para almacenar un desplazamiento en operaciones de cadenas.
71
Excelencia Acadmica
instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa
segn el resultado de las operaciones.
PF (Parity Flag):Indicador de paridad. Se activa tras algunas operaciones aritmticolgicas para indicar que el nmero de bits a uno resultante es par.
7.5.
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.
7.6.
Excelencia Acadmica
MODOS DE DIRECCIONAMIENTO.
Son los distintos modos de acceder a los datos en memoria por parte del procesador.
73
Excelencia Acadmica
; smbolo constante
Porque hay que tener en cuenta que cuando traduzcamos a nmeros el smbolo podra
quedar:
17F3: 0A11 DW FFF
MOV AX,0A11
Direccionamiento de registro: Los operandos, necesariamente de igual tamao, est
contenidos en los registros indicados en la instruccin:
MOV DX,AX
MOV AH,AL
Direccionamiento directo o absoluto: EL operando est situado en la direccin indicada en la
instruccin, relativo al segmento que se trate:
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
Dato DW
MOV ES,[DI],AX
;[ES* 16 + DI] = AX
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:
MOV AX,[DI + DESP]
MOV AX,desp[DI]
ADD
ADD
[SI + DESP],BX
desp[SI],BX
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:
MOV AX,ES:[BX + DI + DESP]
MOV AX,ES:desp[BX][DI]
Mov
7.8
CS:desp[BX][SI],CX
SS
DS
ES
IP
No
No
No
SP
No
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)
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.
*. GRANADOS LY ALFREDO
PERU Ao 2001.
INICTEL
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
8.1
bit no modificado
desconocido o indefinido
puesto siempre a 1
puesto siempre a 0
Instruccin
Sintaxis
AAA
AAD
AAM
AAS
ADC dst,fnt
ADD dst,fnt
AND dst,fnt
AAA
AAD
AAM
AAS
ADC dst,fnt
ADD dst,fnt
AND dst,fnt
O
?
?
?
?
x
x
0
D
-
I
-
T
-
S
?
x
x
?
x
x
x
Z
?
x
x
?
x
x
x
A
X
?
?
x
x
x
?
P
?
x
x
?
x
x
x
C
X
?
?
x
x
x
0
79
Excelencia Acadmica
CALL dsp
CBW
CLC
CLD
CLI
CMC
CMP dst,fnt
CMPS/CMPSB
CMPSW cdst,cfnt
CWD
DAA
DAS
DEC dst
DIV fnt
ESC opcode,fnt
HLT
IDIV fnt
IMUL fnt
IN acum,port
INC dst
INT interrup
INTO
IRET
Jcc (JA,JBE)
JMP
JCXZ dsp
LAHF
LDS dst, fnt
LEA dst, fnt
LES dst, fnt
LOCK
LODS/LODSB/
LODSW cfnt
LOOP
LOOPcc (LOOPE..)
MOV dst, fnt
MOVS/MOVSB/
MOVSW cdst, cfnt
MUL fnt
NEG dst
NOP
NOT dst
OR dst, fnt
OUT port,acum
POP DST
POPF
PUSH dst
PUSHF
RCL dst, cnt
RCR dst, cnt
REP/REPE/REPZ/
REPNE/REPNZ
RET [val]
80
CALL dsp
CBW
CLC
CLD
CLI
CMC
CMP dst,fnt
0
-
0
-
0
x
x
CMPSW cdst,cfnt
CWD
DAA
DAS
DEC dst
DIV fnt
ESC opcode,fnt
HLT
IDIV fnt
IMUL fnt
IN acum,port
INC dst
INT interrup
INTO
IRET
Jcc dsp
JMP dsp
JCXZ dsp
LAHF
LDS dst, fnt
LEA dst, fnt
LES dst, fnt
LOCK
x
?
x
?
?
x
x
x
-
x
-
0
0
x
-
0
0
x
-
x
x
x
x
?
?
?
x
x
-
x
x
x
x
?
?
?
x
x
-
x
x
x
x
?
?
?
x
x
-
x
x
x
x
?
?
?
x
x
-
x
x
x
?
?
x
x
-
LODS mem
LOOP dsp
LOOPcc dsp
MOV dst, fnt
X
X
0
X
X
X
X
-
X
-
X
-
?
X
X
X
-
?
X
X
X
-
?
X
?
X
-
?
X
X
X
-
X
X
0
X
X
X
REP
RET [val]
- - - - - - - - - - - - - - - - -
Excelencia Acadmica
RETF [val]
ROL dst, cnt
ROP dst, cnt
SAHF
SAL/SHL dst, cnt
SAR dst, cnt
SBB dst, fnt
SCAS/SCASB/
SCASW cdst
SHR dst, cnt
STC
STD
STI
STOS/STOSB/
STOSW cdst
SUB dst, fnt
TEST dst, fnt
WAIT
XCHG dst, fnt
XLAT tfnt
XOR dst, fnt
8.2
X
X
X
X
RETF [val]
ROL dst, cnt
ROP dst, cnt
SAHF
SAL dst, cnt
SAR dst, cnt
SBB dst, fnt
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
SCAS cdst
SHR dst, cnt
STC
STD
STI
X
X
-
1
-
- - X X X X
- - X X ? X
- - - - - - 1
- - - -
X
X
1
-
STOS cdst
SUB dst, fnt
TEST dst, fnt
WAIT
XCHG dst, fnt
XLAT tfnt
XOR dst, fnt
X
0
0
X
0
0
X
X
X
X
X
X
X
X
X
X
X
?
?
X
X
?
?
X
X
X
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.
Campo de etiqueta. Es el nombre simblico de la primera posicin de una instruccin,
puntero o dato. Consta de hasta 31 caracteres que pueden ser las letras de la A a la Z, los
nmeros del 0 al 9 y algunos caracteres especiales como @, _,., y $. Reglas:
-
--->
ax
destino
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.
8.4
CONSTANTES Y OPERADORES.
Las sentencias fuente tanto instrucciones como directivas- pueden contener
constantes y operadores.
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
DW
(12 SHR 2) + 5
OPERADORES LGICOS.
83
Excelencia Acadmica
Puede ser el AND, OR, XOR y NOT. Realizan las expresiones lgicas en las expesiones.
Ej.:
MOV BL, (255 AND 128) XOR 128 ; BL = 0
8.5
OPERADORES RELACIONALES.
Devuelven condiciones de cierto (0FFFFh 0FFh) o falso (0) evaluando una expresin.
Pueden ser: EQ (igual), NE (no igual), LT (menor que), GT (mayor que), LE (menor o igual
que), GE (mayor o igual que). Ejemplo:
dato
EQU
100
MOV
AL,dato GE 10
: AL = 0FFh (cierto)
MOV
AH,dato EQ 99
: AH = 0 (falso)
8.6.
Excelencia Acadmica
info
.TYPE variable
DW
76
; AX = 2
AX,SIZE matriz
; AX = 200
MOV
BX,LENGTH matriz
; BX = 100
OPERADORES DE ATRIBUTOS.
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
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
En el ejemplo, variable se supone ubicada en el segmento extra. Cuando se referencia una
direccin fija hay que indicar el segmento, ya que el ensamblador no conoce en qu
segmento est la variable, es uno de los pocos casos en que debe indicarse. Por ejemplo, la
siguiente lnea dar un error al ensamblar:
MOV AL,[0]
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
Por lo general no es muy frecuente la necesidad de indicar explcitamente el segmento: al
acceder a una variable el ensamblador mira en qu segmento est declarada (vase la
directiva SEGMENT) y segn como estn asignados los ASSUME, pondr o no el prefijo
adecuado segn sea conveniente. Es responsabilidad exclusiva del programador inicializar
los registros de segmento al principio de los procedimientos para que el ASSUME no se
quede en tinta mojada... si se emplean con bastante frecuencia, sin embargo, los prefijos CS
en las rutinas que gestionan interrupciones (ya que CS es el nico registro de segmento que
apunta en principio a las mismas, hasta que se cargue DS u otro).
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
longitud
DB
simptico
EQU
$-OFFSET frase
8.8
EQU
1025
; AL = 1
; AH = 4
PRINCIPALES DIRECTIVAS.
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):
ceros
basura
DW
25 DUP (?)
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:
tabla
8.10
DB
2000
88
Excelencia Acadmica
edad EQU
[BX+DI+8]
MOV AX,edad
= (signo =): asigna el valor de la expresin a un nombre simblico variable: Anlogo al
anterior pero con posibilidad de cambiar en el futuro. Muy usada en macros (sobre todo con
REPT).
num = 19
num = pepe + 1
dato = [BX+3]
dato = ES:[BP+1]
8.11. DIRECTIVAS DE CONTROL DEL ENSAMBLADOR
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
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:
vars_bios SEGMENT AT 40H
p_serie0
DW ?
vars_bios ENDS
De esta manera, la direccin del primer puerto serie puede obtenerse de esta manera (por
ejemplo):
MOV AX, variable_bios ; segmento
MOV ES,AX
MOV AX,ES:p_serie0
-
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 (Suponer): Indica al ensamblador el registro de segmento que se va a utilizar para
direccionar cada segmento dentro del mdulo. Esta instruccin va normalmente
inmediatamente despus del SEGMENT. El programa ms sencillo necesita que se
suponga CS como mnimo para el segmento de cdigo, de lo contrario el ensamblador
empezar a protestar un montn al no saber que registro de segmento asociar al cdigo
generado. Tambin conviene hacer un assume del registro de segmento DS hacia el
segmento de datos, incluso en el caso de que ste sea el mismo que el de cdigo: si no, el
ensamblador colocar un byte de prefijo adicional en todos los accesos a memoria para
forzar que stos sean sobre CS. Se puede indicar ASSUME NOTHING para cancelar un
ASSUME anterior. Tambin se puede indicar el nombre de un grupo o emplear SEG
variable o SEG etiqueta en ves de nombre_segmento:
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
PROC FAR
proc1
ENDP
var_x
DW
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):
EXTRN proc1:FAR, var_x:WORD
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.
INCLUDE nombre_fichero: Aade al fichero fuente en proceso de ensamblaje el fichero
indicado, en el punto en que aparece el INCLUDE. Es exactamente lo mismo que mezclar
ambos ficheros con un editor de texto. Ahorra trabajos en fragmentos de cdigo que se
repiten en varios programas (como quiz una librera de macros). No se recomiendan
INCLUDEs anidados.
93
Excelencia Acadmica
8.13
cdigo
SEGMENT
...
cdigo
ENDS
datos
SEGMENT
dato
DW 1234
datos
ends
pila
pila
ENDS
; incorrecto!
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:
palabra
LABEL WORD
byte_bajo
DB
Byte_alto
DB
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
mote
STRUCT
DB0123456789
edadaltura DB 20,175
; modificable
; no modificable
peso
DB 0
otros
DB 10 DUP(0) ; no modificable
telefono
DD ?
alumno
; modificable
; modificable
ENDS
alumno <gordinflas,,101,,251244>
En el ejemplo se definen los campos modificables (los nicos definibles) dejando sin definir
(comas consecutivas) los no modificables, crendose la estructura felipe que ocupa 27
bytes. Las cadenas de caracteres son rellenadas con espacios en blanco al final si no
alcanzan el tamao mximo de la declaracin. El TASM es ms flexible y permite definir
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:
MOV
AX,OFFSET felipe.telefono
LEA
BX,felipe
MOV
CL,[BX].peso
; equivale a [BX+12]
RECORD: similar a STRUCT pero operando con campos de bits. Permite definir una
estructura determinada de byte o palabra para operar con comodidad. Sintaxis:
nombre
RECORD nombre_de_campo:tamao[=valor],...
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
11
0101
0
?
registro <2,,1>
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:
MOV
AL,A
96
menos significativo de A)
MOV
AL,MASK A
; AL = 01100000b (mscara de A)
MOV
AL,UIT A
; AL = 2 (anchura de A)
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:
IFxxx [smbolo/exp./arg.]
; xxx es la condicin
...
ELSE
; el ELSE es opcional
...
ENDIF
IF
expresin
IFE
expresin
IF1
IF2
IFDEF
smbolo
IFNDEF
smbolo
IFB
8.13
DIRECTIVAS DE LISTADO.
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
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):
C:/8086/TASM fichero_fuente, fichero_listado, fichero_referencias_cruzadas
A continuacin se listan los parmetros comunes a TASM:0(y posterior) y MASM 4.0/5.0
(NO la 6.x):
/a y /s
/c
/D
/e
/Iruta
/l[a]
/m
/n
/p
/t
/w
/X
/z
/Zd
/Z
Excelencia Acadmica
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:
C:\8086\TLINK fich_obj(s), fich_exe, fich_map, fich_librera, fich_def
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:
C:\8086\EXE2BIN fich.exe (a veces hay que indicar EXE2BIN fich.exe fich.com)
Si el programa no contiene ORG 100h , EXE2BIN genera un fichero binario puro de
extensin BIN. Si adems existen referencias absolutas a segmentos, EXE2BIN preguntar
el segmento en que va a correr (algunas versiones permiten indicarlo de la manera
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:
C:\8086\TLIB fichero_librera comandos, fichero_listado
Si no se indican comandos se obtiene simplemente informacin del contenido de la librera
en el fichero de listado (que puede ser CON para listado por pantalla). Los comandos son de
la forma <smbolo>nombre_de_mdulo y pueden ser los siguientes:
+
-+
-*
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:
102
Excelencia Acadmica
8.16
FUNCIONES DE LA BIOS
Las funciones de la BIOS se invocan, desde los programas de usuario, ejecutando una
interrupcin software con un cierto valor inicial en los registros. La BIOS emplea un cierto
rango de interrupciones, cada una encargada de una tarea especfica:
INT 10h: Servicios de video (texto y grficos).
INT 11h: Informe sobre el tamao de la memoria convencional.
INT 13h: Servicios de disco (muy elementales: pistas, sectores, etc.)
INT 14h: Comunicaciones en serie.
INT 15h: Funciones casette (PC) y servicios especiales del sistema (AT).
INT 16h: Servicios de teclado.
INT 17h: Servicios de impresora.
INT 18h: Llamar a la ROM DEL BASIC (slo mquinas IBM).
INT 19h: Reinicializacin del sistema.
INT 1Ah: Servicios horarios.
INT 1Fh: Apunta a la tabla de los caracteres ASCII 128 255 (8x8 puntos).
La mayora de las interrupciones se invocan solicitando una funcin determinada (que se
indica en el registro AH al llamar) y se limitan a devolver un resultado en ciertos registros,
realizando la tarea solicitada.
FUNCIONES DEL DOS
El DOS emplea varias interrupciones, al igual que la BIOS; al igual que la BIOS; sin
embargo, cuando se habla de funciones del DOS, todo el mundo sobreentiende que se trata
de llamar a la INT 21h, la interrupcin mas importante con diferencia.
INT 20h: Terminar programa
INT 21h: Servicio del DOS.
INT 22h: Control de finalizacin de programas
INT 23h:Tratamiento de Ctrl-C.
INT 24h: Tratamiento de errores crticos.
INT 25h: Lectura absoluta de disco (sectores lgicos).
INT 26h: Lectura absoluta en disco (sectores lgicos).
INT 27h: Terminar dejando residente el programa (en desuso).
INT 28h: Idle (ejecutada cuando el ordenador est inactivo).
INT 29h: Impresin rpida en pantalla ( no tanto ).
INT 2Ah: Red Local MS NET.
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
104
Excelencia Acadmica
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.
PRINCIPALES INTERRUPCIONES DEL BIOS Y DEL DOS
Int
2
Tipo
BIOS
BIOS
BIOS
BIOS
Descripcin
Este tipo de interrupcin no se puede evitar. Utiliza el BIOS NEM2,
procedimiento NMI-INT y aparece cuando se detectan errores en la
memoria sobre la tarjeta del sistema (Perity Chekc 1) o se tiene problemas
con tarjetas que se aaden al sistema (Parity Chekc 2)
Esta interrupcin se encarga de imprimir el contenido de la pantalla bajo el
control del programa. El llamado al procedimiento tipo FAR en PRINT
SCREEN y la direccin 0050;0000 contiene el estado.
Esta rutina maneja la interrupcin del temporizador proveniente del canal 0
del temporizador
8253. La rutina lleva el conteo del numero de
interrupciones desde que se energiz la computadora.
Esta rutina es un procedimiento FAR KB-INT. La rutina continua en la
direccin F000;EC32 y constituye la interrupcin del teclado. La INT 16h
105
Excelencia Acadmica
BIOS
F
10
DOS
BIOS
11
BIOS
12
13
BIOS
BIOS
14
BIOS
15
BIOS
16
BIOS
17
BIOS
18
BIOS
19
BIOS
1A
BIOS
1B
DOS
1C
BIOS
1D
BIOS
1E
DOS
1F
DOS
Tabla de grficos.
20
DOS
21
DOS
22
DOS
23
DOS
24
DOS
25
DOS
106
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.
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.
Esta interrupcin se presenta cada vez que se genera una interrupcin
proveniente del teclado.
Esta interrupcin provoca la ejecucin IRET
Esta interrupcin se llama cada ves que ocurre un error crtico dentro de
dos, como puede ser un error de disco.
Esta interrupcin transfiere el control, para lectura, al manejador del
dispositivo (driver).
Excelencia Acadmica
26
DOS
27
DOS
2F
DOS
14 registros de trabajo.
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
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
Un microprocesador 8088
Un oscilador de 20Mhz.
Un latch 74LS374.
Decodificadores 74LS138.
Dip switch de 8.
109
Excelencia Acadmica
capacidad de direccionamiento de 1MB y con un bus de datos externo de 8 bits. Las lneas
de datos esta multiplexadas con las primeras 8 lneas, por ello es necesario utilizar un
circuito de multiplexacin para separar los datos y direcciones. Entre las lneas mas
importantes
de
control
tenemos
el
ALE
(Habilitador
de
latch
de
direcciones),
2.
3.
ALE.
4.
110
Excelencia Acadmica
A8
A7
A6
A5
A4
A3
A2
0
A1
0
A0
0
Se utilizan las 10 lneas de menor peso del bus de direcciones, para la compatibilidad
con el diseo de interfaces para computadoras.
El puerto de salida lo conforma el latch 74374, este CI se habilitar cuando el
microprocesador ejecute la instruccin: OUT DX,AL donde el registro DX contiene la
direccin del puerto de salida (301H) y el registro AL contiene el dato que esta saliendo
del sistema.
En el sistema a implementar ingresamos un dato proveniente de un switch conectado al
buffer de entrada; y en la salida conectaremos 8 leds, para visualizar el dato que esta
saliendo del sistema.
PROCESO DE DISEO DEL SOFTWARE
El programa a escribir deber ser escrito en lenguaje assembler , se supone que el
alumno ya tiene un cierto dominio en la programacin.
La informacin binaria a almacenar en la memoria EPROM deber ser el cdigo de
mquina del programa escrito. A continuacin se muestra un programa que lee un puerto de
entrada invierte el dato leido y lo enva al puerto de salida. Aqu tambin se muestra la
direccin que ocupa la instruccin en memoria y el cdigo de mquina correspondiente de la
instruccin.
Posicin de
Cdigo de
mem.
maquina
Programa en assembler
code segment
inicio
4 FFFF0
BA0300
5 FFFF3
EC
in al, dx
6 FFFF4
34FF
7 FFFF6
8 FFFF7
42
EE
inc dx
out dx, al
111
Excelencia Acadmica
9 FFFF8
EBF6
10 FFFFA
jmp inicio
code ends
11
end inicio
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.
2.
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.
112
Excelencia Acadmica
5.
Los display utilizados para visualizar el cdigo ASCII son de nodo comn; luego, los
diferentes valores para cada uno de los nmeros convertidos al formato de 7 bits se
pueden observar en la siguiente . Tabla.
D7
D6
D5
D4 D3 D2 D1 D0
SISTEMA
RELO
SISTEMA
DECIMAL
40h
79h
24h
30h
19h
12h
02h
78h
00h
18h
08h
03h
46h
21h
06h
0Eh
HEXADECIMAL
113
Excelencia Acadmica
Excelencia Acadmica
; instrucciones de la macro
ENDM
El nombre simblico es el que permitir en adelante hacer referencia a la macro, y se
construye casi con las mismas reglas que los nombres se las variables y dems smbolos.
La macro puede contener parmetros de manera opcional. A continuacin vienen las
instrucciones que engloba y, finalmente, la directiva ENDM seala el final de la macro. No se
debe repetir el nombre simblico junto a la directiva ENDM, ello provocara un error un tanto
curioso y extrao por parte del ensamblador (algo as como Fin del fichero fuente
inesperado, falta directiva END), al menos con MASM 5.0 Y TASM 2.0.
En realidad, y a diferencia de lo que sucede con los dems smbolos, el nombre de una
macro puede coincidir con el de una instruccin mquina o una directiva del ensamblador : a
partir de ese momento, la instruccin o directiva machacada pierde su significado original. El
ensamblador dar adems un aviso de advertencia si se emplea una instruccin o directiva
como nombre de macro, aunque tolerar la operacin. Normalmente se las asignar
nombres normales, como a las variables. Sin embargo, si alguna vez se redefiniera una
instruccin mquina o directiva, para restaurar el significado original del smbolo, la macro
puede ser borrada o simplemente porque ya no va a ser usada a partir de cierto punto del
listado, y as ya no consumir espacio en las tablas de macros que mantiene en memoria el
ensamblador al ensamblar. No es necesario borrar las macros antes de redefinirlas, para
borrarlas, la sintaxis es la siguiente:
PURGE Nombre_simblico {, Nombre_simblico,.}
EJEMPLO DE UNA MACRO SENCILLA
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.
PARAMETROS FORMALES Y PARMETROS ACTUALES
Cuando se llama a una macro se le pueden pasar opcionalmente un cierto nmero de
parmetros de cierto tipo. Estos parmetros se denominan parmetros actuales. En la
definicin de la macro, dichos parmetros aparecen asociados a ciertos nombres arbitrarios
cuya nica misin es permitir distinguir unos parmetros de otros e indicar en que orden son
entregados: son los parmetros formales. Cuando el ensamblador expanda la macro a
ensamblar, los parmetros formales sern sustituidos por sus correspondiente parmetros
actuales. Considerar el siguiente ejemplo:
SUMAR
MACRO
PUSH AX
MOV AX,a
ADD
AX,b
MOV total,AX
POP
ENDM
116
AX
a,b,total
Excelencia Acadmica
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.
ETIQUETAS DENTRO DE MACROS. VARIABLES LOCALES
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
MINIMO
Ya_esta:
MACRO
LOCAL
ya_esta
MOV
AX, dato1
CMP
AX, dato2
; es dati1 el menor?
JB
ya_esta
; s
MOV
AX, dato2
; no, es dato2
MOV
resultado, AX
ENDM
En el ejemplo, al invocar la macro dos veces el ensamblador no generar la etiqueta
ya_esta sino las etiquetas ? ?0000, ??0001, y as sucesivamente. La directiva LOCAL
no slo es til para los saltos condicionales en las macros, tambin permite declarar
variables internas a los mismos. Se puede indicar un nmero casi indefinido de etiquetas
con la directiva LOCAL, separndolas por comas.
8.20. OPERADORES DE MACROS.
* 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
Etiqueta&c:
MACRO
MOV
AL, &c
CALL
imprimir
ENDM
118
Excelencia Acadmica
CALL imprimir
MACRO
IRP
i, <1, 2>
DB
ENDM
ENDM
Si se invoca MEMORIA ET se produce el error de etiqueta Sti repetida2, que se puede
salvar aadiendo tantos & como niveles de anidamiento halla en las estructuras repetitivas
empleadas, como se ejemplifica a continuacin:
MEMORIA
X&&i
MACRO
IRP
i,<1, 2>
DB
ENDM
ENDM
Lo que con MEMORIA ET generar correctamente las lneas:
ET1
DB1
ET2
DB2
* 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
MACRO
mensaje, suma
%OUT
*mensaje, suma*
ENDM
(Evidentemente, el % que precede a OUT forma parte de la directiva y no se trata del %
operador que estamos tratando).
Supuesta la existencia de estos smbolos:
SIM1
EQU
120
SIM2
EQU
500
120
Excelencia Acadmica
DX, AL
ENDM
Esta secuencia se transformar, al ensamblar, en lo siguiente:
OUT
DX, AL
OUT
DX, AL
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
DB
DB
i, <1,2,3>
DB 0, i, i*i
ENDM
121
Excelencia Acadmica
0, 1, 1
DB
0, 2, 4
DB
0, 3, 9
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
PUSH
AX
PUSH
DX
MOV
AL, valor
IRP
ENDM
; fin de IRP
POP
DX
POP
AX
ENDM
DX, AL
;fin de macro
122
PUSH
AX
PUSH
DX
MOV
AL, 17
MOV
DX, 318h
OUT
DX, AL
MOV
DX, 1C9h
OUT
DX, AL
MOV
DX, 2D1h
OUT
DX, AL
MOV
DX, QA4h
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
IRP
i, <lista>
INC
ENDM
DEC
lista. P
i
;fin de IRP
ENDM
;fin de macro
AX
DEC
AX
INC
BX
INC
CX
INC
DX
; (2 parmetros)
Excelencia Acadmica
DB
DB
DB
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
DB
DB
DB
* 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
EXITM
; ya van 100?
; abandonar REPT
ENDIF
maximo = maximo 1
DB 0
; reservar byte
ENDM
DB 255
ENDM
124
Excelencia Acadmica
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
MACRO lista
IRP i, <lista>
PUSH i
ENDM
ENDM
125
Excelencia Acadmica
XPOP
MACRO lista
IRP i, <lista>
POP i
ENDM
ENDM
CX
POP
BX
POP
AX
EJERCICIOS :
Escribir un archivo que contenga las siguientes macros y grabarlo con el nombre
LIBRERA.MAC. el listado del archivo se muestra a continuacin:
; Curso:
; Profesor:
; Archivo:
; 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
Excelencia Acadmica
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
P2:
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
;**************************************************************************************************;
ver el mouse.
NO_MOUSE MACRO
PUSH AX
MOV AX,02H
130
No
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
; Profesor
; Archivo
EJEM!.asm
; Fecha
:
18/11/99.
IF1
INCLUDE LIBRERA.MAC
ENDIF
.286
.MODEL SMALL
.STACK 100H
.DATA
LOGO1 DB HOLA
:-)$
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
AH = 07H
AL = Lneas a deslizar.
BH = Atributo de relleno.
CH = Fila superior
CL = Columna izquierda.
DH = Fila inferior
DL = Columna derecha.
; INCTEL DC
; Curso
; Profesor
; 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
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
MOV CL,36
MOV DH,13
MOV DL,45
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.
AL = 01H
AL = 02H
AL = 05H
AL = 06H
AL = 0EH
AL = 10H
AL = 11H
AL = 12H
Tambin se utiliza la macro para escribir un pixel en pantalla para dibujar un rectngulo.
AH = 0CH
AL = color
BH = pgina de visulizacin.
CX = columna de pixel.
DX = fila de pixel.
INT 10H
Y por ltimo las funciones para el manejo del mouse:
AX = 1
AX = 2
: No visualiza el mouse.
AX = 3
Excelencia Acadmica
; INCTEL DC
; Curso
; Profesor
; 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
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
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
Ao 1996
*. GRANADOS LY ALFREDO
PERU Ao 2001.
Peru
Ao
INICTEL
141
Excelencia Acadmica
ax,8000h
ds,ax
ax,01h
dl,55h
ds:[0000],dl
21h
dl
ds:[0002],dl
21h
5- Escribir un programa en un lenguaje de bajo nivel que le pida una cadena de caracteres y
luego lo imprima inversamente.
142