Sie sind auf Seite 1von 138

Excelencia Acadmica

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

MAPAS DE KARNAUGH PARA 4 VARIABLES


MAPAS DE KARNAUGH PARA 5 Y 6 VARIABLES
RESUMEN
BIBLIOGRAFA RECOMENDADA
AUTOEVALUACION FORMATIVA

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

SINTAXIS DE UNA LNEA EN ENSAMBLADOR.


CONSTANTES Y OPERADORES
OPERADORES DE RETORNO DE VALORES.
OPERADORES DE ATRIBUTOS
DIRECTIVAS DE DEFINICIN DE DATOS
DIRECTIVAS DE DEFINICIN DE SMBOLOS
DIRECTIVAS DE CONTROL DEL ENSAMBLADOR
DIRECTIVAS DE REFERENCIAS EXTERNAS.
DIRECTIVAS DE DEFINICIN DE BLOQUE
DIRECTIVAS CONDICIONALES
DIRECTIVAS DE LISTADO.
C:\8086\TASM FICHERO, FICHERO
LAS FUNCIONES DEL DOS Y DE LA BIOS
PRINCIPALES INTERRUPCIONES DEL BIOS Y DEL DOS
PROCESO DE DISEO DE HARDWARE
MACROS
BIBLIOGRAFA
AUTOEVALUACION FORMATIVO

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

Al finalizar el estudiante la siguiente unidad temtica podr:


-

Conocer los diferentes sistemas de numeracin.


Conceptualizara las operaciones que se puedan realizar con los diferentes sistemas
de numeracin.
Definir la utilidad de los nmeros binarios
Resolver operaciones y transformaciones de sistemas de numeracin.

1.1. Sistemas Numricos Posesinales


En el sistema de nmeros decimales se dice que la base o raz es 10 debido a que usa 10
dgitos, y los coeficientes se multiplican por potencias de 10.
El sistema binario nicamente posee dos valores posibles que son 0 y 1, en los cuales cada
coeficiente AJ se multiplica por 2J, como ejemplo tendremos el desarrollo del nmero binario
11010.11 el cual ser representado por la siguiente manera :
1x24+1x23+0x22+1x21+0x20+1x2-1+1x2-2
16+8+0+2+0+0.5+0.25 = 26.75
Por lo tanto tenemos que un nmero en un sistema de base(r) tiene coeficientes
multiplicados por potencias de (r) y quedara representado de la siguiente manera :
an*rn+ an*rn+ . . . + a2*r2+ a1*r1+ a0*r0+ a-1*r-1+ . . . + a-m*r-m
1.2. Conversiones entre Sistemas Numricos
Un nmero binario x puede convertirse en decimal efectuando la suma de las potencias
cuyo valor es uno.
9

Excelencia Acadmica

Ejemplo :
(1010.011)2 = 1x23+0x22+1x21+0x20+0x2-1+1x2-2+1x2-3
= 8+0+2+0+0+0.25+0.125
= 10.375
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

1.3. Nmeros octales y hexadecimales.


Las conversiones entre cdigo binario, octal y hexadecimal es muy importante en las
comparaciones digitales, ya que cada dgito octal corresponde a tres dgitos binarios y a
cada dgito hexadecimal corresponde cuatro dgitos binarios.
(10110001101011.111100000110)2 -> (26153.7406)8
Cuando deseamos convertir un nmero binario a hexadecimal, el proceso es similar
excepto que el nmero binario se divide en grupos de 4.
11

Excelencia Acadmica

(10110001101011.11110010)2 -> (2C6B.F2)16


La conversin a hexadecimal en binario se realiza con un procedimiento inverso al
anterior esto es ; cada dgito octal se convierte en su equivalente binario de tres dgitos y
cada dgito hexadecimal se convierte en su equivalente binario de cuatro dgitos.
Ejemplo :
(613.124)8 -> (110001011.001010100)2
(306.D)16 ->(001100000110.1101)2
Los nmeros binarios son difciles de manejar ya que se requiere dos o cuatro veces mas
dgitos que su equivalente decimal.
Ejemplo :
(111111111111)2 -> (4095)10
Una forma de reducir esta deficiencia es emplear la relacin entre el sistema de nmeros
binarios con el sistema octal o hexadecimal.
El nmero binario (111111111111)2 tiene 12 dgitos y los podemos expresar en octal
(7777)8 (cuatro dgitos) o en hexadecimal como (FFF)16 (tres dgitos), la representacin octal
o hexadecimal es mas deseable ya que se representa en forma mas compacta, como un
tercio o un cuarto del nmero de dgitos requeridos por el nmero binario equivalente.
1.4. Representacin de Nmeros Negativos
Debido a que muchas computadoras y calculadoras digitales manejan nmeros
negativos y positivos, se necesita algn medio de representacin para el signo del nmero
(+/-). Esto se lleva a cabo en general agregando otro bit al nmero, denominado bit del
signo.
En trminos generales la convencin comn que se a adoptado es que un cero en el
bit del signo representa un nmero positivo y un uno, representa un nmero negativo.
Ejemplo :
El registro A contiene los bits 0110100, el contenido cero en el bit de mas a la
izquierda (A6) es el bit del signo que representa al signo (+). Los otros seis bits son la
magnitud del nmero, que es igual a 5210.
A6 A5 A4 A3 A2 A1 A0
0 1 1 0 1 0 0
0 1
1 0 1 0 0
(+) Magnitud del numero
De este modo el nmero almacenado en el registro A es +52. El bit del signo se usa
12

Excelencia Acadmica

para indicar si un nmero binario almacenado es positivo o bien negativo. Para los nmeros
positivos, el resto de los bits se utilizan siempre para representar la magnitud del numero en
forma binaria.
Para los nmeros negativos, no obstante, existen tres formas posibles de representar
la magnitud.

Forma de magnitud verdadera.


Forma de complemento a 1
Forma de complemento a 2

Forma de magnitud verdadera.


El ejemplo visto anteriormente, contiene un bit de signo y seis bits de magnitud. Los bits
de magnitud son el equivalente binario verdadero de los valores binarios que se
representan.
Aunque este sistema de magnitud verdadera es directo y fcil de entender, no es de tanta
utilidad como los otros dos sistemas para representar nmeros binarios con signo.
Forma de complemento a 1.
La forma de complemento a 1 de un nmero binario cualquiera se obtiene simplemente
cambiando cada cero del nmero por 1 y cada uno por cero.
Ejemplo :
El complemento de 1 del nmero 101101 es 010010
Cuando se quiere representar nmeros negativos en forma de complemento 1 el bit
de signo se convierte en 1 y la magnitud se transforma de forma binaria verdadera.
-57 = 1 111001 (forma de magnitud real)
= 1 000110 (forma de complemento a 1)
NOTA : Observe que el bit de signo no se complementa sino que se conserva en un 1 a fin
de indicar un nmero negativo.
Forma de complemento 2.
La forma de complemento 2 de un nmero binario se forma simplemente tomando el
complemento 1 del nmero y sumando 1 a la posicin del bit menos significativo.
Ejemplo :
convertir 111001 a su forma de complemento 2.

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

NOTA : Un nmero positivo en cualquier representacin tiene un cero en el bit de la extrema


izquierda para un (+), seguido de un nmero positivo. Un nmero negativo siempre tiene un
uno en el bit de la extrema izquierda para un (-),pero los bits de magnitud se representan de
una
forma
diferente.
En la representacin de signo-magnitud, estos bits son el nmero positivo ; en la
representacin de complemento de 1, estos bits son el complemento del nmero binario y
en la representacin de complemento 2, el nmero esta en su forma de complemento 2.
1.5. Suma y Resta en Complemento a Dos
El complemento 1 y 2 son muy semejantes pero el complemento 2 generalmente es
mas usado debido a las ventajas que representa al aplicarse en circuitos.
Ejemplo : La suma de 2 nmeros positivos +9 y +4
+9 01001 cosumando
+4 00100 sumando
--- -------- ------------+13 01101 suma = +13
NOTA : Los bits de signo del cosumando y el sumando ambos son cero y pos lo tanto el bit
del signo de la suma es cero, lo cual indica que la suma es positiva. Ntese que el
cosumando y el sumando se forman con el mismo nmero de bits, esto siempre debe
llevarse a cabo en el sistema de complemento 2.
Ejemplo: Un nmero positivo y un nmero negativo menor.
+9
01001
-4
11100
--- ---------+5 1 00101
14

Excelencia Acadmica

Este acarreo se desprecia de manera que el resultado es 00101 (+5)


NOTA : En este caso el bit del signo del sumando es uno. Observe que el bit del signo (+)
tambin participa en el proceso de adicin, de hecho, se genera un corrimiento en la ltima
posicin de la suma, este corrimiento siempre es despreciado, de modo que la suma final es
00101 = (+5).
Ejemplo: Un nmero positivo y un numero negativo mayor.
-9 1 0111
+4 0 0100
--- --------5 1 1011
Se le saca el complemento 2
0100
1
--------0101
Se le agrega el bit de signo 10101 (-5).
NOTA: La suma en este caso tiene un bit de signo 1, lo cual indica que es negativo, esta se
encuentra en su forma de complemento 2 de manera que los ltimos 4 bits (1011),
representan
en
realidad
el
complemento
2
de
la
suma.
Para determinar la magnitud verdadera de la suma, debemos de tomar el complemento 2
de 1011, el resultado ser 0101(5).
Ejemplo:2 nmeros negativos -9 y -4.
-9
1 0111
-4
1 1100
---- ---------13 1 1 0011
Se toma el complemento 2
Resultado:1 1101
Este resultado final vuelve a ser negativo y esta en forma de complemento 2 con un bit de
signo
1.
Ntese
que
0011
es
el
complemento
2
de
1101(+13).
Ejemplo:2 nmeros iguales y opuestos.
- 9 1 0111
+9 0 1001
--- --------0 1 0 0000

15

Excelencia Acadmica

Sustraccin con complementos a 2.


Esta operacin en realidad comprende la operacin de adicin que hace uso del sistema de
complemento 2.
Cuando se resta un nmero binario (el sustraendo) de otro nmero binario (el minuendo), el
procedimiento es como sigue :
1.- Tmese el complemento 2 del sustraendo, incluye el bit del signo. Si el sustraendo es
un
nmero positivo, este se transforma en un nmero negativo en forma de
complemento 2. Si el sustraendo es un nmero negativo, este se convertir en uno positivo
en forma binaria verdadera. En otras palabras se altera el signo del sustraendo.
2.- Despus de formar el complemento 2 del sustraendo este se suma al minuendo. El
minuendo se conserva en su forma original. El resultado de esta adicin representa la
diferencia que se pide. El bit del signo de esta diferencia determina si es positivo o bien
negativo, y si esta en forma binaria verdadera o en forma de complemento 2.
3 :- Recurdese que ambos nmeros deben tener el mismo nmero de bits.
Ejemplo:
+9 01001
- +4 11100
--- --------+5 1 00101
1.6. Cdigos: Numricos y Alfanumricos
Tipos de Cdigos
- Cdigos Decimales
Los cdigos binarios para dgitos decimales requieren un mnimo de cuatro bits. Se
obtiene numerosos cdigos diferentes al ordenar cuatro o mas bits en diez distintas
combinaciones.
- Cdigos de Deteccin de Error
La informacin binaria, se trata de seales de pulso modulado o bien, entrada o salida
digital a computadora, puede transmitirse a travs de alguna forma de medio de
comunicacin, como alambres u ondas de radio. Cualquier ruido externo que se introduce
en un medio de comunicacin fsica cambia los valores de bits de 0 a 1 y viceversa.
- Cdigo Reflejado
Los sistemas digitales pueden disearse para procesar datos solo en una forma discreta.
Muchos sistemas fsicos suministran salida de informacin continua. Esta informacin puede
16

Excelencia Acadmica

convertirse en forma digital o discreta antes de que se aplique a un sistema digital. La


informacin continua o analgica se convierte en forma digital mediante un convertidor de
analgico a digital.
- Cdigos Alfanumricos
Muchas de las aplicaciones de las computadoras digitales requieren la manipulacin de
datos que constan no solo de nmeros, sino tambin de letras. Por ejemplo, una compaa
de seguros con millones de tenedores de pliza debe usar una computadora digital para
procesar sus archivos. Para representar el nombre del tenedor de pliza en forma binaria, es
necesario tener un cdigo binario para el alfabeto. Adems, el mismo cdigo binario debe
representar nmeros decimales y algunos otros caracteres especiales. Un cdigo
alfanumrico (algunas veces abreviado alfanumrico) es un cdigo binario de un grupo de
elementos que consta de diez dgitos decimales, las 26 letras del alfabeto y cierto numero
de smbolos especiales como $. El numero total de elementos en un grupo alfanumrico es
mayor de 36. Por lo tanto, debe codificarse con un mnimo de 6 bits (26=64, pero 25=32 no
es suficiente).
Cdigos Numricos
Digito Decimal
0
1
2
3
4
5
6
7
8
9

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

Cdigo reflejado de cuatro bits (Cdigo Gray)


Cdigo Reflejado
0000
0001
0010
0011
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011

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.

*. DONALD A. REAMEN Analisis y Diseo de Circuitos Electrnicos


Editorial Prentice-hall
Primera Edicin Mjico
Ao 1999
*. M. MORRIS MANO Lgica digital y diseo de computadores
Primera Edicin
Mjico
Ao 1982

Editorial Prentice-hall

*. ROBER L. BOYLESTAD, LOUIS NASHELSKY Electronica: Teoria de circuitos Edicion


Prentice-hall Sexta Edicin Mejico
Ao 1999A

19

Excelencia Acadmica

1.

Resolver:

2.

Convertir los siguientes nmeros binarios:


57810

11111111+
11011011
11110111
------------

1111111 X
111
-------------

1000010 11111
------------

numeracin base binaria

125410 numeracin base binaria


5748

numeracin base binaria

479316 numeracin base binaria


3.

Convertir los siguientes nmeros a otra base:


11101110012

numeracin base decimal

1001110012

numeracin base octal

numeracin base decimal


679310 numeracin base hexadecimal
4.

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).

Diferencia la electrnica digital de la analgica.

Aplica los sistemas de numeracin binaria a la electrnica digital.

Realiza operaciones de minimizacin de funciones lgicas.

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.

El amplificador se construye con dispositivos amplificadores (triodos o transistores),


enmarcados en un circuito de polarizacin (ubicacin en el punto de operacin adecuado
para que reciban la energa de la fuente de alimentacin).
Pueden disearse muy diversas etapas amplificadoras (de tensin, de intensidad o de
ambas) y, con ellas, puede construirse un amplificador de muy alta ganancia y
caractersticas ideales, el amplificador operacional, que permite configurar bloques
correspondientes

operaciones

aritmticas

(derivadores,

sumadores,

restadores,

comparadores, integradores, ); tales bloques constituyen los mdulos bsicos para el


control de procesos (automatizacin).
Asimismo, razonando en el espectro de frecuencias, con la correspondiente ayuda de
condensadores y bobinas, las etapas amplificadoras pueden transformarse en filtros,
sintonizadores, demoduladores, moduladores, amplificadores de antena, que son los
mdulos bsicos para la comunicacin por ondas (telecomunicacin). Las matemticas
propias de la electrnica analgica son las que corresponden a la proporcionalidad, las
operaciones lineales (suma, resta, producto por una constante, derivada, integral). Ms
especficamente, el control de procesos se basa conceptualmente en la realimentacin y en
la teora derivada de ella que recibe el nombre de regulacin automtica, mientras que la
22

Excelencia Acadmica

telecomunicacin utiliza el dominio de la frecuencia, apoyndose en la descomposicin en


serie de Fourier (espectro de frecuencias).

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

La finalidad de la Electrnica Digital es procesar la informacin. Para ello utiliza las


operaciones definidas por George Boole en su investigacin sobre las leyes del
pensamiento, publicada en 1854. En una poca de triunfo de las matemticas en la tarea
de modelizar el mundo fsico, George Boole dio tambin forma matemtica a la
combinacin de proposiciones; Boole introdujo, a la vez, un lenguaje formal ( la lgica
proposicional) y una estructura matemtica (el lgebra de Boole) capaz de representar y de
validar tal lenguaje.
Casi un siglo despus, en 1938, al estudiar los complejos circuitos de rels que se utilizaban
en la comunicacin telefnica, Claude E. Shannon demostr que las operaciones booleanas
son aptas para describir los circuitos con conmutadores y, tambin, para expresar clculos
en el sistema de numeracin de base 2. Shannon estableci la posibilidad de utilizar la
misma estructura matemtica ( el lgebra de Boole) como soporte de un sistema de
numeracin y

clculo ( el sistema binario) y proporcion una forma de construir las

operaciones del lgebra booleana mediante la conexin de dispositivos fsicos ( los


conmutadores).
Boole y Shannon fijaron los cimientos conceptuales para el procesamiento digital de la
informacin. Gracias a ellos disponemos de un lenguaje formalizado capaz de expresar la
combinacin de proposiciones, de un sistema de numeracin capaz de soportar clculos
24

Excelencia Acadmica

aritmticos y de una forma de materializar ( es decir, de construir mquinas capaces de


ejecutar) tanto el lenguaje como el sistema de numeracin.
La base matemtica que soporta todo esto corresponde a la estructura de lgebra de Boole
de dos elementos ( el 0 y el 1): lgebra booleana binaria. Las mquinas digitales, aunque
solamente saben trabajar con el 0 y el 1 ( una lgica dual muy limitada), son capaces de
manejar, a ms alto nivel (por programacin), la lgica difusa, las redes neuronales, la
inferencia matemtica, la inteligencia artificial,...
Este tema presenta un resumen general de los conceptos fundamentales del lgebra de
Boole y de sus operaciones, considerando en particular las tres lgebras binarias citadas: la
lgica proposicional, el sistema de numeracin con base 2 y el lgebra de conmutadores.
Adems, se expone la representacin grfica de las operaciones booleanas mediante
puertas lgicas, como esquema para describir ( y forma de construir) los circuitos digitales, y
se introducen las operaciones unitarias que permiten expresar, con slo una de ellas, todo
el lgebra booleana y, por lo mismo, permiten construir cualquier circuito digital con un solo
tipo de puertas.

2.4.

ESTRUCTURA DE LGEBRA DE BOOLE


El lgebra de Boole es una estructura matemtica definida sobre un conjunto de

elementos (a, b, c,...) por tres operaciones con las propiedades siguientes:
la complementacin o negacin, a ,

con propiedad de involucin, a = a

la operacin "o", b + a ,

asociativa y conmutativa

la operacin "y", a.b,

tambin asociativa y conmutativa

siendo estas dos ltimas operaciones distributivas entre s


a . (b + c) = (a . b) + (a . c)
a + (b . c) = (a+b) . (a + c)
y existiendo dos elementos nicos, 0 y 1, tales que 0 = 1
a+0=a

a +1 = 1

a + a = 1

a.0=0

a.1=a

a . a = 0

0 = 1 y

Un ejemplo caracterstico de lgebra booleana lo constituye el conjunto partes de un


conjunto

dado

(conjunto

complementacin,

unin

de
e

todos

sus

interseccin;

subconjuntos)
tales

con

operaciones

las

operaciones

pueden

de

representarse

grficamente mediante los diagramas de Venn.

25

Excelencia Acadmica

En relacin con el cuerpo de los nmeros reales, contrastando sus operaciones aritmticas
de suma y resta con las operaciones "o" e " y " booleanas, el lgebra de Boole presenta las
siguientes diferencias:
* La propiedad distributiva es doble; no slo de . respecto a +, sino tambin de + respecto a
..
* No existen elementos inversos respecto a las operaciones " o" e " y" y por ello no
estn definidas las operaciones inversas (como son la resta y divisin aritmticas).
* Existe, en cambio, el elemento complementario.
* Considrese el diferente papel que desempea el elemento complementario en relacin
con los elementos inversos:
- complementario

a + a = 1

a . a = 0

- inversos

a+ (a) = 0

a . (1/a) a =1].

A partir de los axiomas que definen el lgebra de Boole pueden deducirse directamente, los
siguientes teoremas operativos:
Dualidad : toda expresin booleana sigue siendo vlida si se efectan, a la vez, los
siguientes cambios: a a

+ ( operacin " o") . (operacin "y") 01

Idempotencia:

a+a=a

Absorcin:

a+a.b=a

a+a.b=a+b

a.(a+b) =a

a.( a+b) =a.b

de Morgan: (a+b)= a. b
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)

Como simple ejemplo de demostracin de teoremas, se incluye a continuacin la


correspondiente a los teoremas de idempotencia:
a+a=a.1+ a.1=a.(1+1) =a.1=a
a.a=(a+0).(a+0) =a+0.0 =a+0=a

26

Excelencia Acadmica

[En el primer paso, se hace uso de los axiomas a.1=a, a+0=a; en el segundo, se aplica la
propiedad distributiva; en el tercer paso, se utilizan los axiomas a+1=1, a.0=0 y en el cuarto,
se emplean los mismos axiomas que en el primer paso.]
El teorema de Dualidad se deduce de que todos los axiomas siguen siendo vlidos si se
aplican sobre ellos dichos cambios (los tres a la vez) y, por tanto, tales cambios pueden
generalizarse a cualquier expresin booleana.
[Debe tenerse en cuenta que la Dualidad ha de ser aplicada a ambos miembros de
una expresin booleana y no solamente a uno de ellos:
Sea la funcin

y=a+c.b

No es vlido hacer y=a+c.b = a.(c+b)

sino

y = a.( c + b) . ]

El lgebra booleana ms simple y de mayor inters prctico es la definida sobre un conjunto


de slo dos elementos, que necesariamente han de ser el 0 y el 1:
negacin
0=1
1=0

operacin "o"

a+b

operacin "y"

a.b

0+0

0.0

0+1

0.1

1+0

1.0

1+1

1.1

En la operacin "o" predomina el valor 1, en el sentido de que si un operando tiene dicho


valor 1, el resultado tambin es 1; mientras que para la operacin "y" el valor que prevalece
es el 0.
Una operacin compuesta muy frecuente en el lgebra binaria es la denominada "oexclusiva"

b a . , que corresponde a la funcin ser diferente o desigualdad; la

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

ab = a.b+a.b = (a.b+a.b) = ((a.b). (a. b)) = ((a+b).( a+b)) =


(a.a+a.b+b.a+b.b) = (a.b+b.a) = (a.b).(b.a) = (a+b).(b+a) =
(a+b).(a+b)
2.5.

SISTEMA BINARIO DE NUMERACIN


El sistema de numeracin en base 2 emplea solamente los dgitos 0 y 1, siendo 2n el

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

La Electrnica Digital procesa la informacin utilizando las operaciones definidas por


George Boole introduciendo un lenguaje formal ( la lgica proposicional) y una estructura
matemtica (el lgebra de Boole) capaz de representar y de validar tal lenguaje,
demostrando que las operaciones booleanas son aptas para describir los circuitos con
28

Excelencia Acadmica

conmutadores y expresar clculos en el sistema de numeracin de base 2 y utilizar la misma


estructura matemtica como soporte de un sistema de numeracin y clculo.

*. DONALD A. REAMEN
Anlisis y Diseo de Circuitos Electrnicos
Editorial
Prentice-hall
Primera Edicin Mjico
Ao 1999
*. M. MORRIS MANO
Editorial Prentice-hall

Lgica digital y diseo de computadores


Primera Edicin Mjico
Ao 1982

*. ROBER L. BOYLESTAD, LOUIS NASHELSKY Electrnica: Teora de circuitos Editorial


Prentice-hall Sexta Edicin Mejico
Ao 1999

1.

Que entiende por Electrnica Analgica.

2.

Como podra definir a la electrnica digital u para que sirve.

3.

Elabore las propiedades del lgebra de booleana.

4.

Minimizar la siguiente funcin:


F=(a.a+a.b+b.a+b.b)

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.

Reconoce las operaciones a realizar con variables de smbolos lgicos.

Explica la funcin que cumplen las compuertas lgicas.

Elabora pequeos circuitos.


OPERACIONES APLICANDO 0 y 1
Cualquier operacin de un sistema de numeracin puede realizarse mediante un

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

Las operaciones bsicas del lgebra de Boole:


Compuerta AND

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

es una expresin de operaciones booleanas enlazando variables que solamente pueden


adquirir los valores 0 y 1. Una funcin booleana es una aplicacin que a cada conjunto de
valores booleanos de sus variables le asigna un y slo un valor booleano.
La primera de las dos definiciones anteriores es de tipo descriptivo; describe la forma
algebraica de una funcin booleana; mientras que la segunda es de tipo conceptual;
identifica la funcin como correspondencia entre el conjunto de valores de las variables y el
valor booleano de la variable dependiente.
En una funcin f designaremos con el nombre de variables de entrada xi al conjunto de sus
variables propias y denominaremos variable de salida y a la variable dependiente o
resultado de la propia funcin y = f(xi).
De acuerdo con las definiciones anteriores, las funciones lgicas pueden representarse en
dos formas diferentes:
- Por su expresin algebraica o frmula booleana, como expresin de las operaciones que
ligan a sus variables;
33

Excelencia Acadmica

- Por su tabla operativa o tabla de verdad, expresando en forma de tabla la correspondencia


entre la variable de salida y cada combinacin posible de valores
de sus variables de entrada.
Tambin puede expresarse una funcin en forma de enunciado o texto que manifiesta las
especificaciones o requisitos que dan lugar a dicha funcin y en forma grfica como circuito
digital o esquema de puertas lgicas que produce los valores de salida de la funcin al
recibir los correspondientes valores en sus entradas.
El proceso de sntesis o construccin digital de una funcin parte del enunciado o
especificaciones de la misma, para configurar la tabla de verdad de la funcin y obtener, a
travs de ella, su expresin algebraica; una vez simplificada, dicha expresin puede ser
directamente trasladada a un esquema de puertas como representacin grfica del circuito
digital que hace efectiva dicha funcin.
Enunciadotabla funcionalexpresin algebraicaesquema de compuertas
Dada una funcin de m variables, cada una de las posibles combinaciones de valores de
dichas m variables recibe el nombre de vector de entrada; el nmero total de vectores de
entrada ser 2m y tal ser el nmero de filas que ha de tener la tabla funcional completa.
Para cada vector de entrada podemos construir un trmino mnimo, formado por el
producto booleano (operacin "y") de las m variables de entrada, estando cada una de ellas
afirmada si su valor en el vector de entrada es 1 y negada cuando vale 0.
Un trmino mnimo da resultado 1 al asignar a sus variables los valores del vector de
entrada que le corresponde y, en cambio, para cualquier otro vector de entrada da resultado
0.
As pues, tal como estn construidos, los trminos mnimos poseen la propiedad de
seleccionar o filtrar a su propio vector de entrada: a cada vector de entrada le
corresponde un trmino mnimo y cada termino mnimo es un Discriminador o Selector del
vector de entrada (a, b, c, d) al que corresponde.
Los vectores de entrada determinan el numero de trminos, si tenemos 4 vectores o
variables, tendremos 16 trminos mnimos posibles, por la relacin 24 = 16.

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.

Demostrar como funcionan las compuertas lgicas aplicando su tabla de verdad:

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.

Aplica el lgebra de bool para minimizar funciones y elabora su circuito.

Utiliza mapas de Karnaugh para minimizar funciones y elaborar u circuito.

4.1.

OPERACIONES CON FUNCIONES


Los circuitos lgicos para sistemas digitales pueden ser combinacionales o

secuenciales. Un circuito combinacional consta de compuertas lgicas cuyas salidas en


cualquier momento estn determinadas en forma directa por la combinacin presente de las
entradas sin tomar en cuenta las entradas previas
Ejemplos:
Simplificar la siguiente funcin y diagramar el circuito:
Y = c.b.a + c.b.a + c.b.a + c.b.a + c.b.a
= c.a(b+b) + c.a(b.b) + c.b. a
= c.a + c.a + c.b. a

Se eliminan por complementarios

= a(c + c) + c.b. a
= a+ c.b. a
Y = a+ c.b

Por la propiedad de Absorcin

circuito de la funcin minimizada

37

Excelencia Acadmica

4.2.

COMPUERTA OR EXCLUSIVA

Una puerta "or-exclusiva" (funcin diferente o desigual) se representa con el smbolo de la


figura y equivale a la combinacin de cinco puertas bsicas:

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

La numeracin que le asignaremos a las celdas del mapa de Karnaugh no es la nica, si


investigamos encontraremos otras formas de numeracin de celdas.
4.5.

MAPAS DE KARNAUGH PARA 2 VARIABLES

Para 2 variables el mapa de Karnaugh tendr 4 celdas (22 =4).

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

celdas, por que dichas celdas


pertenecen a un uno logico.

Circuito de la funcin Y = a + b

4.6.

MAPAS DE KARNAUGH PARA 3 VARIABLES

Para 3 variables el mapa de Karnaugh tendr 8 celdas (23 =8).


OBS: Analizando el mapa de Karnaugh nos daremos cuenta que las celdas no tienen una

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

Al aplicar Karnaugh a la funcion, notaremos


que formamos grupos de 4 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,....
celdas.
4.6.

Circuito de la funcin simplificada Y = a + c


MAPAS DE KARNAUGH PARA 4 VARIABLES

Para 4 variables el mapa de Karnaugh tendr 16 celdas (24 =16).

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

MAPAS DE KARNAUGH PARA 5 y 6 VARIABLES


de

Karnaugh

para

variables donde contamos

5
32

celdas (2 = 32).

43

Excelencia Acadmica

Mapa

de

Karnaugh

para

variables donde contamos 64


celdas (26 = 64).

Los circuitos combinacionales se construyen ms a menudo con compuertas AND, OR,


NAND o NOR. Las compuertas NAND y NOR son ms comunes desde el punto de vista del
hardware, ya que estn disponibles en la forma de circuitos integrados y los circuitos que
realizamos pueden ser elaborados fsicamente con diferentes dispositivos que encontramos
en el mercado de la electrnica.

*. 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.

Minimizar las siguientes funciones aplicando el lgebra de bool y elaborar el


circuito utilizando compuertas logicas:
F= 0,2,4,5,6
F=1,3,5,4,7
F= 0,2,4,6,10,12,14,15
F=1,3,5,4,7,9,11,13,15
2.

Minimizar las siguientes funciones aplicando el mapas de Karnaugh y elaborar el


circuito utilizando compuertas logicas:
F= 0,2,4,5,6
F=1,3,5,4,7
F= 0,2,4,6,10,12,14,15
F=1,3,5,4,7,9,11,13,15
3

Hacer la ecuacin del siguiente circuito.

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.

Explica el funcionamiento y la aplicacin de un codificador y decodificador.

Explica el funcionamiento y la aplicacin de un multiptlexor.


DECODIFICADOR

Sean tres variables de entrada; podemos construir todos sus trminos mnimos:
bastarn para ello 8 puertas AND de 3 entradas y 3 inversores.
Este bloque digital, cuyas salidas corresponden a los diversos trminos mnimos
de sus entradas, recibe el nombre de decodificador; tal denominacin se debe a que
decodifica un nmero binario de m dgitos sobre 2m lneas, de forma que para cada nmero
o vector de entrada activa una salida diferente.
Un decodificador es un bloque digital con m lneas de entrada y 2m lneas de salida que
corresponden a los 2m posibles vectores de entrada (nmeros binarios de m bits): la lnea de
salida correspondiente al nmero binario establecido en las entradas se encontrar a 1 y el
resto de lneas de salida estar a 0.

47

Excelencia Acadmica

La figura representa un decodificador de 3 lneas de


entrada: en cada momento el nmero binario
presente en ellas determina cul de las 8 lneas de
salida se encuentra activada (valor booleano 1).
En el decodificador estn presentes todos los trminos mnimos de sus entradas; para
construir una funcin booleana de tales entradas, segn su forma cannica, bastar reunir
sobre una puerta "OR" los trminos mnimos que corresponden a valor 1 en la tabla de la
funcin, es decir, llevar a una puerta "OR" las salidas del decodificador que corresponden a
vectores de entrada que activan la funcin (dan resultado 1).
Ejemplo: Para construir de esta forma la funcin "ser nmero primo" de dgitos utilizaremos
un decodificador de 4 lneas de control seguido de una puerta "OR" que recibe aquellas
salidas con valor 1 que se ve en la tabla de verdad de la funcin (corresponden a los
nmeros primos 1, 2, 3, 5, 7, 11 y 13).

48

Excelencia Acadmica

Ejemplo:
5.2.

CODIFICADOR BCD A 7 SEGMENTOS

Las cifras decimales (del 0 al 9) se expresan en BCD con cuatro dgitos binarios (del 0000 al
1001); pero tambin dichas cifras se pueden representar mediante un visualizador de 7
segmentos para lo cual hay que codificarlas en 7 bits, cada uno de los cuales controla
(enciende) uno de los segmentos:

El conversor entre el cdigo BCD y el de 7 segmentos ha de tener 4 entradas y 7 salidas; la


tabla de conversin representar las 7 funciones booleanas de 4 entradas que realizan
dicho cambio de cdigo; a partir de ella, pueden obtenerse directamente las expresiones
algebraicas de dichas funciones que servirn para controlar cada uno de los 7 segmentos.
El conversor entre el cdigo BCD y el de 7 segmentos ha de tener 4 entradas y 7 salidas; la
tabla de conversin representar las 7 funciones booleanas de 4 entradas que realizan
dicho cambio de cdigo; a partir de ella, pueden obtenerse directamente las expresiones
algebraicas de dichas funciones que servirn para controlar cada uno de los 7 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

las siguientes expresiones:


La configuracin del circuito tendr que utilizar:
- 2puertas "nand" de 4 entradas
- 4 puertas "nand" de 3 entradas
- 11 puertas "nand" de 2 entradas
- 5 inversores
En total:

22 puertas booleanas.

Circuito del Conversor BCD .7segmentos (con puertas Nand)

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

corresponde a este multiplexor es


la siguiente:
Y = L0 .b.a + L1 .b.a + L2 .b.a
+ L3 . b.a se diseo con puertas
Nand.
Para construir una funcin booleana utilizando un multiplexor bastar con fijar en sus lneas
de entrada los valores de la tabla de verdad de la misma; de esta forma, las variables de
control seleccionan sobre la propia tabla de la funcin el valor booleano que le corresponde
al vector de entrada.
Esta forma de configurar funciones booleanas mediante multiplexores, cuyas lneas de
entrada reciben los valores de la tabla de verdad de la funcin, se denomina look-up-table
(LUT).
Ejemplo: La funcin "ser nmero primo" de 4 dgitos, para construirla con un multiplexor de
4 lneas de control, conectaremos a 1 las lneas de entrada del multiplexor que presentan tal
valor en la tabla de verdad de la funcin (las correspondientes a los nmeros primos 1, 2, 3,
5, 7, 11 y 13); el resto de las lneas de entrada se conectarn a 0.
Obs:
Decodificadores y multiplexores son selectores de lnea:
- Un decodificador activa una de entre
n lneas de salida.
- Un multiplexor selecciona una de
entre n lneas de entrada y la pone en
comunicacin con su lnea de salida.
Cada uno de ellos proporciona una
forma de configurar una funcin de
sus variables de control:
-La forma cannica a partir de un
decodificador
mnimos m)

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.

BLOQUES ARITMTICOS Y CODIFICACIN NUMRICA

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

Un comparador entre dos nmeros binarios de n dgitos puede construirse conectando en


cadena n celdas: la celda bsica compradora tiene como entradas, adems de los dgitos
correspondientes de los nmeros a comparar ai bi, las que le informan sobre si los
conjuntos de dgitos anteriores (de menor valor significativo) son iguales (i- ) y sobre si es
mayor el que corresponde al nmero A (m- ), y tiene dos salidas que indican igualdad i y "A
mayor que B" m, respectivamente. La tercera funcin de comparacin "A menor que B"
resulta redundante con las otras dos: A menor que B = (i + m) =i. m.
- Para comparar dos nmeros hay que comenzar por la cifra ms significativa y, caso de que
ambos dgitos sean iguales, irse desplazando hacia la derecha efectuando la comparacin
cifra a cifra;

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.

Bloque operacional lgico ("AND") para palabras de 4 bits

55

Excelencia Acadmica

Disponemos, pues, de bloques con capacidad de efectuar las operaciones bsicas de


clculo binario (suma, resta, comparacin,...) y de otros capaces de hacer operaciones
booleanas ("+", ".", ".", "*", ".",...) sobre dos nmeros o palabras binarias de n dgitos o bits.
La longitud de palabra de los bloques operacionales integrados n suele ser de 4, 8 16 bits;
pero este nmero no es limitativo en modo alguno pues, salvo el caso particular de producto,
la longitud de los operandos se puede ampliar indefinidamente sin ms que conectar en
cadena bloques iguales:
En el caso de suma o resta, la interconexin entre ellos se refiere al bit de acarreo.
En la comparacin, cada bloque ha de comunicar al siguiente sus salidas ("=" y ">")
En las operaciones lgicas, no es precisa interconexin alguna (son bit a bit).
Un paso ms en la complejidad y posibilidades funcionales de los bloques operacionales es
la configuracin de un operador genrico, capaz de realizar no una sino toda una amplia
serie de operaciones aritmticas y lgicas sobre dos 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.
ALU
Un bloque digital de este tipo recibe el nombre genrico de unidad aritmtica y lgica ALU.
Recibir como entradas dos operandos de n dgitos y los terminales de salida de las
diversas operaciones sern nicos, apareciendo sobre ellos el resultado de la operacin
seleccionada.
La siguiente figura representa una ALU de tipo sencillo que opera sobre palabras de 8 bits y
tiene capacidad para 16 operaciones (4 entradas de control).
Dos salidas adicionales y sus correspondientes entradas permiten la ampliacin de la ALU
para palabras de ms de 8 dgitos: la entrada y salida de acarreo c para la suma y la resta y
la entrada y salida de resultado nulo n, que se activa cuando todos los dgitos del resultado
son 0.

56

Excelencia Acadmica

La operacin de comparacin (entre ambos nmeros A y B) se realiza mediante una


operacin de resta A-B, quedando el resultado reflejado sobre las salidas n (resultado nulo)
y c (acarreo), en la forma siguiente:
n=1
->
A=B
c=1
->
A<B
n=0 y c=0 -> A>B
La siguiente tabla detalla posibles operaciones a realizar por una ALU: la entrada de
seleccin S3 distingue entre operaciones aritmticas S3 =0 y operaciones lgicas S3 = 1,
mientras que los ocho valores posibles de las otras tres entradas de control S2 S1 S0
permiten seleccionar ocho operaciones de cada uno de ambos tipos:

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

Hacer circuito decodificador para el siguiente arreglo de displey


d c b a

2.-

Por que los multiplexores son muy utilizados para el transporte de datos.

3.-

Disee un comparador de datos.

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.

Comprende el funcionamiento del microprocesador.

Conoce las arquitecturas del computador.

Comprende el funcionamiento de los perifricos,

6.1.

ARQUITECTURA VON NEWMAN.

Es prcticamente la primera arquitectura que aparece desde el inicio de los ordenadores y


se sigue desarrollando actualmente. Claro es que est siendo remplazada por otra que
permiten una mayor velocidad de proceso, la RISC.
El los primeros tiempos de los ordenadores, con sistemas de numeracin decimal, una
electrnica sumamente complicada muy susceptible a fallos y un sistema de programacin
cableado o mediante fichas, Von Newman propuso dos conceptos bsicos que
revolucionaran la incipiente informtica:

59

Excelencia Acadmica

a) La utilizacin del sistema de numeracin binario. Simplificaba enormemente los


problemas que la implementacin electrnica de las operaciones y funciones lgicas
planteaban, a la vez proporcionaba una mayor inmunidad a los fallos (electrnica digital).
b) Almacenamiento de la secuencia de instrucciones de que consta el programa en una
,memoria interna, fcilmente accesible, junto con los datos que referencia. De esta forma
la velocidad de proceso experimenta un considerable incremento; recordemos que
anteriormente una instruccin o un dato estaban codificados en una ficha en el mejor de
los casos.
Tomando como modelo las mquinas que aparecieron incorporando las anteriores
caractersticas, el ordenador se puede considerar compuesto por las siguientes partes:
-

La Unidad Central de Proceso.

La Memoria Interna.

Unidad de Entrada y Salida.

Realicemos a continuacin una descripcin de lo que se entiende por cada una de estas
partes y cmo est relacionadas entre s:
La Unidad Central de Proceso (CPU) viene a ser el cerebro del ordenador y tiene por

misin efectuar las operaciones aritmtico-lgicas y controlar las transferencias de


informacin a realizar.
La Memoria Interna: contiene el conjunto de instrucciones que ejecuta la CPU en el

transcurso de un programa. Es tambin donde se almacenan temporalmente las


variables del mismo, todos los datos que se precisan y todos los resultados que
devuelve.
Unidades de Entrada y Salida (I/O): son las encargadas de la comunicacin d ela

mquina con el exterior, proporcionando al operador una forma de introducir al


ordenador tanto los programas como los datos y obtener los resultados.
Como es de suponer, estas tres partes principales de que consta el ordenador deben estar
ntimamente conectadas; aparece en este momento el concepto de bus: el bus es un
conjunto de lneas que enlazan los distintos componentes del ordenador, por ellas se realiza
la transferencia de datos entre todos sus elementos.
Se distinguen dos tipos de bus:

60

Excelencia Acadmica

De Datos: De tipo bidireccional, fluyen los datos entre las distintas partes del ordenador.

De direcciones: Como vimos, la memoria est dividida en pequeas unidades de


almacenamiento que contienen las instrucciones del programa y los datos. El bus de
direcciones consta de un conjunto de lneas que permite seleccionar de qu posicin de
la memoria se quiere leer su contenido. Tambin direcciona los puertos de E/S.

Adicionalmente contamos con lneas de control que seleccionan desde dnde y hacia dnde
va dirigida la informacin, tambin las que marcan la secuencia de los pasos a seguir para
dicha transferencia.
La forma de operar del ordenador en su conjunto es direccionar una posicin de la memoria
en busca de una instruccin mediante el bus de direcciones, llevar la instruccin a la unidad
central de proceso CPU- por medio de bus de datos, marcando la secuencia de la
transferencia el bus de control. En la CPU la instruccin se decodifica, interpretando qu
operandos necesita; si son de memoria, es necesario llevarles a la CPU; una vez que la
operacin es realizada, si es preciso se devuelve el resultado a la memoria.
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:
-

Unidad aritmtico-lgico: Es donde se efectan las operaciones aritmticas (suma, resta


y a veces producto y divisin) y lgicas (and, or, not, etc).

Decodificador de instrucciones : All se interpretan las instrucciones que van llegando y


que componen el programa.

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.

Bloque de Control de buses internos y externos: supervisa todo el proceso de


transferencias de informacin dentro del microprocesador y fuera de l.

6.3.

EL ENSAMBLADOR

El ensamblador es un lenguaje de programacin que, por la traduccin directa de los


mnemnicos a instrucciones mquina, permite realizar aplicaciones rpidas, solucionando
situaciones en los que los tiempos de ejecucin constituye el factor principal para que le
61

Excelencia Acadmica

proceso discurra con la suficiente fluidez. Esta situacin, que indudablemente se influye
sobre la eleccin del lenguaje de programacin a utilizar en el desarrollo de una
determinada rutina, y dada la aparicin de nuevos compiladores de lenguaje de alto nivel
que optimizan el cdigo generado a niveles muy prximos a los que un buen programador
es capaz de realizar en ensamblador, no es la nica razn para su utilizacin.
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.

LA EVOLUCIN DEL MS-DOS.

1981. presentacin del MS-DOS 1.0 original.

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.

1985. MS-DOS 3.1: Soporte para redes locales.

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.

19991. MS-DOS 5.0: Soporte para memoria superior.

6.6

MICROPROCESADORES 8086 88, 286, 386, 486 Y GENERACIN-PENTIUM.

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

microprocesadores no suelen emplear la entrada/salida por mapa de memoria, como


veremos.
Entre estas instrucciones, las ms rpidas se ejecutan en dos ciclos tericos de reloj y unos
9 reales (se trata del movimiento de datos entre registros internos) y las ms lentas en 206
(divisin entera con signo del acumulador por una palabra extrada de la memoria). Las
frecuencias internas de reloj tpicas son 4.77 MHz en la versin 8086; 8MHz en la versin
8086-2 y 10 MHz en la 8086-1. Recurdese que un MHz son un milln de ciclos de reloj, por
lo que un Pc estndar a 4.77 MHz puede ejecutar de 20.000 a unos 0.5 millones de
instrucciones por segundo, segn la complejidad de las mismas (un 486 a 50 MHz, incluso
sin memoria cach externa es capaz de ejecutar entre 1.8 y30 millones de estas
instrucciones por segundo).
El microprocesador Intel 80286 se caracteriza por poseer dos modos de funcionamiento
completamente diferenciados: el modo real en el que se encuentra nada ms ser conectado
a la corriente y el modo protegido en el que adquiere capacidad de proceso multitarea y
almacenamiento en memoria virtual. El proceso multitarea consiste en realizar varios
procesos de manera aparentemente simultnea, con la ayuda del sistema operativo para
conmutar automticamente de uno a otro optimizando el uso de la CPU, ya que mientras un
proceso est esperando a que un perifrico complete una operacin, se puede atender otro
proceso diferente. La memoria virtual permite al ordenador usar ms memoria de la que
realmente tiene, ms memoria de la que realmente existe; cuando acceden a una parte de la
memoria lgica que no existe fsicamente, se produce una interrupcin y el sistema
operativo se encarga de acceder al disco y traerla.
Cuando la CPU est en modo protegido, los programas de usuario tienen un acceso limitado
al juego de instrucciones; slo el proceso supervisor -normalmente el sistema operativoest capacitado par realizar ciertas tareas. Esto es as para evitar que los programas de
usuario puedan campar a sus anchas y entrar en conflictos unos con otros, en materia de
recursos como memoria perifricos, Adems, de esta manera, aunque un error software
provoque el cuelgue de un proceso, los dems pueden seguir funcionando normalmente, y
el sistema operativo podra abortar el proceso colgado. Por desgracia, con el DOS el 286 no
est en modo protegido y el cuelgue de un solo proceso bien el programa principal o una
rutina operada por interrupciones- significa la cada inmediata de todo el sistema.

65

Excelencia Acadmica

El 8086 no posee ningn mecanismo para apoyar la multitarea ni la memoria virtual desde el
procesador, por lo que es difcil disear un sistema multitarea para el mismo casi imposible
conseguir que sea realmente operativo. Obviamente, el 286 en modo protegido pierde
absolutamente toda la compatibilidad con los procesadores anteriores. Las caractersticas
generales del 286 son: tiene un bus de datos de 16 bits, un bus de direcciones de 24 bits (16
Mb); posee 25 instrucciones ms que el 8086 y admite 8 modos de direccionamiento. En
modo virtual permite direccionar hasta 1 Gigadyte. Las frecuencias de trabajo tpicas son de
12 y 16 MHz, aunque existen versiones de 20 y 25 MHz. Aqu la construccin ms lenta es
la misma que el caso de 8086, solo que emplea 29 ciclos de reloj en lugar de 206. Un 286
de categora media (16MHz) podra ejecutar ms de medio milln de instrucciones de estas
en un segundo, casi 15 veces ms que un 8086 medio a 8 MHz. Sin embargo, transfiriendo
datos en el registro la diferencia de un procesador a otro se reduce notablemente, aunque el
286 es ms rpido y no slo gracias a los MHz adicionales.
Por su parte, el 386 dispone de una arquitectura de registros de 32 bits, con un bus de
direcciones tambin de 32 bits (direcciona hasta 4 Gigabytes = 4096 Mb) y ms modos
posibles de funcionamiento: el modo real (compatible 8086), el modo protegido
(relativamente compatible con el del 286), un modo protegido propio que permite romper la
barrera de los tradicionales segmentos y el modo virtual 86, en el que puede emular el
funcionamiento simultneo de varios 8086. Una vez ms, todos los modos son
incompatibles entre s y requieren de un sistema operativo especfico. Normalmente, los 386
suelen operar en modo real (debido al DOS) por lo que no se aprovechan las posibilidades
multitarea ni de gestin de memoria. Por otra parte, aunque que puedan emplear los
registros de 32 bits en modo real, ello no suele hacerse para mantener la compatibilidad
con procesadores anteriores- con lo que de entrada se est tirando a la basura un 50% de la
capacidad de proceso del chip, aunque por fortuna estos procesadores suelen trabajar a
frecuencias de 16/20 MHz (obsoletas) y normalmente de 33 y hasta 40 MHz.
El 486 se diferencia del 386 en la integracin en un solo chip del coprocesador 387.
Tambin se ha mejorado la velocidad de operacin: la versin de 25 Mhz dobla en trminos
reales a un 386 a 25 MHz equipado con el mismo tamao de memoria cach. La versin
486sx no se diferencia en el tamao del bus, tambin de 32 bits, sino en la ausencia del 387
(que puede ser aadido externamente). Una tendencia iniciada por el 486 fue la de duplicar
la velocidad del reloj interno (pongamos por caso de 33 MHz) aunque en las
comunicaciones con los buses exteriores se respeten los 33 MHz. Ello agiliza la ejecucin
de las instrucciones ms largas: bajo DOS, el rendimiento general del sistema se puede
66

Excelencia Acadmica

considerar prcticamente el doble. Son los chips DX2 (tambin hay una variante a 50 MHz:
25 x 2). La culminacin de esta tecnologa viene de la mano de los DX4 a 75/100 MHz
(25/33 x 3).
El Pentium, se diferencia respecto al 486 en el bus de datos (ahora de 64 bits, lo que agiliza
los accesos a memoria) y en un elevadsimo nivel de optimizacin y segmentacin que le
permite, empleando compiladores optimizados, simultanear en muchos casos la ejecucin
de dos instrucciones consecutivas. Posee dos cachs internas, tiene capacidad para
predecir el destino de los saltos y la unidad de coma flotante experimenta elevadas mejoras.
Sin embargo, bajo DOS, un Pentium bsico slo es unas 2 veces ms rpido que un 486 a
la misma frecuencia de reloj. Comenz en 60/90 MHz hasta los 166/200/233 MHz de las
ltimas versiones (Pentium Pro y MMX), que junto a diversos clones de otros fabricantes,
mejoran an ms el rendimiento. Todos los equipos Pentium emplean las tcnicas DX, ya
que las placas base tpicas corren a 60 MHz. Un equipo Pentium MMX a 200 MHz es cerca
de 2000 veces ms rpido en aritmtica entera que el IBM PC original de inicios de la
dcada de los 80; en coma flotante la diferencia aumenta incluso algunos rdenes ms de
magnitud. Aunque no hay que olvidar la revolucin del resto de los componentes: 100 veces
ms memoria (central y de vdeo), 1000 veces ms grande el disco duro.
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

El Microprocesador dispone de una arquitectura de registros con un bus de direcciones con


un funcionamiento en modo real y modo protegido todos los microprocesadores 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.

*. GRANADOS LY ALFREDO Microprocesadores y Lenguaje Assembler INICTEL PERU


Ao 2001.
*. BARRY B. BREY Los microprocesadores Intel Edit Prentice may Hispanoamericana S.
A.
Tercera Edicin
Mjico
Ao 1996
*. Peter Norton, Richard Wilton Guia del Programador EL IBM PC y PS/2
ANAYA Multimedia Segunda Edicin
Madrid Ao 1990

68

1.

Explique las diferencias de las arquitecturas del computador.

2.

Como fue el desarrollo del microprocesador desde sus inicios hasta la actualidad.

3.

Cual es la funcin del sistema operativo en el computado.

4.

Que funcin cumple el ensamblador.

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,

Analiza el proceso que realiza el microprocesador.

Explica el funcionamiento de las banderas y de las interrupciones.

Conoce el funcionamiento de los perifricos.

7.1.

REGISTROS DEL 80X86 Y DEL 80286.


Estos procesadores disponen de 14 registros de 16 bits (el 286 alguno m, pero no

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.

Registros de los datos:

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

referirnos a la parte alta o baja respectivamente. Por ejemplo, AX se descompone en AH


(parte alta) y AL (parte baja). Evidentemente, cualquier cambio sobre AH o AL altera AX!:
valga como ejemplo que al incrementar AH se le est aadiendo 256 unidades a AX.
AX = Acumulador: es el registro principal, es utilizado en las instrucciones de multiplicacin
y divisin y en algunas instrucciones aritmticas especializadas, as como en ciertas
operaciones de carcter especfico como entrada, salida y traduccin. Obsrvese que el
8086 es suficientemente potente para realizar las operaciones lgicas, la suma y la resta
sobre cualquier registro de datos, no necesariamente el acumulador.
BX = Base: se usa como registro base para referenciar direcciones de memoria con
direccionamiento indirecto, manteniendo la direccin de la base o comienzo de tablas o
matrices. De esta manera, no es preciso indicar una posicin de memoria fija, sino la
nmero BX (as, haciendo avanzar de unidad en unidad a BX, por ejemplo, se puede ir
accediendo a un gran bloque de memoria en un bucle).
CX = Contador: Se utiliza comnmente como contador en bucles y operaciones repetitivas
de manejo de cadenas. En las instrucciones de desplazamiento y rotacin se utiliza como
contador de 8 bits.
DX = Datos: Usado en conjuncin con AX en las operaciones de multiplicacin y divisin
que involucran o generan datos de 32 bits. En las de entrada y salida se emplea para
especificar la direccin del puerto E/S.
7.3.

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

ES = Registro de segmento extra (extra segment): Segmento de ampliacin para zona de


datos. Es extraordinariamente til actuando en conjuncin con DS: con ambos se puede
definir dos zonas de 64 Kb, tan alejadas como se desee en el espacio de direcciones, entre
las que se pueden intercambiar datos.
Registros punteros de pila:
SP = Puntero de pila (stack pointer): Apunta a la cabeza de la pila. Utilizado en las
instrucciones de manejo de pila.
BP = Puntero base (base pointer): Es un puntero de base, que apunta a una zona dentro de
la pila dedicada al almacenamiento de datos (variables locales y parmetros de las
funciones en los programas compilados).
7.4.

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.

Puntero de Instrucciones o contador de programa:

IP = Puntero de instruccin (Instruccin pointer): Marca el desplazamiento de la


instruccin en curso dentro del segmento de cdigo. Es automticamente modificado con la
lectura de una instruccin.
Registro de estado o de indicadores (flags).
Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones
durante la ejecucin d eun programa. Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin,
que reflejan los resultados de operaciones del programa; los bits del 8 al 10 son indicadores
de control y el resto no se utilizan. Estos indicadores pueden ser comprobados por las

71

Excelencia Acadmica

instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa
segn el resultado de las operaciones.

CF (Carry Flag): Indicador de acarreo. Su valor ms habitual es lo que nos llevamos en


una suma o resta.

OF (Overflow Flag): Indicador de desbordamiento. Indica que el resultado de una


operacin no cabe en el tamao del operando destino.

ZF (Zero Flag): Indicador de resultado 0 o comparacin igual.

SF (Sign Flag): Indicador de resultado o comparacin negativa.

PF (Parity Flag):Indicador de paridad. Se activa tras algunas operaciones aritmticolgicas para indicar que el nmero de bits a uno resultante es par.

AF (Auxiliary Flag): Para ajuste en operaciones BCD.

DF (Direction Flag): Indicador de direccin. Manipulando bloques de memoria, indica el


sentido de avance (ascendente/descendente).

IF (Interrupt Flag): Indicador de interrupciones: puesto a 1 estn permitidas.

TF (Trap Flag): Indicador de atrape (ejecucin paso a paso).

7.5.

REGISTROS DEL 386 Y PROCESADORES SUPERIORES

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.

ORGANIZACIN DE DIRECCIONES: SEGMENTACIN.

Como ya sabemos, los microprocesadores 8086 y compatibles poseen registros de un


tamao mximo de 16 bits que direccionaran hasta 64K; en cambio, la direccin se
compone de 20 bits con capacidad para 1Mb, hay por tanto que recurrir a algn artificio para
direccionar toda la memoria. Dicho artificio consiste en la segmentacin: se trata de dividir la
72

Excelencia Acadmica

memoria en grupos de 64K. Cada grupo se asocia con un grupo de segmento; el


desplazamiento (offset) dentro de ese segmento lo proporciona otro registro de 16 bits. la
direccin absoluta se calcula multiplicando por 16 el valor del registro de segmento y
sumando el offset, obtenindose una direcccin efectiva de 20 bits. Esto equivale a concebir
el mecanismo de generacin de la direccin absoluta, como si se tratase de que los
registros de segmento tuvieron 4 bits a 0 (imaginarios) a la derecha antes de sumarles el
desplazamiento:
Direccin = segmento * 16 + offset
En la prctica, una direccin se indica con la notacin SEGMENTO: OFFSET; adems, una
misma direccin puede expresarse de ms de una manera: por ejemplo, 3S00h:0300h es
equivalente a 3D30: 0000h. Es importante resaltar que no se puede acceder a ms de 64 Kb
en un segmento de datos. Por ello, en los procesadores 386 y superiores no se deben
emplear registro de 32 bit para generar direcciones (bajo DOS), aunque para los clculos
pueden ser interesantes (no obstante, si sera posible configurar estos procesadores para
poder direccionar ms memoria bajo DOS con los registros de 32 bits, aunque no resulta por
lo general prctico).
7.7

MODOS DE DIRECCIONAMIENTO.
Son los distintos modos de acceder a los datos en memoria por parte del procesador.

Antes de ver los modos de direccionamiento, echaremos un vistazo a la sintaxis general de


las instrucciones, ya que pondremos alguna en los ejemplos:
INSTRUCCIN DESTINO, FUENTE
Donde destino indica dnde se deja el resultado de la operacin en la que pueden participar
(segn casos) FUENTE e incluso el propio DESTINO. Hay instrucciones, sin embargo, que
slo tiene un operando, como la siguiente, e incluso ninguno:
INSTRUCCIN DESTINO
Como ejemplos, aunque no hemos visto an las instrucciones utilizaremos un para de ellas:
la de copia o movimiento de datos (MOV) y la de suma (ADD).

73

Excelencia Acadmica

Direccionamiento inmediato: el operando es una constante situada detrs del cdigo de la


instruccin. Sin embargo, como registro destino no se puede indicar uno de segmento
(habr que utilizar uno de datos como paso intermedio).
ADD AX,0FFFFh
El nmero hexadecimal 0fffh es la constante numrica que en el direccionamiento inmediato
se le sumar al registro AX. Al trabajar con ensambladores, se pueden definir smbolos
constantes (ojo, no variables) y es ms intuitivo:
Dato EQU 0fffh

; smbolo constante

MOV AX, dato


Si se referencia a la direccin de memoria de una variable de la siguiente forma, tambin se
trata de un caso de direccionamiento inmediato:
Dato DW 0fffh

; ahora es una variable

MOV AX, OFFSET dato

;AX = direccin de mmoria de dato

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

1234h variable del programa

En el primer ejemplo se transfiere a AX el valor contenido en la direccin apuntada por la


etiqueta dato sobre el segmento de datos (DS) que se asume por defecto; en el segundo
ejemplo se indica de forma explcita el segmento tratndose del segmento ES.
La direccin efectiva se calcula de la forma ya vista con anterioridad: Registro de Segmento
* 16 + desplazamiento_de_dato (este desplazamiento depende de la posicin al ensamblar
el programa).
Direccionamiento indirecto: el operando se encuentra en una direccin sealada por un
registro de segmento* 16 mas un registro base (BX/BP) o ndice (SI/DI). (Nota: BP acta por
defecto con SS).
MOV AX,[BP]

;AX = [SS* 16 + BP]

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 CS:[BX + SI + DESP],CX

Mov

7.8

CS:desp[BX][SI],CX

COMBINACIONES DE REGISTROS DE SEGMENTO Y DESPLAZAMIENTO.

Como se ve en los modos de direccionamiento, hay casos en los que se indica


explcitamente el registro de segmento a usar para acceder a los datos. Existen unos
segmentos asociados por defecto a los registros a de desplazamiento (IP, SP, BP, BX, DI,
SI); slo es necesario declarar el segmento cuando no coincide con el asignado por defecto.
En este caso, el ensamblador genera un byte adicional (a modo de prefijo) para indicar cul
es el segmento referenciado. La siguiente tabla relaciona las posibles combinaciones de los
registros de segmento y los de desplazamiento:
CS

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)

(1) Tambin por defecto en el manejo de cadenas


Los 386 y superiores admiten otros modos de direccionamiento ms sofisticados, que se
vern en el proximo captulo, despus de conocer todas las instrucciones del 8086. Por
ahora,con todos estos modos se puede considerar que hay ms que suficiente. De hecho,
algunos se utilizan en muy contadas ocaciones.
7.8

LA PILA.

La pila es un bloque de memoria de estrucctura LIFO (Last Input First Ouput: ltimo en
entrar y primero en salir) que se direcciona mediante desplazamientos desde el registro SS
76

Excelencia Acadmica

(segmento de pila). Las posiciones individuales dentro de la pila se calculan sumando el


contenido de segmento de pila SS un desplazamiento contenido en el registro puntero de
pila SP. Todos los datos que se almacenan en la pila son de longitud palabra, y cada vez
que se introduce algo en ella por medio de las instrucciones de manejo depila (PUSH y
POP), el puntero se decrementa en dos; es decir, la pila avanza hacia direcciones
decrecientes. El registro BP suele utilizarse normalmente para apuntar a una cierta posicin
de la pila y acceder indexadamente a sus elementos generalmente en el caso de variablessin necesidad de desapilarlos para consultarlos.
La pila es utilizada frecuentemente al principio de una subrutina para preservar los registros
que no se desean modificar; al final de la subrutina basta con recuperarlos en orden inverso
al que fueron depositados. En estas operaciones conviene tener cuidado, ya que la pila en
los 8086 es comn al procesador y al usuario, por lo que se almacenan en ella tambin las
direcciones de retorna de las subrutinas. Esta ltima es, de hecho, la ms importante de sus
funciones. La estructura de pila permite que unas subrutinas llamen a otras que a su vez
pueden llamar a otras y as sucesivamente: en la pila se almacenan las direcciones de
retorno, que sern las de la siguiente instruccin que provoc la llamada a la subrutina. As,
al retornar de la subrutina se extrae de la pila la direccin a donde volver.

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.

Microprocesadores y Lenguaje Assembler

INICTEL

77

Excelencia Acadmica

*. BARRY B. BREY Los microprocesadores Intel Edit Prentice may Hispanoamericana S.


A.
Tercera Edicin
Mjico
Ao 1996
*. MIGUEL ANGEL ROSELLO
8088-80x86 / 8087Programacion ENSAMBLADOR en
entorno DOS ANAYA Multimedia
Primera Edicin Mjico Ao 1990

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

RESUMEN DE LAS INSTRUCCIONES Y BANDERINES


Hasta ahora se ha visto las instrucciones que pasadas a su correspondiente cdigo
binario que entiende el microprocesador. Se realiza un gran avance al introducir los
mnemnicos respecto a programar directamente en lenguaje mquina an as resultara
tedioso tener que realizar los clculos de los desplazamientos en los saltos a otras partes
del programa en las transferencias de control.

Interpreta las diferentes instrucciones en lenguaje de bajo nivel.

Desarrolla programas en un lenguaje de bajo nivel.

Se familiariza con los cdigos maquina mas usados.

8.1

RESUMEN DE LAS INSTRUCCIONES

Nota : En el efecto de las instrucciones sobre el registro de estado se utilizar la siguiente


notacin:
-

bit no modificado

desconocido o indefinido

modificado segn el resultado de la operacin

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

MOVS cdst, cfnt


MUL fnt
NEG fst
NOP
NOT dst
OR dst, fnt
OUT port,acum
POP DST
POPF
PUSH dst
PUSHF
RCL dst, cnt
RCR dst, cnt

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

EL LENGUAJE ENSAMBLADOR DEL 80X86


Hasta ahora hemos visto los mnemnicos de las instrucciones que pasadas a su

correspondiente cdigo binario ya puede entender el microprocesador. Si bien se realiza un


gran avance al introducir los mnemnicos respecto a programar directamente en lenguaje
mquina es decir, con nmeros en binario o hexadecimal- an resultara tedioso tener que
realizar los clculos de los desplazamientos en los saltos a otras partes del programa en las
transferencias de control, reservar espacio de memoria dentro de un programa para
almacenar datos, etc... Para facilitar estas operaciones se utilizan las directivas que indican
al ensamblador qu debe hacer con las instrucciones y los datos.
8.3.

SINTAXIS DE UNA LNEA EN ENSAMBLADOR.

Un programa fuente en ensamblador contiene dos tipos de sentencias: las instrucciones y


las directivas. Las instrucciones se aplican en tiempo de ejecucin, pero las directivas slo
son utilizadas durante el ensamblaje. El formato de una sentencia de instruccin es el
siguiente:
[etiqueta] nombre_instruccin [operandos] [comentario]
81

Excelencia Acadmica

Los corchetes, como es normal al explicar instrucciones en informtica, indican que loo
especificado entre ellos es opcional, dependiendo de la situacin que se trate.
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:
-

Si se utiliza el punto . ste debe colocarse como primer carcter de la etiqueta.

El primer carcter no puede ser un dgito.

No se pueden utilizar los nombres de instrucciones o registros como nombres de etiquetas.


Las etiquetas son de tipo NEAR cuando el campo de etiqueta finaliza con dos puntos (:);
esto es, se considera cercana: quiere esto decir que cuando realizamos una llamada sobre
dicha etiqueta el ensamblador considera que est dentro del mismo segmento de cdigo
(llamadas intrasegmento) y el procesador slo carga el puntero de instrucciones IP. Tngase
en cuenta que hablamos de instrucciones; las etiquetas empleadas antes de las directivas
como las directivas de definicin de datos por ejemplo, no llevan los dos puntos y sin
embargo no son cercanas.
Las etiquetas son de tipo FAR si el campo de etiqueta no termina con los dos puntos: en
estas etiquetas la instruccin a la que apunta no se encuentra en el mismo segmento de
cdigo sino en otro. Cuando es referenciada en una transferencia de control se carga el
puntero de instrucciones IP y el segmento de cdigo CS (llamadas intersegmento).
Campo de nombre. Contiene en mnemnico de las instrucciones, o bien una directiva.
Campo de operandos. Indica cuales son los datos implicados en la operacin. Puede haber
0 , 1 2; en el caso de que sean dos al 1 Se le llama destino y al 2 -separado por una
coma- fuente.
mov ax, es: [di]

--->

ax

destino

es: [di] origen

82

Excelencia Acadmica

Campo de comentarios. Cuando en una lnea hay un punto y coma (;) todo lo que sigue en
la lnea es un comentario que realiza aclaraciones sobre lo que se est haciendo en ese
programa, resulta de gran utilidad de cara a realizar futuras modificaciones al mismo.
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

Tambin se admiten los operadores MOD (resto de la divisin) y SHL/SHR (desplazar a la


izquierda /derecha cierto nmero de bits). obviamente, el ensamblador no codifica las
instrucciones de desplazamiento (al aplicarse sobre datos constantes el resultado se calcula
en tiempo de ensamblaje):
dato

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

: dato vale 100

MOV

AL,dato GE 10

: AL = 0FFh (cierto)

MOV

AH,dato EQ 99

: AH = 0 (falso)

8.6.

OPERADORES DE RETORNO DE VALORES.

Operador SEG: devuelve el valor del segmento de la variable o etiqueta, slo se


puede emplear en programas de tipo EXE:
MOV AX,SEG tabla_datos

Operador OFFSET: devuelve el desplazamiento de la variable o etiqueta en su


segmento:
MOV AX,OFFSET variable

Si se desea obtener el offset de una variable respecto al grupo (directiva GROUP) de


segmentos en que est definida y no respecto al segmento concreto en que est definida:
MOV AX,OFFSET nombre_grupo:variable
Tambin es vlido:
MOV AX,OFFSET DS:variable
Operador .TYPE: devuelve el modo de la expresin indicada en un byte. El bit 0 indica modo
relativo al cdigo y el 1 modorelativo a datos , si ambos bits estn inactivos significa
modo absoluto. El bit 5 indica si la expesin es local (0 si est definida externamente o
indefinida); el bit 7 indica si la expresin contiene una referencia externa. El TASM utiliza
tambin el bit 3 para indicar algo que desconozco. Este operador es til sobretodo en las
macros para determinar el tipo de los parmetros:
84

Excelencia Acadmica

info

.TYPE variable

Operador TYPE: devuelve el tamao (bytes) de la variable indicada. No vlido en variables


DUP:
kilos

DW

76

MOV AX,TYPE kilos

; AX = 2

Tratndose de etiquetas en lugar de variables- indica si es lejana o FAR (0FFFEh) o


cercana o NEAR (OFFFFh).
Operadores SIZE y LENGHT: devuelven el tamao (en bytes) o el n de elementos,
respectivamente, de la variable indicada (definida obligatoriamente con DUP):
matriz DW 100 DUP (12345)
MOV

AX,SIZE matriz

; AX = 200

MOV

BX,LENGTH matriz

; BX = 100

Operqadores MASK y WITH: informan de los campos de un registro de bits (vase


RECORD).
8.7.

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

Para colocar en AL el primer byte de la misma, la instruccin MOV AL,tabla es incorrecta, ya


que tabla (una cadena 10 palabras) no cabe en el registro AL. Lo que desea el programador
debe indicrselo en este caso explcitamente al ensamblador de la siguiente manera:
MOV AL,BYTE PTR tabla
Trabajando con varios segmentos, PTR puede redefinir una etiqueta NEAR de uno de ellos
para convertirla en FAR desde el otro, con objeto de poder llamarla.
85

Excelencia Acadmica

Operadores CS:, DS:, ES:, y SS: el ensamblador genera un prefijo de un byte que indica al
microprocesador el segmento que debe emplear para acceder a los datos en memoria. Por
defecto, se supone DS para los registros BX, DI o SI (o sin registros de base o ndice) y SS
para SP y BP. Si al acceder a un dato ste no se encuentra en el segmento por defecto, el
ensamblador aadir el byte adicional de manera automtica. Sin embargo, el programador
puede forzar tambin esta circunstancia:
MOV AL,ES:variable
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

En el ejemplo, longitud tomar el valor 9.


Operadores HIGH y LOW: devuelven la parte alta o baja, respectivamente (8 bits) de la
expresin:
Dato

8.8

EQU

1025

MOV AL,LOW dato

; AL = 1

MOV AH,HIGH dato

; AH = 4

PRINCIPALES DIRECTIVAS.

La sintaxis de una sentencia directiva es muy similar a la de una sentencia de instruccin:


[nombre] nombre_directiva [operandos] [comentario]
Slo es obligatorio el campo nombre_directiva; los campos han de estar separados por al
menos un espacio en blanco. La sintaxis de nombre es anloga a la de la etiqueta de
las lneas de instrucciones, aunque nunca se pone el sufijo :. El campo de comentario
cumple tambin las mismas normas.
8.9

DIRECTIVAS DE DEFINICIN DE DATOS.

DB (definir byte), DW (definir palabra), DD (definir doble palabra), DQ (definir cudruple


palabra), DT (definir 10 bytes): sirven para declarar las variables, asignndolas un valor
inicial:
87

Excelencia Acadmica

anno

DW

1991

mes

DB

12

numerazo

DD

12345678h

texto

DB

Hola,13,10

Se pueden definir nmeros reales de simple precisin (4 bytes) con DD, de doble precisin
(8 bytes) con DQ y reales temporales (10 bytes) con DT; todos ellos con el formato
empleado por el procesador. Para que el ensamblador interprete el nmero como real ha de
llevar el punto decimal:
temperatura DD

29.72

espanoles91 DQ

38.9E6

Con el operando DUP pueden definirse estructuras repetitivas, Por ejemplo, para asignar
100 bytes a cero y 25 palabras de contenido indefinido (no importa lo que el ensamblador
asigne):
ceros

DB 100 DUP (0)

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

50 DUP (1, 2, 3, 2 DUP (7))

DIRECTIVAS DE DEFINICIN DE SMBOLOS.

EQU (EQUivalence): Asigna el valor de una expresin a un nombre simblico fijo:


olimpiadas EQU

2000

Donde olimpiadas ya no podr cambiar de valor en todo el programa. Se trata de un


operador muy flexible. Es vlido hacer:

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

.RADIX n: cambia la base de numeracin por defecto. Bastante desaconsejable dada la


notacin elegida para indicar las bases por parte de IBM/Microsoft (si se cambia la base por
defecto 16, los nmeros no pueden acabar en d ya que se confundiran con el sufijo de
decimal!: lo ideal sera emplear un prefijo y no un sufijo, que a menudo obliga adems a
iniciar los nmeros por 0 para distinguirlos de las etiquetas).
8.12

DIRECTIVAS DE DEFINICIN DE SEGMENTOS Y PROCEDIMIENTOS.

SEGMENT-ENDS: SEGMENT indica el comienzo de un segmento (cdigo, datos, pila, etc.)


y ENDS su final. El programa ms simple, de tipo COM, necesita la declaracin de un
segmento (comn para datos, cdigo y pila). Junto a SEGMENT puede aparecer,
opcionalmente, el tipo de alineamiento, la combinacin, el uso y la clase:
nombre SEGMENT [alineamiento] [combinacin] [uso] [clase]
.
.
.
nombre ENDS
Se puede definir unos segmentos dentro de otros (el ensamblador los ubicar unos tras
otros).
El alineamiento puede ser BYTE (ninguno) , WORD (el segmento comienza en posicin
par), DWORD (comienza en posicin mltiplo de 4), PARA (comienza en una direccin
mltiplo de 16, opcin por defecto) y PAGE (comienza en direccin mltiplo de 256). La
combinacin puede ser:
(No indicada): los segmentos se colocan unos tras otros fsicamente, pero son

lgicamente independientes: cada uno tiene su propia base y sus propios offsets
relativos.

90

Excelencia Acadmica

PUBLIC: usado especialmente cuando se trabaja con segmentos definidos en varios


ficheros que se ensamblan por separado o se compilan con otros lenguajes, por ello
debe declararse un nombre entre comillas simples-clase- para ayudar al linkador. Todos
los segmentos PUBLIC de igual nombre y clase tienen una base comn y son colocados
adyacentemente unos tras otros, siendo el offset relativo al primer segmento cargado.

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

8.12. DIRECTIVAS DE REFERENCIAS EXTERNAS.


PUBLIC: permite hacer visibles al exterior (otros ficheros objeto resultantes de otros listados
en ensamblador u otro lenguaje) los smbolos variables y procedimientos- indicados.
Necesario para programacin modular e interfaces con lenguajes de alto nivel. Por ejemplo:
PUBLIC proc1, var_x
proc1

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

DIRECTIVAS DE DEFINICIN DE BLOQUES.

NAME nombre_modulo_objeto: indica el nombre del mdulo objeto. Si no incluye NAME, se


tomar la directiva TITLE o, en su defecto, del nombre del propio fichero fuente.
GROUP segmento1, segmento2,... permite agrupar dos o ms segmentos lgicos en uno
slo de no ms de 64 Kb totales (ojo: el ensamblador no comprueba este extremo, aunque
si el enlazador). Ejemplo:
superseg

GROUP datos, cdigo, pila

cdigo

SEGMENT
...

cdigo

ENDS

datos

SEGMENT

dato

DW 1234

datos

ends

pila

SEGMENT STACK STACK


DB 128 DUP (?)

pila

ENDS

Cuando se accede a un dato definido en algn segmento de un grupo y se emplea el


operador OFFSET es preciso indicar el nombre del grupo como prefijo, de lo contrario el
ensamblador no generar el desplazamiento correcto:
MOV AX,dato

; incorrecto!

MOV AX,supersegmento:dato ; correcto


La ventaja de agrupar segmentos es poder crear programas COM y SYS que contengan
varios segmentos. En todo caso, tngase en cuenta an en ese caso que no pueden
emplearse todas las caractersticas de la programacin con segmentos (por ejemplo, no se
puede utilizar la directivaSEG ni debe existir segmento de pila).

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

La anterior definicin de estructura no lleva implcita la reserva de memoria necesaria, la


cual ha de hacerse expresamente utilizando los ngulos < y >:
felipe

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],...

Donde nombre permitir referenciar la estructura en el futuro, nombre_de_campo identifica


los distintos campos, a los que se asigna un tamao (en bits) y opcionalmente un valor por
defecto.
registro

RECORD a:2=3, b:4=5, c:1

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
?

La reserva de memoria se realiza, por ejemplo, de la siguiente manera:


reg1

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

; AL = 5 (desplazamiento del bit


;

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

(expresin distinta de cero)

IFE

expresin

(expresin igual a cero)

IF1

(pasada 1 del ensamblador)

IF2

(pasada 2 del ensamblador)

IFDEF

smbolo

(smbolo definido o declarado como externo)

IFNDEF

smbolo

(smbolo ni definido ni declarado como externo)

IFB

<argumento> (argumento en blanco en macros incluir < y >-)

IFNB <argumento> (lo contrario, tambin es obligado poner < y >)

8.13

IFIDN <arg1>, <arg2>

(arg1 idntico a arg2, requiere < y >)

IFDIF <arg1>, <arg2>

(arg1 distinto de arg2, requiere < y >)

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

salta de pgina e incrementa su nmero.<<PAGE +>> indica captulo nuevo ( y se


incrementa el nmero).
.TITLE ttulo: indica el ttulo que aparece en la primera lnea de cada pgina (mximo 60
caracteres).
.SUBTTL subttulo: dem con el subttulo (mx. 60 caracteres).
.LALL: Listar las macros y sus expansiones.
.SALL: No listar las macros ni sus expansiones.
.XALL: Listar slo las macros que generan cdigo objeto.
.XCREF: Suprimir listado de referencias cruzadas (listado alfabtico de smbolos junto al n
de lnea en que son definidos y referenciados, de cara a facilitar la depuracin).
.CREF: Restaurar listado de referencias cruzadas.
.XLIST: Suprimir el listado ensamblador desde ese punto.
.LIST: Restaurar de nuevo la salida de listado ensamblador.
COMMENT delimitador comentario delimitador: Define un comentario que puede incluso
ocupar varias lneas, el delimitador (primer carcter no blanco ni tabulador que sigue al
COMMENT) indica el inicio e indicar ms tarde el final del comentario. No olvidar cerrar el
comentario!.
%OUT mensaje: escribe en la consola el mensaje indicado durante la fase de ensamblaje y
al llegar a ese punto del listado, excepto cuando el listado es por pantalla y no en fichero.
.LFCOND: Lista los bloques de cdigo asociados a una condicin falsa (IF).
.SFCOND: Suprimir dicho listado.
.TFCOND: Invertir vigente del listado de los bloques asociados a una condicin falsa.
98

Excelencia Acadmica

Programando en Assembler
5.1.- TASM/MASM.
Es el programa que convierte nuestro archivo fuente en cdigo objeto, es decir, lenguaje
mquina en el que slo faltan las referencias a rutinas externas. Permite la obtencin de
listado de cdigo y de referencias cruzadas (smbolos, etiquetas, variables). En general,
bastar con hacer TASM nombre_programa (se supone la extensin .ASM por defecto). El
fichero final tiene la extensin OBJ. La sintaxis es (tanto para TASM como para MASM):
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

Seleccionan un orden alfabtico o secuencial de los segmentos.


Genera un listado de referencias cruzadas en un fichero de extensin CRF listo
para ser procesado por CREF (MASM) aadiendo adems nmeros de lnea al
listado, o bien incluye el listado de referencias cruzadas directamente dentro
del listado del programa (caso de DASM). Las referencias cruzadas son un
listado de todos los smbolos del programa, indicando los nmeros de lnea del
mismo que en que son definidos y referenciados.
De la manera /Dsmbolo. [=valor] permite crear el smbolo indicado, cuya
presencia puede comprobarse en el programa con una directiva IF (es til para
definir externamente un smbolo que indique que el programa est en fase de
depuracin de cara a ensamblar cierto cdigo adicional). Aunque /d (en
minsculas) es un obsoleto parmetro de MASM para obtener un listado de la
primera pasada del ensamblador, MASM 4.0 es capaz de darse cuenta de que
se pretende definir un smbolo con /d a menos que se indique slo /d.
Emula las instrucciones de punto flotante del 80x87, apoyndose en una
librera al efecto.
Permite indicar el directorio donde el ensamblador debe de buscar los ficheros
indicados en el programa fuente con INCLUDE.
Con /I se genera un listado de ensamblaje y con /Ia un listado expandido.
Con /m se indica el nivel de preservacin del sentido de maysculas y
minsculas en los smbolos: /ml hace que se considere diferentes maysculas
de minsculas en todos los smbolos, /mx slo con smbolos globales y /mu
hace que se mayusculicen todos los smbolos globales. Al ensamblar mdulos
para usar desde lenguajes C hay que indicar por lo menos /mx. En MASM 6.X
se emplea /Cx en lugar de /mx, /Cp en lugar de /ml y /Cu en vez de /mu.
Suprime las tablas de smbolos en el listado.
Verifica que el cdigo generado para el modo protegido es correcto (al emplear
la directiva para generar instrucciones de modo protegido)
Suprime los mensajes si el ensamblaje es correcto
Indica el nivel de advertencias: /w0, ninguna /w1 slo las serias y /w2 slo
consejos
Lista las condiciones falsa (ensamblaje condicional)
Visualiza la lnea del error y no slo el nmero de la misma.
Incluye solo la informacin del nmero de lnea
Genera informacin simblica para los depuradores de cdigo
99

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:
+

aade el mdulo objeto indicado a la librera.

borra el mdulo indicado de la librera.

saca el mdulo de la librera sin borrarlo (extrae fichero OBJ).

-+

alternativamente +-, reemplaza el mdulo existente en la librera.

-*

alternativamente *-, extrae el mdulo de la librera y lo borra de ella.

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:

8.15. C:\8086\TASM fichero,,,fichero


C:\8086\TCREF fichero
Las referencias cruzadas son un listado de todos los smbolos del programa, indicando los
nmeros de lnea del mismo en que son referenciados (lnea en que son definidos se marca
con #); estos nmeros de lnea son relativos al listado de ensamblaje del programa (y no al
fichero fuente). Es til para depurar programas grandes y complejos.
MAKE.
Esta utilidad se apoya en unos ficheros especiales, al estilo de los BAT del DOS, de cara a
automatizar el proceso de ensamblaje. Slo es recomendable para programas grandes,
divididos en mdulos, en los que MAKE chequea la fecha y hora para ensamblar slo las
partes que hayan sido modificadas.
8.15

LAS FUNCIONES DEL DOS Y DE LA BIOS.

El cdigo de la BIOS, almacenado en las memorias ROM del ordenador, constituye la


primera capa de software de los ordenadores compatibles. La BIOS accede directamente al
hardware, liberando a los programas de usuario de las tareas ms complejas. Parte del
cdigo de la BIOS es actualizado durante el arranque del ordenador, con los ficheros que
incluye el sistema operativo. El sistema operativo o DOS propiamente dicho se instala
despus: el DOS no realiza ningn acceso directo al hardware, en su lugar se apoya en la
BIOS, constituyendo una segunda capa de software. El DOS pone a disposicin de los
programas de usuarios unas funciones muy evolucionadas para acceder a los discos y a los
recursos del ordenador. Por encima del DOS se suele colocar habitualmente al
COMMAND.COM, aunque realmente el COMMAND no constituye capa alguna de software:
es un simple programa de utilidad, como cualquier otro, ejecutado sobre el DOS y que
adems no pone ninguna funcin a disposicin del sistema (al menos, documentada), su
nica misin es cargar otros programas.

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

INT 2Bh-2Dh: Uso interno del DOS.


INT 2Eh: Procesos Batch.
INT 2Fh: Interrupcin Mltiplex.
INT 30h 31h: Compatibilidad CP/M-80.
INT 32h: Reservada.
Las funciones del DOS se invocan llamando a la INT 21h e indicando en el registro AH l
nmero de funcin a ejecutar. Slo modifican los registros en que devuelven los resultados,
devolviendo normalmente el acarreo activo cuando se produce un error (con un cdigo de
error en el acumulador). Muchas funciones de los lenguajes de programacin
frecuentemente se limitan a llamar al DOS.
8.17

ACCESO A LAS INTERRUPCIONES DEL BIOS Y DOS DESDE ROM

El ROM BIOS y DOS contiene rutinas que pueden ser usadas en los programas. Estas
rutinas usualmente no son invocadas por procedimientos usuales, pero pueden ser accedido
por mecanismos de interrupcin. La mayora de los programadores tpicamente organizan
los programas por interrupciones CALL. El BIOS y la funciones del DOS estn en forma de
cdigo objeto, y se encuentran en direcciones de memoria, en el lenguaje ensamblador hay
instruccin

denominada

INT

que

genera

una

interrupcin

de

software,

en

un

microprocesador 80x86 que provee una solucin a determinado cdigo de interrupcin. El


80x86 usa cdigo de interrupciones como ndice en una tabla para localizar la rutina a
ejecutar cuando la interrupcin ocurre. Esta tabla de funciones son conocidas como Tabla
del Vector de Interrupcin (IVT) y las funciones son conocidas como Interrupciones
Rutinarias de Servicio (ISRs). El IVT esta localizado en el primer 1,024 Byte de Memoria y
contiene 256 entradas . Desde cada direccin ISR es de la forma CS:IP cada entrada en el
IVT requiere de 4 Byte de almacenamiento (256*4=1,024 B). El 80x86 recibe seal de
interrupcin primero empuja (PUSH) los flags, CS y el registro IP que se encuentra en la pila
de ese orden, luego el CPU usa el numero de interrupcin para endexarlo en el vector de
interrupcin (IVT) y luego salta a las rutinas de servicio de interrupcin (ISRs) para esa
interrupcin. El ISRs termina con IRET (Interrup RETRY) los cuales remueve los datos de la
pila (POP) el intrusin Pointer (IP), el Code Segmnet (CS) y Flags de la Stack (Pila) por la
cual retorna el control a la interrupcin del programa

104

Excelencia Acadmica

Rutinas del ROM BIOS

Manejo dela INTS


IRET

Programa objeto

INTS

Tabla del Vector de Interrupcin

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

es la rutina de E/S del teclado y es mas flexible.


Este procedimiento de tipo FAR, DISK-INT maneja la interrupcin del
diskette.
Activa la misma llamada que type 4.
El conjunto de rutinas asociados con este procedimiento NEAR VIDEO
E/S, constituye interfaz con el TRC.
El procedimiento proporciona el nmero de puertos para la impresora,
adaptadores de juegos, interfaces RS-232C,nmero de unidades de
Diskettes, modos de video y tamaos del RAM
Proporciona el tamao de la memoria
Llama a varias rutinas para llevar operaciones de entrada y salidas del
disco.
Este procedimiento permite al usuario la entrada y salida de datos desde
el puerto de comunicaciones desde el puerto de comunicaciones RS232C.
Interrupcin empleada para controlar las operaciones de E/S en casettes.

16

BIOS

Esta interrupcin utiliza a AX para leer el teclado

17

BIOS

18

BIOS

Esta rutina proporciona la comunicacin con la impresora. Los parmetros


necesarios son colocados en los registros AX y DX.
Esta interrupcin llama al casette de basic.

19

BIOS

1A

BIOS

1B

DOS

1C

BIOS

1D

BIOS

1E

DOS

Esta tabla de bytes y rutinas necesarias para establecer varios parmetros


para grficos.
Tabla de diskette.

1F

DOS

Tabla de grficos.

20

DOS

21

DOS

22

DOS

23

DOS

Esta interrupcin es generada por DOS para salirse un programa, es la


primera direccin del rea correspondiente al segmento prefijo del
programa.
Esta interrupcin consta de varias opciones, una de ellas es solicitar
funciones.
Cuando termina la ejecucin de un programa esta interrupcin transfiere el
control a la direccin especificada por el vector de interrupcin. Esta
interrupcin nunca debe generase de manera directa.
Esta interrupcin es generada como respuesta a un CRTL BREAK.

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

Esta interrupcin transfiere el control, para escritura, a manejador del


dispositivo.
Este vector es empleado, para que al termino de un programa este
permanezca residente en la memoria del sistema una vez que DOS toma
de nuevo el control.
Esta interrupcin define una interfaz general entre dos procesos, el
nmero especificado en Ah indica a cada manejador y Al contiene la
funcin del manejador.

8.18. TEORIA DEL MICROPROCESADOR


El microprocesador es la parte mas importante de la computadora diseada para llevar a
cabo o ejecutar los programas. El cerebro de la PC y compatibles es el 8086 de INTEL. Los
procesadores varan en velocidad y capacidad de memoria, registros y el tamao del bus de
datos.
El bus de datos transfiere datos entre el procesador, la memoria y dispositivos de
entrada y salida.
Todo microprocesador realiza acceso a memoria y a puertos de entrada y salida, ya sea
escribir o leer. Esto significa que cualquier sistema digital basado en un microprocesador
requerir de al menos una memoria donde se ubiquen las instrucciones a ejecutar
(programa) y al menos puerto de salida o entrada /salida.

ALGUNAS CARACTERSTICAS DEL 8088

Interfaz de bus de datos de 8 bits.

Arquitectura interna de 16 bits.

Capacidad de direccionamiento de 1MB de memoria.

Software compatible con los microprocesadores 8086.

14 registros de trabajo.

24 modos de direccionamiento en operaciones.

Operaciones en byte, word y bloques de estos.

Operaciones aritmticas, lgicas y de transferencia de 8 bits y 16 bits en binario o


decimal.

Puede trabajar a una frecuencia de 5Mhz (8088) 8Mhz(8088 2).

ORGANIZACIN DE LA MEMORIA:
El procesador prev un bus de direcciones de 20bist hacia la memoria el cual ubica el
byte de referencia, la memoria esta organizada como un arreglo lineal de un milln de byte
direccionados desde 00000H hasta FFFFFH. La memoria esta lgicamente separada en
segmentos de cdigo, datos, datos extra y pila, cada una de 64 KB, cada segmento continua
107

Excelencia Acadmica

con un limite de 16 bytes todas las referencias de memoria estn hechas con relacin a las
direcciones contenidas en el registro de segmento.
Los tipos de segmentos escogidos son basados en las necesidades de direcciones de
los programas. El registro de segmento para ser escogido tiene que cumplir la siguiente
regla: Toda la informacin en un segmento tipo comparte los mismos atributos lgicos
(Ejemplo: cdigo o datos). Para estructurar la memoria dentro de reas rescatables de
caractersticas similares, y para seleccin automtica de registros de segmentos, los
programas son cortos, veloces y mas estructuradados. La palabra de 16 bits puede ser
ubicada (localizada) en borde par o impar. Para direcciones y datos es decir operandos, el
ltimo byte significativo de la palabra es almacenada la ubicacin de la direccin mas baja y
el mas significativo en la prxima direccin mas alta.
Ciertas posiciones de memoria estn reservadas para operaciones especficas del CPU,
posiciones de direcciones del FFFFOH hasta FFFFFH son reservados para operaciones que
incluyen saltos hacia la rutina de inicializacin del sistema, siguiendo el RESET. El
microprocesador siempre ejecutar el cdigo de la posicin FFFFOH

donde debe ser

ubicado una instruccin de salto ubicaciones del OOOOOH hasta OO3FFH son reservadas
para operaciones de interrupcin (4 bytes indicadores), conformado por la direccin de
segmento de 16 bits y de desplazamiento de 16 bits.
El microprocesador no puede realizar todo el trabajo de control del computador, existen
unos chips de soporte que le ayudan a gestionar, controlar y hacen posible que todo el
sistema funcione en forma coordinada. El microprocesador se comunica con estos
dispositivos a travs de las cuales pasa la informacin, tanto si viaja desde o hacia un
dispositivo de entrada /salida como un teclado, una impresora.
Cada puerto se identifica por una direccin de 16 bits, el cual puede variar desde 0000H
hasta FFFFH, debido a las 2 instrucciones de manejo de puerto:
in al,dx--------------(entrada)
out dx,al-------------(salida)
donde el registro DX contiene la direccin del puerto. Esto le da un total de 65536 puertos
de entrada /salida. No pueden haber 2 puertos con una misma direccin, esto creara un
conflicto en el sistema digital.
El acceso es similar que el acceso a memoria, es decir; el microprocesador utiliza el bus
de direcciones para generar el nmero del puerto y por el bus de datos viajar la informacin
hacia el microprocesador o sale de este. Pero aqu se genera otra seal de control para
distinguir el acceso a la memoria (IO/M). En otras palabras una direccin de puerto no es lo

108

Excelencia Acadmica

mismo que una direccin de memoria. El que determina el acceso en calidad es la


instruccin que se ejecuta.
En las computadoras, las direcciones de los puertos de entrada/salida la determinan los
diseadores de la placa principal (mainboard). Los programas que hagan uso de los puertos
de entrada /salida deben de tener cuidado de los nmeros de los puertos, as como de su
uso y significado

IMPLEMENTACION DE UN SISTEMA DIGITAL BASADO EN EL 8088


OBJETIVOS:

Familiarizarse con el microprocesador 8088

Construir un sistema con un microprocesador, es decir un sistema digital


programable, flexible, verstil, etc.

Incidir sobre todo en el hardware, ya que en la mayora est familiarizado con el


software.

Familiarizarse con el seguimiento y deteccin de fallas de sistemas digitales basados


con microprocesadores.

Familiarizar al alumno con microprocesadores para disear sistemas aplicados en la


industria control e instrumentos.

DISPOSITIVOS Y COMPONENTES ELECTRNICOS, HERRAMIENTAS

Un microprocesador 8088

Un generador de reloj 8284

Un oscilador de 20Mhz.

Una memoria EPROM 27XX.

Dos latch 74LS373.

Un latch 74LS374.

Dos buffer bidireccional 74LS245.

Decodificadores 74LS138.

Compuertas: 74LS08, 74LS32, 74LS00.

Resistores: iK, 330 ohm, leds

Dip switch de 8.

Condensadores de tantalio de 0.1uf.

109

Excelencia Acadmica

8.19. PROCESO DE DISEO DEL HARDWARE


El sistema digital basado en el microprocesador 8088 debe reunir las condiciones
bsicas de acceso a memoria, as como la lectura y escritura de los puertos de entrada y
salida, de tal forma que el sistema sea capaz de procesar informacin digital externa.
Para elaborar este sistema realizamos la descripcin lgica de los siguientes bloques:
1

EL MICROPROCESADOR 8088.- Es un microprocesador de 16 bits con una

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),

DT/R(Transmisin o recepcin de datos), M/IO(acceso a memoria o puertos de entrada /


salida), RD(Lectura), WR(Escritura) y DEN(Habilitador de datos).
1.

LA MEMORIA EPROM.- Es el lugar donde se almacenar el cdigo de maquina,


producto del programa realizado en lenguaje assembler. Este dispositivo debe de estar
ubicado en la regin , mas alta de la memoria, teniendo en cuenta que despus de
realizar el RESET al microprocesador el registro puntero de instruccin (IP) contiene el
valor 0000H y el registro de segmento de cdigo (CS) toma el valor de FFFFH. Esta
memoria una vez gravada nos servir como programa monitor del sistema.

2.

EL RELOJ GENERADOR.- Es el encargado de generar la seal de reloj apropiada


para el microprocesador. El 8284, tambin genera las seales de RESET y READY,
necesarias para el funcionamiento del sistema. Internamente divide la frecuencia de reloj
a la tercera parte de la frecuencia de ingreso. Si trabajamos con el oscilador de 20 Mhz,
el 8088 trabajar a una frecuencia de reloj de 7Mhz aproximadamente.

3.

LOGICA DE DEMULTIPLEXADOR DEL BUS DE DATOS Y DECODIFICACIN


PARA LA HABILITACIN DE LA MEMORIA Y PUERTOS DE ENTRADA/SALIDA.La bascula cerrojo 74373: para demultiplexar las direcciones, se habilita con

ALE.

El buffer bidireccional 74245: para el soporte del bus de datos.

Decodificador 74138: para tener acceso a memoria y puertos de entrada


/salida de acuerdo a las direcciones determinadas para cada uno de ellos.

Compuertas lgicas: 7404, 7408, 7432 se utilizan para elaborar la condicin


de acceso a memoria o puertos de entrada/salida.

4.

INTERFAZ BASIC DE I/O UTILIZNDOLE BUFFER 74245 Y EL LATCH 74374.- La


interfaz de entrada utiliza un buffer 74245 fijado a una sola direccin (puede utilizar el
74244). Este CI se habilitar cada vez que el microprocesador ejecute la instruccin: IN

110

Excelencia Acadmica

AL,DX; donde DX contiene la direccin del puerto de entrada (300h) y el registro AL


contiene el dato que ha ingresado al sistema.
La decodificacin del puerto 300H sera de la siguiente forma:
A9

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

assume cs: code

inicio

4 FFFF0

BA0300

5 FFFF3

EC

in al, dx

6 FFFF4

34FF

xor al, 0FFH

7 FFFF6
8 FFFF7

mov dx, 300H

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.

Siguiendo el esquema del circuito, implementar el sistema digital teniendo mucho


cuidado en cuidar un orden al momento de cablear el bus de datos y el bus de
direcciones; es decir, utilizar un determinado color de cable para cada bus. Con
respecto a las lneas de control utilice otro color y colquele unas etiquetas a las
siguientes seales:
Lectura de memoria (MEMRD)
Escritura de puerto (IOWR)
Lectura de puerto (IORD)
Habilitacin de la EPROM (CS)
Reloj del sistema (CLK)
Habilitacin del latch de direcciones (ALE)
Habilitacin de datos(DEN)
Habilitacin del buffer de entrada (INPORT).
Seal de reloj del latch de salida (OUTPORT).

2.

Grabar en la memoria EPROM el programa que ser ejecutado por el


microprocesador cada vez que se inicialice el sistema.

3.

Con una fuente de alimentacin del laboratorio regule una salida de 5 voltios de DC y
aplquele al circuito. Antes de aplicar verifique que no haya ningn corto, ya que podra
malograr los chips.

4.

Si el sistema esta funcionando. Anote y dibuje los siguientes valores y aada a su


informe final:
Seal de lectura de puerto
Seal de escritura de puerto.
Seal de reloj
Consumo de corriente de todo el circuito

112

Excelencia Acadmica

5.

Si el sistema no funciona, utilice el osciloscopio y con ayuda del profesor trate de


encontrar el posible error o falla del circuito.

PROGRAMA QUE PERMITE VISUALIZAR A TRAVES DE 2 DISPLAYS EL CODIGO


ASCII DE UNA TECLA PULSADA
Para este proyecto se tomarn en cuenta las siguientes condiciones:

Se tendrn como salida un nmero de 8 bits.

De estas salidas. 7 irn conectadas directamente a un display; mientras que el bit


restante servir para controlar un LATCH (a cuya entrada se tienen almacenados las
mismas 7 salidas anteriormente mencionadas) que tienen conectado a su salida otro
display (de 7 segmentos)

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

CONVERSIN EN ASCII DE LA TECLA PULSADA A TRAVES DEL DISPLAY


Aqu, con un cero lgico en el puerto paralelo, el display encender uno de sus
segmentos, ya que este ltimo es de tipo nodo comn.
Segn el tipo de seal a mandar el segmento se prender esta seal es mandada 2
veces (1 dato mandado por el puerto paralelo: DO D7), en la primera seal mandada as
como en la segunda, solo variar el octavo (D7), y mantenindose D0 D6 constante, todo
esto con el propsito de activar al reloj;
La primera seal ser un 0 (D7==) Y La segunda seal ser 1 (D7=1) ver figura 2
(estos datos se repetirn 30 veces para asegurar al primer dato y al reloj) en este primer
dato los displays reciben el mismo dato.
Luego de mandar la seal 30 veces (1er dato), se precede a enviar el segundo dato por
el puerto paralelo cambiando entonces el 2do display, pero mantenindose el primer display,
ya que no se hace variar el octavo bit(D7), por lo tanto el display2 queda con el dato anterior
(para que cambie tiene que mandarse un 0 seguido del 1 para activar el latch, por flanco
positivo) y el segundo display con el 2do dato, quedando entonces, el nmero deseado de la
tecla pulsada convertido en ASCII, visualizando en los dos displays.
MACROS
Cuando un conjunto de instrucciones en ensamblador aparecen frecuentemente
repetidas a lo largo de un listado, es conveniente agruparlas bajo un nombre smbolo que
las sustituir en aquellos puntos donde aparezcan. Esta es la misin de las macros; por el
hecho de soportarlas el ensamblador eleva categora a la de macroensamblador, al ser las
macros una herramienta muy cotizada por los programadores.
No conviene confundir las macros con subrutinas: es estas ltimas, el conjunto de
instrucciones aparece una sola vez en todo el programa y luego se invoca con CALL. Sin
embargo, cada vez que se hace referencia a una macro, el cdigo que esta representa se
expande en el programa definitivo, duplicndose tantas veces como se use la macro. Por
ello, aquellas tareas que puedan ser realizadas con subrutinas siempre ser mas
conveniente realizarlas con las mismas, con objeto de economizar memoria, es cierto que
las macros son algo ms rpidas que las subrutinas (se ahorra un CALL y un RET) pero la
diferencia es tan mnima que a la prctica es despreciable en el 99,99% de los casos.
DEFINICION Y BORRADO DE LAS MACROS.
La macro se define por medio de la directiva MACRO. Es necesarios definir la macro
antes de utilizarla. Una macro puede llamar a otra. Con frecuencia, las macros se colocan
114

Excelencia Acadmica

juntas en fichero independiente y luego se mezclan en el programa principal con la directiva


INCLUDE.
IF1
INCLUDE fichero.ext
ENDIF
La sentencia IF1asegura que el ensamblador lea el fichero fuente de las macros slo en
la primera pasada, para acelerar el ensamblaje y evitar que aparezcan en el listado no
consume memoria, por lo que en la prctica es indiferente declarar cientos que ninguna
macro:
Nombre_simblico MACRO parmetros

; 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

SUMAR positivos, negativos, total


En el ejemplo a , b y total son los parmetros formales y positivos, negativos y
total son los parmetros actuales. Tanto a como b pueden ser variables, etiquetas, etc.
en otro punto del programa; sin embargo, dentro de la macro, se comportan de manera
independiente. El parmetro formal total ha coincidido en el ejemplo y por casualidad con
su correspondiente actual. El cdigo que genera el ensamblador al expandir la macro ser el
siguiente:
PUSH AX
MOV AX,positivos
ADD

AX,negativos

MOV total,AX
POP

AX

Las instrucciones PUSH y POP sirven para no alterar el valor de AX y conseguir que la
macro se comporte como una caja negra; no es necesario que esto sea as pero es una
buena costumbre de programacin para evitar que los programas hagan cosas raras. En
general, las macros de este tipo no deberan alterar los registros y, si los cambian, hay que
tener muy claro cules.
Si se indican ms parmetros de los que una macro necesita, se ignorarn los restantes. En
cambio, si faltan, el MASM asumir que son nulos (0) y dar un mensaje de advertencia, el
TASM es algo ms rgido y podra dar un error. En general, se trata de situaciones atpicas
que deben ser evitadas.
Tambin puede darse el caso de que no sea posible expandir la macro. En el ejemplo, no
hubiera sido posible ejecutar SUMAR AX, BX, DL porque DL es de 8 bits y la instruccin
MOV DL, AX sera ilegal.
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

dato1, dato2, resultado

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

Al ejecutar SALUDO A se producir la siguiente expansin:


MOV AL, A
Etiqueta A:

CALL imprimir

Si no se hubiera colocado el & se hubiera expandido como MOV AL, c


Cuando se utilizan estructuras repetitivas REPT, IRP o IRPC existe un problema adicional al
intentar crear etiquetas, ya que el ensamblador se come un & al hacer la primera sustitucin,
generando la misma etiqueta a menos que se duplique el operador &:
MEMORIA
X&j

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

convierte la expresin que el sigue generalmente un smbolo- a un nmero; la expresin


debe ser una constante (no relocalizada). Slo se emplea en los argumentos de macros.
Dada la macro siguiente:
PSUM

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

Invocando loa macro con las siguientes condiciones:


PSUM

<SIM + SIM1 = >, (SIM1 + SIM2)

Se produce la siguiente expansin:


%OUT * SIM1 + SIM2 = (SIM1 + SIM2) *
Sin embargo, invocando la macro de la siguiente manera (con %):
PSUM < SIM1 + SIM2 = >, %(SIM1 + SIM2)
Se produce la expansin deseada:
%OUT * SIM1 + SIM2 = 620 *
DIRECTIVAS UTILES PARA MACROS.
Estas directivas pueden ser empleadas tambin sin las macros, aumentando la comodidad
de la programacin, aunque abundan especialmente dentro de las macros.
* REPT veces ENDM (Repeat)

120

Excelencia Acadmica

permite repetir cierto nmero de veces una secuencia de instrucciones. El bloque de


instrucciones se delimita con ENDM (no confundirlo con el final de una macro). Por ejemplo:
REPT 2
OUT

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

La sentencia SUCESION 3 provocar la siguiente expansin:


DB

DB

DB

* IRP Smbolo_control, <arg1, arg2, , arg_n> ENDM (Indefinite repeat)


Es relativamente similar a la instruccin FOR de los lenguajes de alto nivel. Los ngulos (<)
y (>) son obligatorios. El smbolo de control va tomando sucesivamente los valores (no
necesariamente numricos) arg1, arg2, y recorre en cada pasada todo el bloque de
instrucciones hasta alcanzar el ENDM (no confundirlo con fin de macro) sustituyendo
smbolo_control por esos valores en todos los lugares en que aparece:
IRP

i, <1,2,3>

DB 0, i, i*i
ENDM
121

Excelencia Acadmica

Al expansionarse, este conjunto de instrucciones se convierte en lo siguiente:


DB

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

p1, p2, p3, p4, valor

PUSH

AX

PUSH

DX

MOV

AL, valor

IRP

cn; <p1, p2, p3, p4>


MOV DX, cn
OUT

ENDM

; fin de IRP

POP

DX

POP

AX

ENDM

DX, AL

;fin de macro

Al ejecutar TETRAOUT 318h, 1C9h, 2D1h, 14h, 17 se obtendr:

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

Se comprende la necesidad de utilizar los ngulos:


INCD AX, BX, CX, DX se expandir:
INC

AX

DEC

BX; CX Y DX se ignoran (4 parmetros)

INCD <AX,BX, CX>, DX se expandir:


INC

AX

INC

BX

INC

CX

INC

DX

; (2 parmetros)

* IRPC smbolo_comtrol, <c1c2cn> endm (Indefinite repeat character)


esta directiva es similar a la anterior, con una salvedad: los elementos situados entre los
ngulos (<) y (>) ahora opcionales, por cierto- soncaracteres ASCII y no van separados por
comas:
IRPC i, <813>
DB i
ENDM
El bloque anterior generar al expandirse:
123

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

Al ejecutar INICIALIZA 7, 1, 4, 0 se produce la siguiente expansin:


DB

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

; byte de fin de bloque

Excelencia Acadmica

MACROS AVANZADAS CON NUMERO VARIABLE DE PARAMETROS.


Como se vi al estudiar la directiva IF, existe la posibilidad de chequear condicionalmente la
presencia de un parmetro por emdio de IFNB, o su ausencia con IFB. Uniendo esto a la
potencia de IRP es posible crear macros extraordinariamente verstiles. Como ejemplo,
valga la siguiente macro, destinada a introducir en la pila un nmero variables de
parmetros (hasta 10): es especialmente til en los programas que gestionan interrupciones:
PUSH

MACRO R1, R2, R3, R4, R5, R6, R7, R8, R9, R10
IRP reg, < R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>
IFNB <reg>
PUSH reg
ENDIF
ENDM

; fin de IRP

ENDM

;fin de XPUSH

Por ejemplo, la instruccin:


XPUSH AX, BX, DS, ES, VAR1
Se expandir en :
PUSH AX
PUSH AX
PUSH DS
PUSH ES
PUSH VAR1
El ejemplo anterior es ilustrado del mecanismo de comprobacin de presencia de
parmetros. Sin embargo, este ejemplo puede ser optimizado notablemente empleando una
lista como nico parmetro:
XPUSH

MACRO lista
IRP i, <lista>
PUSH i
ENDM
ENDM
125

Excelencia Acadmica

XPOP

MACRO lista
IRP i, <lista>
POP i
ENDM
ENDM

La ventaja es el nmero indefinido de parmetros soportados (no slo 10). Un ejemplo de


uso puede ser el siguiente :
XPUSH

<AX, BX, CX>

XPOP <CX, BX, AX>


Que al expandirse queda:
PUSH AX
PUSH BX
PUSH CX
POP

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:

MICROPROCESADORES Y LENGUAJE ASSEMBLER

; Profesor:

Inf. Alfredo Granados Ly

; Archivo:

LIBRERA.MAC Archivo de librera de macros

; Fecha:

18/11/99

;**************************************************************************************************
; Establece la posicin del cursor en el modo texto: 80x25
CURSOR

MACRO

FILA, COLUMNA

PUSHA
MOV DH, FILA
MOV DL, COLUMNA
MOV BH, 0
126

Excelencia Acadmica

MOV AH, 2
INT 10H
POPA
ENDM
;**************************************************************************************************
; Dibuja un pixel en el modo VIDEO con color.
PIXEL MACRO FILA, COLUMNA, COLOR
PUSHA
MOV AH, 0CH
MOV AL, COLOR
MOV BH, 0
MOV CH, columna
MOV DX, FILA
INT

10H

POPA
ENDM
;**************************************************************************************************;Dibuj
a un cuadrado en el modo grfico.
CUADRADO MACRO

FILX, COLX, FILY, COLY, COLOR

LOCAL O_LAZ1, O_LAZ2, O_LAZ3, O_LAZ4


MOV CX, COLX
O_LAZ1:
PIXEL FILX, CX, COLOR
INC CX
CMP CX, COLY
JNE O_LAZ1
MOV CX, COLX
O_LAZ2:
PIXEL FILX, CX, COLOR
INC CX
CMP CX, COLY
JNE O_LAZ2
127

Excelencia Acadmica

MOV CX, FILX


O_LAZ3:
PIXEL DX, COLX, COLOR
INC DX
CMP DX, FILY
JNE O_LAZ3
MOV DX, FILX
O_LAZ4:
PIXEL DX, COLLY, COLOR
INC DX
CMP DX, FILY
JNE O_LAZ4
ENDM
;**************************************************************************************************;Esta
blece el modo de video: Texto o grfico.
MODOVIDEO MACRO MODO
PUSHA
MOV AH,0
MOV AL, MODO
INT 10H
POPA
ENDM
;**************************************************************************************************;
Limpia la pantalla en el modo de texto.
CLS

MACRO
PUSHA

MOV CX, 0
MOV DX, 2479H
MOV BH,7
MOV AX,0600H
INT 10H
128

Excelencia Acadmica

POPA
ENDM
;**************************************************************************************************;
Genera un retardo por software: TOTAL = TIME1 * TIME2 * TIME3 veces.
RETARDO

MACRO TIME1, TIME2, TIME3

LOCAL P1, P2, P3


PUSHA
MOV DX, TIME1
P1:

MOV CX, TIME2

P2:

MOV BX, TIME3

P3:

DEC BX
JNZ P3
DEC CX
JNZ P2
DEC DX
JNZ P1
POPA
ENDM

;**************************************************************************************************;
Imprime una cadena de caracteres.
CADENA

MACRO BUFFER
PUSHA
LEA DX, BUFFER
MOV AH,9
INT 21H
POPA
ENDM

;**************************************************************************************************
; Llama las funciones de la Interrupcin 21h.
FUNCION

MACRO N
MOV AH,N
INT 21H
129

Excelencia Acadmica

ENDM
;**************************************************************************************************;
Rutina en segundos utilizados en reloj (1-60).
SEGUNDOS MACRO SEG
LOCAL OTRO
PUSHA
MOV AH,2CH
INT 21H
MOV BH,DH
ADD BH,SEG
CMP BH,60
JL OTRO
SUB BH,60
OTRO:
MOV AH,2CH
INT 21H
CMP BH,DH
JNE OTRO
POPA
ENDM
;**************************************************************************************************; Ver
al mouse en pantalla.
VER_MOUSE MACRO
PUSH AX
MOV AX,01H
INT 33H
ENDM
;**************************************************************************************************;
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

MICROPROCESADORES Y LENGUAJE ASSEMBLER

; Profesor

Ing. Alfredo Granados Ly

; Archivo

EJEM!.asm

; Fecha

:
18/11/99.

IF1
INCLUDE LIBRERA.MAC
ENDIF
.286
.MODEL SMALL
.STACK 100H
.DATA
LOGO1 DB HOLA

:-)$

LOGO2 DB ADIOS :-)$


131

Excelencia Acadmica

.CODE
MOV AX, @DATA
MOV DS,AX
CLS
CURSOR 12,37
CADENA LOGO1
MOV CL,9
LAZO:
CURSOR 13,40
MOV DL,CL
ADD DL,30H
FUNCION 02H
SEGUNDOS 1
LOOP LAZO
CURSOR 13,40
MOV DL,20H
FUNCION 02H
CURSOR 14,37
CADENA LOGO2
FUNCION 4CH
END
EJERCICIOS:
1. Escriba un programa que muestre en el centro de la pantalla su nombre, de tal manera
que se imprima un carcter de su nombre por segundo (debe generar un pitido al
momento de la impresin).
2. Escriba un programa que pida su nombre y lo muestre en sentido inverso:
Ingrese su nombre:

ALFREDO

En sentido inverso:

ODERFLA.

PROGRAMA No 2.
El desplazamiento de las imgenes de pantalla (scrolling) y el paginado son dos mtodos
diferentes de transferir bloques de informacin de memoria a pantalla. En el primero de ellos
132

Excelencia Acadmica

uno de los bordes de la pantalla acta como sumidero de la informacin que se genera en
el borde opuesto las nuevas lneas se van creando a partir de los datos de memoria;
repitiendo esta accin lnea a lnea se crea la ilusin de un texto en movimiento.
Cuando se desea desplazar verticalmente una pantalla de texto, se envan las lneas 2 a 25
a las 1 a 24, y se aade la siguiente lnea de datos a la memoria, almacenndola en la lnea
25. En esta operacin, se pierde la lnea superior de los datos, aunque contina existiendo
en memoria. El funcionamiento descendente funciona del mismo modo.
El siguiente programa hace uso del desplazamiento hacia arriba y debajo de un sector de la
pantalla. Para eso se hace uso de las funciones 06h y07h de la interrupcin 10h.
AH = 06H

Funcin de deslizar hacia arriba.

AH = 07H

funcin de deslizar hacia abajo.

AL = Lneas a deslizar.
BH = Atributo de relleno.
CH = Fila superior
CL = Columna izquierda.
DH = Fila inferior
DL = Columna derecha.
; INCTEL DC
; Curso

MICROPROCESADORES Y LENGUAJE ASSEMBLER

; Profesor

Ing. Alfredo Granados Ly

; Archivo

EJEM!.asm

; Fecha

:
18/11/99.

IF1
INCLUDE LIBRERA.MAC
ENDIF
.286
.MODEL SMALL
.STACK 100H
133

Excelencia Acadmica

.DATA
LOGO1 DB ========$
LOGO2 DB |

/\/ # \/\ |$

LOGO3 DB |

\ 0 0 / |$

LOGO4 DB |

|$

LOGO5 DB |

\_/

|$

LOGO6 DB | BATMAN |$
LOGO7 DB ========$
.CODE
MOV AX, @DATA
MOV DS,AX
CLS
CURSOR 8,35
CADENA LOGO0
CURSOR 9,35
CADENA LOGO1
CURSOR 10,35
CADENA LOGO2
CURSOR 11,35
CADENA LOGO3
CURSOR 12,35
CADENA LOGO4
CURSOR 13,35
CADENA LOGO5
CURSOR 14,35
CADENA LOGO6
CURSOR 15,35
CADENA LOGO7

MOV CL,9
MOV AL,1
LAZO:
MOV AH,6
134

; Desplazar una lnea.

Excelencia Acadmica

CALL DESPZ
RETARDO 5000,500,10
MOV AH,7
CALL DESPZ
REATRDO 5000,500,10
LOOP LAZO
FUNCION 4CH
DESPZ PROC
PUSH CX
PUSH DX
MOV CH,09

; lnea superior izquierda

MOV CL,36

; columna superior izquierda

MOV DH,13

; lnea inferior derecha

MOV DL,45

; columna superior derecha

INT 10H
POP DX
POP CX
RET
DESPZ ENDP
END
EJERCICIOS:
1. Escribir un programa que muestre su nombre desplazando de izquierda a derecha.
2. Escribir un programa que imprima su nombre en el centro superior de la pantalla y que
deje caer letra por letra hacia la parte inferior de la pantalla.
PROGRAMA No 3.
El siguiente programa tiene por objeto explicar el funcionamiento del mouse utilizando la
interrupcin 33h. Para la ejecucin de este programa asegrese de haber corrido antes el
archivo: MOUSE.EXE o MOUSE.COM (si est trabajando bajo D.O.S).

135

Excelencia Acadmica

Para ello hay que cambiar el modo de pantalla del modo texto (80x25) al modo grfico
(640x480) para esto utilizamos la funcin 00h de la interrupcin 10H, el modo de video se
especifica en el registro AL.
AL = 01H

: texto de 40x25, 16 colores.

AL = 02H

: texto de 80x25, 16 colores.

AL = 05H

: grfico 320x200, 4 colores.

AL = 06H

: grfico 640x200, 2 colores.

AL = 0EH

: grfico 640x200, 16 colores.

AL = 10H

: grfico 640x350, 16 colores.

AL = 11H

: grfico 640x480, 2 colores.

AL = 12H

: grfico 640x480, 16 colores.

Tambin se utiliza la macro para escribir un pixel en pantalla para dibujar un rectngulo.
AH = 0CH

: escribir un pixel en pantalla.

AL = color
BH = pgina de visulizacin.
CX = columna de pixel.
DX = fila de pixel.
INT 10H
Y por ltimo las funciones para el manejo del mouse:
AX = 1

: Visualizacin del mouse.

AX = 2

: No visualiza el mouse.

AX = 3

: Leer la posicin del mouse.


BX = devuelve el botn pulsado.
Si BX = 2 entonces se pulso el boton derecho.
Si BX = 1 entonces se pulso el boton izquierdo.
CX = la posicin de la fila
DX = la posicin de la columna.

El siguiente programa dibujar un cuadrado en pantalla que funcionar como el botn de


SALIR en las aplicaciones WINDOWS, de tal manera que para salir del programa hay que
pulsar con el boton derecho dentro del rectngulo dibujado.
136

Excelencia Acadmica

; INCTEL DC
; Curso

MICROPROCESADORES Y LENGUAJE ASSEMBLER

; Profesor

Ing. Alfredo Granados Ly

; Archivo

EJEM!.asm

; Fecha

:
18/11/99.

IF1
INCLUDE LIBRERA.MAC
ENDIF
.286
.MODEL SMALL
.STACK 100H
.DATA
FILA DW ?
COLUMNA DW ?
BOTON DW ?
.CODE
MOV AX,@DATA
MOV DS,AX
MODOVIDEO 12H

; Grfico 640x480 16 colores.

CUADRADO 50,50,100,100,14
VER_MOUSE
ESPERA:
LEER_MOUSE
MOV FILA.CX
MOV COLUMNA.DX
MOV BOTON.BX

; 01 = Izquierda

02 = Derecha.

CMP BOTON,2
JNE ESPERA
CMP FILA,50
137

Excelencia Acadmica

JGE X1X1
JMP ESPERA
X1X1:
CMP FILA 100
JL X2X2
JMP ESPERA
X2X2:
CMP COLUMN,50
JGE X3X3
JMP ESPERA
X3X3:
CMP COLUMNA,100
JLX4X4
JMP ESPERA
X4X4:
MODOVIDEO 02H

; Texto 80x25 16 colores.

FUNCION 4CH
END
EJERCICIOS:
1. Escriba un programa que dibuje 16 lneas a lo largo de la pantalla cada una de diferente
color.
2. Escriba un programa de manera que se grafique una lnea entre dos puntos que han
sido seleccionados utilizando el botn izquierdo del mouse.

138

Excelencia Acadmica

PROGRAMACION MODULAR Y PASO DE PARMETROS.


Aunque lo que viene a continuacin no es indispensable para programar en ensamblador, si
es conveniente leerlo en 2 3 minutos para observar ciertas reglas muy sencillas que
ayudarn a hacer programas seguros y eficientes .
La programacin modular consiste en dividir los problemas ms complejos en mdulos
separados con unas ciertas interdependencias, lo que reduce el tiempo de programacin y
aumenta la fiabilidad del cdigo. Se pueden implementar en ensamblador con las directivas
PROC y ENDP que, aunque no generan cdigo son bastante tiles para dejar bien claro
dnde empieza y acaba un mdulo. Reglas para la buena programacin:
-

Dividir los problemas en mdulos pequeos relacionados slo por un conjunto de


parmetros de entrada y salida.

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

almacenado. El tipo de los parmetros habr de estar debidamente documentado al


principio de los mdulos.
-

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

*. ROBER L. BOYLESTAD, LOUIS NASHELSKYElectronica: Teoria de circuitos Editorial


Prentice-hall Sexta Edicin
Mejico
Ao 1999
*. VICTOR P. NELSON, H. TROY N., BILL D. CARROLL, J. DAVID I.
Anlisis y diseo de circuitos lgicos
Primera Edicin
Mjico
*. Texas Instruments
Second Edition
Printed in USA

Ao 1996

The TTL Data Book for Design Engineers


Ao 1981

*. CMOS INTEGRATED CIRCUITS


Nacional Semiconductor Corporation
Primera Edition Santa Clara CALIFORNIA
Ao 1985
*. INICTEL
2001

Electrnica de los Circuitos digitales

*. GRANADOS LY ALFREDO
PERU Ao 2001.

Peru

Microprocesadores y Lenguaje Assembler

Ao
INICTEL

141

Excelencia Acadmica

1.- Cuando al Microprocesador la llega dos solicitudes de interrupcin seguidas, que


procesos siguen.
2.- Definir los siguientes tipos interrupcin: enmascarada, no-enmascarada, por software,
por hardware y propias del microprocesador.
3.- Explique el proceso DMA.
4.- Describa el trabajo del microprocesador en la siguiente secuencia de instrucciones:
mov
mov
mov
mov
mov
int
inc
mov
int

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

Das könnte Ihnen auch gefallen