Professional Documents
Culture Documents
Qu es Software?
Todo el hardware que hay no puede funcionar si no hay software (programa o
programas) que hacen que este trabaje de manera adecuada.
El software hace que una computadora tenga vida y se comporte de la manera
que todos conocemos.
Algunos ejemplos de software son:
- Los Sistemas Operativos (S.O.) como el antiguo DOS (Disk Operating
System), Windows 95, 98, Milenium, 2000, XP, y Vista. Tambin hay que tomar en
cuenta que hay Sistemas Operativos de Microsoft especial para redes. Otros
Sistemas Operativos son el OS/2, el LINUX (en varias versiones) , el UNIX,
entre otros.
Cuando se escucha hablar de DOS, Windows 3.1, Windows 95, Windows 98,
Windows NT, Windows 2000, Windows XP, Windows Vista, Linux, Unix,
OS/2, Android, etc., se est hablando del Sistema Operativo.
El S.O. es una primera capa de software que asla al usuario del
funcionamiento directo de la computadora.
El Sistema Operativo es un conjunto de programas que interactan
directamente con el hardware y se encarga de que ste funcione adecuadamente.
El Sistema Operativo permite que el usuario tenga acceso a las virtudes de la
mquina de una manera amigable sin que deba de saber los detalles de operacin
de sta. Permite tambin que el usuario corra aplicaciones. (Word, Excel, Juegos,
etc.)
Cuando una computadora se enciende una de las primeras cosas que se hace es
cargar el S.O. en memoria (El S.O. debe estar al menos parcialmente en memoria
para que la computadora pueda funcionar.)
http://www.unicrom.com/Cmp_hardwaresoftware.asp
Supercomputadoras
Las computadoras / ordenadores ms potentes de todas, muy rpida, de gran
longitud de palabra. Tienen en su gran mayora varios procesadores, trabajando
a la vez (en paralelo) y logran procesar miles de millones de operaciones por
segundo.
Se utilizan para realizar simulaciones de procesos muy complejos con una gran
cantidad de datos (anlisis del genoma humano, simulacin de explosiones
nucleares, predicciones meteorolgicas, etc.). Se instalan en ambientes
controlados debido a su gran generacin de calor.
Macrocomputadoras (Mainframes)
Computadoras de uso general, tambin se instalan en ambientes controlados.
Tiene gran capacidad de procesamiento y capacidad de manejo de puertos de
entrada y salida.
Por tener gran capacidad de almacenamiento, esta computadora es capaz de
tener conexin simultnea con muchas terminales. Se utiliza mucho en las
empresas de gran tamao como bancos, etc.. Es capaz de realizar varios millones
de operaciones por segundo.
Minicomputadoras
Las microcomputadoras aparecieron en el mercado con el propsito de dar
servicio a empresas e instituciones de tamao mas pequeo que las que utilizan
mainframes.
Tiene caractersticas parecidas a las de las mainframes, pero con menores
prestaciones en velocidad, tamao de memoria, capacidad de almacenamiento y
nmero de terminales que puede aceptar.
Memoria
Es la parte de la computadora que almacena los programas (o parte de ellos) y
datos para que el programa que est en funcionamiento cumpla su tarea. Es por
este motivo que esta memoria es de gran velocidad.
Existen dos tipos de memoria:
Memorias DDR
Los mdulos de memoria DDR SDRAM son memorias tipo DIMM (184 contactos y
64 bits), con velocidades de trabajo que van de los 200 a los 400 Mhz. Este tipo de
memoria est siuendo sustituida por la memoria DDR2 (240 contactos y 64bits)
Memorias DDR2
Son mdulos tipo DIMM (240 contactos y 64 bits) y tienen unas velocidades de bus
de memoria real de entre 100MHz y 266MHz
La principal caracterstica de los mdulos de memoria DDR2 es que realizan 4
accesos por ciclo de reloj, lo que hace que la velocidad efectiva del bus de memoria
sea la multiplicacin de la velocidad del bus de memoria real por 4
Esta caracterstica duplica la velocidad del tipo DDR, y su consumo es casi la mitad
que de sta.
Microcontroladores PIC
Controladores y Microcontroladores
Un controlador es un dispositivo electrnico encargado de, valga la redundancia,
controlar uno o ms procesos.
Por ejemplo, el controlador del aire acondicionado, recoger la informacin de los
sensores de temperatura, la procesar y actuar en consecuencia.
Al principio, los controladores estaban formados exclusivamente por
componentes discretos. Ms tarde, se emplearon procesadores rodeados de
memorias, circuitos de E/S, sobre una placa de circuito impreso (PCB).
Actualmente, los controladores integran todos los dispositivos antes
mencionados en un pequeo chip. Esto es lo que hoy conocemos con el nombre de
microcontrolador.
SISTEMAS NUMERICOS
Los sistemas numricos son muy importantes en computacin, aqu veremos los
sistemas en base 2, 8 y 16 que son las que ms se utilizan en computacin; por supuesto
con la relacin entre la base 10 que es la que utilizamos los seres humanos.
SISTEMAS DE NUMERACIN
Un sistema de numeracin es un conjunto de smbolos y reglas que se utilizan para
representar y operar con cantidades. Sistemas Aditivos:
Los sistemas aditivos son aquellos que acumulan los simbolos de todas las unidades,
decenas como sean necesarios hasta completar el nmero. Una de sus caractersticas
es por tanto que se pueden poner los smbolos en cualquier orden, aunque en general se
ha preferido una determinada disposicin. Han sido de este tipo las numeraciones
egipcia, sumeria (de base 60), hitita, cretense, azteca (de base 20), romana y las
alfabticas de los griegos, armenios, judios y rabes.
Sistema Egipcio
Desde el tercer milenio A.C. los egipcios usaron un sistema deescribir los nmeros en
base diez utilizando los geroglficos de la figura para representar los distintos ordenes
de unidades.
Sistema Griego: El primer sistema de numeracin griego se desarroll hacia el 600
A.C. Era un sistema de base decimal que usaba los smbolos de la figura siguiente para
representar esas cantidades.
Para representar la unidad y los nmeros hasta el 4 se usaban trazos verticales. Para el 5,
10 y 100 las letras correspondientes a la inicial de la palabra cinco (pente), diez (deka) y
mil (khiloi). Por este motivo se llama a este sistema acrofnicos.
Sistemas Hbridos
En estos sistemas se combina el principio aditivo con el multiplicativo.
Sistema Chino:
La forma clsica de escritura de los nmeros en China se empez a usar desde el 1500
A.C. aproximadamente. Es un sistema decimal estricto que usa las unidades y las
distintas potencias de 10. Utiliza los ideogramas de la figura:
y usa la combinacin de los nmeros hasta el diez con la decena, centena, millar y
decena de millar para segn el principio multiplicativo representar 50, 700 3000. El
orden de escritura se hace fundamental, ya que 5 10 7 igual podra representar 57 que
75.
Sistema Babilnico:
Entre la muchas civilizaciones que florecieron en la antigua Mesopotmica se
desarrollaron distintos sistemas de numeracin. En el ssss A.C. se invent un sistema de
base 10, aditivo hasta el 60 y posicional para nmeros superiores
Sistema Maya
Los mayas idearon un sistema de base 20 con el 5 cmo base auxiliar. La unidad se
representaba por un punto. Dos, tres, y cuatro puntos servan para 2, 3 y 4. El 5 era una
raya horizontal, a la que se aadan los puntos necesarios para representar 6, 7, 8 y 9.
Para el 10 se usaban dos rayas, y de la misma forma se contina hasta el 20, con cuatro
rayas.
Un sistema de numeracin es un conjunto de reglas y smbolos que permiten representar
de forma nica los nmeros. Esta representacin posibilita la realizacin de sencillos
algoritmos para la ejecucin de operaciones aritmticas.
Los sistemas de numeracin usados en la actualidad son posicinales. El valor de una
cifra depende tanto de qu dgito es como de la posicin que ocupa en el nmero. Base:
Es el nmero de smbolos distintos que se utiliza para representar un nmero en un
sistema de numeracin. Entonces decimos que el sistema de numeracin es de esa base.
Los smbolos de una determinada base van desde el 0 hasta la base b-1.
Coeficiente: El coeficiente determina el valor de cada smbolo dependiendo de la
posicin que ocupe con respecto al punto decimal. Por lo tanto a estos sistemas de
numeracin los llamaremos sistemas de numeracin posicinales, porque el valor de
cada cifra depender del valor absoluto del smbolo y de la posicin relativa que ocupa
con respecto al punto decimal.
Los sistemas de numeracin actuales son sistemas posicinales, en los que el valor que
representa cada smbolo o cifra, depende de su valor absoluto y de la posicin relativa
que ocupa la cifra con respecto al resto.
En los sistemas de numeracin existe un elemento caracterstico que define el sistema y
se denomina base, siendo sta el nmero de smbolos que se utilizan para la
representacin.
Organizacin de datos
En trminos matemticos un valor puede tomar un nmero arbitrario de bits, pero
las computadoras por el contrario, generalmente trabajan con un nmero especfico
de bits, desde bits sencillos pasando por grupos de cuatro bits (llamados nibbles),
grupos de ocho bits (bytes), grupos de 16 bits (words, palabras) y an ms.
Como veremos mas adelante, existe una buena razn para utilizar ste orden.
Bits
La ms pequea cantidad de informacin en una computadora binaria es el bit, ste
solamente es capaz de representar dos valores diferentes, sin embargo sto no
significa que exista una cantidad muy reducida de elementos representables por un
bit, todo lo contrario, la cantidad de elementos que se pueden representar con un
slo bit es infinito, considere sto, podemos representar por ejemplo, cero uno,
verdadero falso, encendido apagado, masculino femenino. Ms an, no
estamos limitados a representar elementos antagnicos, un bit sencillo puede
representar cualesquiera dos valores, por ejemplo, blanco 432, perro caliente. Y
para ir an ms lejos, dos bits adyacentes pueden representar cosas
completamente independientes entre s, lo que se debe tener en cuenta es que un
bit sencillo slo puede representar dos cosas a la vez. Esta caracterstica otorga a
las computadoras binarias un campo infinito de aplicaciones.
Nibbles
Bytes
Todava se puede decir que el byte es la estructura de datos ms importante
utilizada por los procesadores 80x86. Un byte est compuesto de ocho bits y es el
elemento de dato ms pequeo direccionable por un procesador 80x86, sto
significa que la cantidad de datos ms pequea a la que se puede tener acceso en
un programa es un valor de ocho bits. Los bits en un byte se enumeran del cero al
siete de izquierda a derecha, el bit 0 es el bit de bajo orden el bit menos
significativo mientras que el bit 7 es el bit de alto orden el bit ms significativo.
Nos referimos al resto de los bits por su nmero. Observe que un byte est
compuesto de dos nibbles.
Como un byte contiene ocho bits, es posible representar 28, 256 valores
diferentes. Generalmente utilizamos un byte para representar valores numricos en
el rango de 0 ~ 255, nmeros con signo en el rango de -128 ~ +127, cdigos de
caracter ASCII y otros tipos de datos especiales que no requieran valores diferentes
mayores que 256.
Words (palabras)
Una palabra (word) es un grupo de 16 bits enumerados de cero hasta quince, y al
igual que el byte, el bit 0 es el bit de bajo orden en tanto que el nmero quince es
el bit de alto orden. Una palabra contiene dos bytes, el de bajo orden que est
compuesto por los bits 0 al 7, y el de alto orden en los bits 8 al 15. Naturalmente,
una palabra puede descomponerse en cuatro nibbles. Con 16 bits es posible
representar 216 (65,536) valores diferentes, stos podran ser el rengo comprendido
entre 0 y 65,535, como suele ser el caso, de -32,768 hasta +32,767. Tambin
puede ser cualquier tipo de datos no superior a 65,536 valores diferentes.
Cdigo BCD
Para poder compartir informacin, que est en formato digital, es comn utilizar
las representaciones binaria y hexadecimal.
Hay otros mtodos de representar informacin y una de ellas es el
cdigo BCD.
Con ayuda de la codificacin BCD es ms fcil ver la relacin que hay entre un
nmero decimal (base 10) y el nmero correspondiente en binario (base 2)
El cdigo BCD utiliza 4 dgitos binarios (ver en los dos ejemplos que siguen)
para representar un dgito decimal (0 al 9). Cuando se hace conversin de binario
a decimal tpica no hay una directa relacin entre el dgito decimal y el dgito
binario.
Ejemplo 1:
Conversin directa tpica entre un nmero en decimal y uno binario.
8510 = 10101012
La representacin el mismo nmero decimal en cdigo BCD se muestra a la
derecha
Ejemplo 2
Conversin directa tpica entre un nmero en decimal y uno binario.
56810 = 10001110002
La representacin el mismo nmero decimal en cdigo BCD se muestra a la
derecha
Como se puede ver, de los dos ejemplos anteriores, el nmero equivalente decimal
no se parece a la representacin en cdigo BDC.
Para poder obtener el equivalente cdigo BCD de cada cifra de los nmeros
anteriores, se asigna un "peso" o "valor" segn la posicin que ocupa.
11101001 2
1 * 27 + 1 * 26 + 1 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 0 * 21 + 1 * 21 = 128 +
64 + 32 + 0 + 8 + 0 + 0 + 1 = 233
..::[EL SISTEMA OCTAL]::..
Es un sistema de base 8, es decir, con slo ocho smbolos distintos 0,1,2,3,4,5,6,7
.
Por ejemplo:
40712
Los nmeros octales pueden construirse a partir de nmeros binarios agrupando cada
tres dgitos consecutivos de estos ltimos (de derecha a izquierda) y obteniendo su valor
decimal.
Por ejemplo, el nmero binario para 74 (en decimal) es 1001010 (en binario), lo
agruparamos como 1 001 010. De modo que el nmero decimal 74 en octal es 112.
En informtica, a veces se utiliza la numeracin octal en vez de la hexadecimal. Tiene la
ventaja de que no requiere utilizar otros smbolos diferentes de los dgitos.
Es posible que la numeracin octal se usara en el pasado en lugar de la decimal, por
ejemplo, para contar los espacios interdigitales o los dedos distintos de los pulgares.
Esto explicara porqu en latn nueve (novem) se parece tanto a nuevo (novus). Podra
tener el significado de nmero nuevo. [editar]
Fracciones
La numeracin octal es tan buena como la binaria y la hexadecimal para operar con
fracciones, puesto que el nico factor primo para sus bases es 2.
Resultado en
Fraccion Octal
octal
1/2
1/2
0,4
1/3
1/3
0,25252525
peridico
1/4
1/4
0,2
1/5
1/5
0,14631463
peridico
1/6
1/6
0,125252525
peridico
1/7
1/7
0,111111
peridico
1/8
1/10 0,1
1/9
1/11
0,07070707
peridico
1/10
1/12
0,063146314
peridico
+0
1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
3 3 4 5 6 7 10 11 12
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16
Tabla de la multiplicacin en base 8:
*01
2 3 4 5 6 7
0 00 0 0 0 0 0 0
1 01 2 3 4 5 6 7
2 0 2 4 6 10 12 14 16
3 03
6 11 14 17 22 25
4 0 4 10 14 20 24 30 34
5 0 5 12 17 24 31 36 43
6 0 6 14 22 30 36 44 52
7 0 7 16 25 34 43 52 61
El sistema de numeracin ms utilizado actualmente en computacin es el hexadecimal
o base 16, el cual consta de 16 dgitos smbolos 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, A,
2A703
16
0 1 2 3 4 5 6 7 8 9 A B C D E
0 0 1 2 3 4 5 6 7 8 9 A B C D E
1 1 2 3 4 5 6 7 8 9 A B C D E
2 2 3 4 5 6 7 8 9 A B C D E
3 3 4 5 6 7 8 9 A B C D E
F 10
F 10 11
F 10 11 12
4 4 5 6 7 8 9 A B C D E F 10 11 12 13
5 5 6 7 8 9 A B C D E F 10 11 12 13 14
6 6 7 8 9 A B C D E F 10 11 12 13 14 15
7 7 8 9 A B C D E F 10 11 12 13 14 15 16
8 8 9 A B C D E F 10 11 12 13 14 15 16 17
9 9 A B C D E F 10 11 12 13 14 15 16 17 18
A A B C D E F 10 11 12 13 14 15 16 17 18 19
B B C D E F 10 11 12 13 14 15 16 17 18 19 1A
C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B
D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D
F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
8 A C E 10 12 14 16 18 1A 1C 1E 20
9 C F 12 15 18 1B 1E 21 24 27 2A 2D 30
C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40
7 8 9 A B C D E
10
5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 50
6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 60
7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70
8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 80
9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90
A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0
B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5 B0
C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 C0
D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D0
E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 E0
F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 F0
10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100
Tabla de los primeros 16 nmeros
Decimal Binario Octal Hexadecimal
0
10
11
100
101
110
111
1000
10
1001
11
10
1010
12
11
1011
13
12
1100
14
13
1101
15
14
1110
16
15
1111
17
<=
=>
El valor numrico representado en cada caso depende del valor asignado a cada
smbolo. En un ordenador, los valores numricos pueden ser representados por dos
voltajes diferentes y tambin se pueden usar polaridades magnticas sobre un disco
magntico. Un positivo, s, o sobre el estado no es necesariamente el equivalente
al valor numrico de uno; esto depende de la arquitectura usada.
De acuerdo con la representacin acostumbrada de cifras que usan nmeros rabes, los
nmeros binarios comnmente son escritos usando los smbolos 0 y 1. Cuando son
escritos, los nmeros binarios son a menudo subindicados, prefijados o sufijados para
indicar su base, o la raz. Las notaciones siguientes son equivalentes:
100101 binario (declaracin explcita de formato)
100101b (un sufijo que indica formato binario)
100101B (un sufijo que indica formato binario)
bin 100101 (un prefijo que indica formato binario)
1001012 (un subndice que indica base 2 (binaria) notacin)
%100101 (un prefijo que indica formato binario)
0b100101 (un prefijo que indica formato binario, comn en lenguajes de
programacin)
Sistema Octal.Representar un nmero en sistema binario puede ser bastante difcil de leer, as que se
cre el sistema octal. En el sistema Octal (base 8), slo se utilizan 8 cifras
(0,1,2,3,4,5,6,7)
Este Sistema de numeracin una vez que se llega a la cuenta 7 se pasa a 10, etc.
Cuenta hecha en octal: 0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20,21,.. se puede
observar que en este sistema numrico no existen los nmeros: 8 y 9
El sistema de numeracin octal es tambin muy usado en la computacin por tener una
base que es potencia exacta de 2 o de la numeracin binaria. Esta caracterstica hace que
la conversin a binario o viceversa sea bastante simple. El sistema octal usa 8 dgitos
(0,1,2,3,4,5,6,7) y tienen el mismo valor que en el sistema de numeracin decimal.
Fracciones en Hexadecimal.Fraccion Octal
Resultado en
octal
1/2
1/2
0,4
1/3
1/3
0,25252525
peridico
1/4
1/4
0,2
1/5
1/5
0,14631463
peridico
1/6
1/6
0,125252525
peridico
1/7
1/7
0,111111
peridico
1/8
1/10 0,1
1/9
1/11
0,07070707
peridico
1/10
1/12
0,063146314
peridico
Sistema Hexadecimal.El sistema hexadecimal, a veces abreviado como hex, es el sistema de numeracin
posicional de base 16 empleando por tanto 16 smbolos. Su uso actual est muy
vinculado a la informtica y ciencias de la computacin, pues los computadores suelen
utilizar el byte u octeto como unidad bsica de memoria
Tabla del Sistema Decimal, Binario, Octal y Hexadecimal.Decimal Binario Octal Hexadecimal
0
10
11
100
101
110
111
1000
10
1001
11
10
1010
12
11
1011
13
12
1100
14
13
1101
15
14
1110
16
15
1111
17
ARITMTICA BINARIA
Operaciones elementales con nmeros binarios
Suma de nmeros binarios
Resta de nmeros binarios
Complemento a dos
Complemento a uno
Restar con el complemento a dos
Suma en binario
Para aprender a sumar, con cinco o seis aos de edad, tuviste que
memorizar las 100 combinaciones posibles que pueden darse al sumar
dos dgitos decimales. La tabla de sumar, en binario, es mucho ms
sencilla que en decimal. Slo hay que recordar cuatro combinaciones
posibles:
0+1
Ejercicio 1:
Realiza las siguientes sumas de nmeros binarios:
111011 + 110
111110111 + 111001
10111 + 11011 + 10111
Sustraccin en binario
1+1
Ejercicio 2:
Realiza las siguientes restas de nmeros binarios y
comprueba los resultados convirtindolos al sistema
decimal:
111011 - 110
111110111 - 111001
1010111 - 11011 10011
A pesar de lo sencillo que es el procedimiento de restar, es facil
confundirse. Tenemos interiorizado el sistema decimal y hemos
aprendido a restar mecnicamente, sin detenernos a pensar en el
significado del arrastre. Para simplificar las restas y reducir la
posibilidad de cometer errores hay varias soluciones:
i.
1001
1001
1101
010101110010
0101
0111
0010
010000101011
0100
0010
1011
Complemento a dos
El complemento a dos de un nmero
define como:
C2N = 2n N
Veamos un ejemplo: tomemos el nmero N = 1011012, que tiene 6 bits,
y calculemos su complemento a dos:
N = 4510
n=6
26 = 64
Ejercicio 3:
Calcula el complemento a dos de los siguientes
nmeros:
ii.
Complemento a uno
C1N = C2N - 1
y, por la misma razn:
C2N = C1N + 1
Calculemos el complemento a uno del mismo nmero del ejemplo
anterior:
siendo N = 101101, y su complemento a dos C2N = 010011
N = 110100101
obtenemos su complemento a uno invirtiendo ceros y unos, con lo que
resulta:
C1N = 001011010
y su complemento a dos es:
es muy fcil!
Veamos otro ejemplo de clculo de complementos. Sea:
N = 0110110101
El complemento a uno es:
C1N = 1001001010
y el complemento a dos es:
C2N = 1001001011
iii.
Primer ejemplo:
Segundo ejemplo:
Hagamos esta otra resta, 219 23 = 196, utilizando el complemento a
dos:
21910 = 110110112,
2310 = 000101112
C223 = 11101001
El resultado de la resta ser:
11011011 + 11101001 =
111000100
Y, despreciando el bit que se desborda por la izquierda, llegamos al
resultado correcto:
110001002 = 19610
Qu fcil!
Ejercicio 4:
Haz las siguientes restas binarias utilizando la
tcnica del complemento a dos. Al terminar,
comprueba los resultados haciendo la resta en el
sistema decimal:
11010001101 1000111101
10110011101 - 1110101
Multiplicacin binaria
La multiplicacin en binario es ms fcil que en cualquier otro sistema
de numeracin. Como los factores de la multiplicacin slo pueden ser
CEROS o UNOS, el producto slo puede ser CERO o UNO. En otras
palabras, las tablas de multiplicar del cero y del uno son muy fciles de
aprender:
3349 * 13 = 43537
correcto!
Ejercicio 5:
Haz las siguientes multiplicaciones binarias. Al
terminar, comprueba los resultados haciendo las
multiplicaciones en el sistema decimal:
10110101000101 x 1011
10100001111011 x 10011
Divisin binaria
Ejercicio 5:
Haz las siguientes divisiones binarias. Al terminar,
comprueba los resultados haciendo las divisiones en
el sistema decimal:
10110101000101 : 1011
10100001111011 : 10011
EJERCICIOS adicionales
1. Realiza las siguientes sumas de nmeros octales:
365 + 23
2732 + 1265
65 + 1773
2. Suma los siguientes nmeros hexadecimales:
17A + 3C
20F5 + 31B
2E70C + 1AA7F
3. Resta los siguientes nmeros octales:
365 - 23
2732 - 1265
1773 65
4. Realiza las siguientes restas de nmeros hexadecimales:
17A - 3C
20F5 - 31B
2E70C 1AA7F
Operaciones lgicas
and
and
and
and
0
1
0
1
=
=
=
=
0
0
0
1
Las operaciones lgicas se pueden representar con una tabla llamada tabla de
verdad, es parecida a las tablas aritmticas que sirven para sumar multiplicar, la
columna de la izquierda y el rengln superior representan los valores de entrada de
la operacin especificada, el valor encontrado en la interseccin de la columna y el
rengln para un particular par de valores de entrada es el resultado de adicionar
(ANDing) ambos valores. En palabras comunes, la operacin AND se describe as,
"si el primer valor y (and) el segundo valor son 1, el resultado es 1, caso contrario
el resultado es 0".
AND
OR
OR
OR
OR
0
1
0
1
=
=
=
=
0
1
1
1
OR
XOR
XOR
XOR
XOR
0
1
0
1
=
=
=
=
0
1
1
0
1011 0101
1110 1110
--------1010 0100
sta forma de ejecutar bit por bit (bitwise) puede fcilmente ser aplicada a otras
operaciones lgicas. Como hemos definido las operaciones lgicas en trminos de
valores binarios encontrar que es mucho ms fcil de sta manera que utilizando
otras bases, por tanto es recomendable hacer la conversin a formato binario.
0000 0101
1111 1010
1111 1011
1111 1011
0000 0100
0000 0101
Aunque los procesadores 80x86 trabajan con mayor eficacia con tipos de datos
como el byte, la palabra, la palabra doble, ocasionalmente Usted necesitar
trabajar con un tipo de dato que utilize cierto nmero de bits diferente de ocho, 16
32. por ejemplo, considere una fecha de la forma "4/2/88". ste toma tres
valores numricos para representar la fecha, para el mes, el da y el ao. Los
meses, por supuesto, toman valores entre 1 y 12, sto requiere al menos cuatro
bits. Los das tienen un rango de entre 1 y 31 as que se requieren cinco bits para
representar el valor del da, en tanto que para el ao, asumiendo que trabajamos
con slo dos dgitos en el rango de 0 a 99, entonces requerimos siete bits, en total
se necesitan 16 bits para representar la fecha, o sea, dos bytes. En otras palabras,
empaquetamos la representacion de la fecha en dos bytes en lugar de utilizar tres
bytes que son los que hubieran sido necesarios para manejar los datos
separadamente, sto ahorra un byte de memoria para cada fecha almacenada. Los
bits se pueden ordenar de la siguiente manera:
MMMM representan los cuatro bits para el valor del mes, DDDDD son cinco bits para
representar el valor del da, y AAAAAAA son los siete bits para representar el valor
del ao. Cada coleccin de bits representando un elemento de la fecha se llama
campo de bits. Aunque los valores empaquetados son eficientes en materia de
ahorro de memoria, stos son a la vez ineficientes computacionalmente hablando.
la razn de sto es porque se requieren instrucciones adicionales para leer los
diferentes elementos del paquete de datos, stas instrucciones adicionales se
traducen en mayor tiempo de ejecucin del programa, se debe ser cuidadoso al
utilizar paquetes de datos.
El cdigo ASCII
El juego de caracteres ASCII (excluyendo los caracteres extendidos definidos por
IBM) est dividido en cuatro grupos de 32 caracteres. Los primeros 32 caracteres,
del cdigo ASCII 0 hasta el ASCII 1Fh16 (3110) forman un juego especial de
caracteres no imprimibles llamados caracteres de control ya que ejecutan varias
operaciones de despliegue/impresin en lugar de mostrar smbolos, ejemplo de
stos son el retorno de carro que posiciona el llamado cursor al lado izquierdo de la
actual lnea de caracteres, avance de lnea que mueve hacia abajo el llamado cursor
una lnea en el dispositivo de salida. Desafortunadamente, los diferentes caracteres
de control ejecutan diferentes operaciones dependiendo del dispositivo de salida ya
que existe poca estandarizacin al respecto.
El segundo grupo de caracteres comprende varios smbolos de puntuacin,
caracteres especiales y dgitos numricos, los caracteres mas notables de ste
grupo son el caracter de espacio (cdigo ASCII 20h) y los dgitos numricos
(cdigos ASCII 30h al 39h). Observe que los digitos numricos difieren de sus
respectivos valores slo en el nibble de alto orden, restando 30h de un cdigo
numrico ASCII dado se obtiene el equivalente numrico.
El tercer grupo de caracteres ASCII est reservado a las letras maysculas. Los
cdigos ASCII para los caracteres "A" a la "Z" estn en el rango comprendido entre
41h y 5Ah (65 al 90 decimal). Como stos caracteres estn definidos de acuerdo al
Grupo
Caracteres de control
Dgitos y puntuacin
En el cdigo estndar ASCII el bit de posicin siete siempre es cero, esto siginifica
que el juego de caracteres ASCII consume la mitad de la capacidad de
representacin de un byte. IBM utiliza los restantes 128 cdigos de caracter para
representar diferentes smbolos especiales incluyendo caracteres internacionales
(con respecto a EEUU) como letras acentuadas, smbolos matemticos y caracteres
para dibujar lneas. Observe que stos caracteres adicionales no estn
estandarizados como una extensin del cdigo ASCII, sin embargo la firma IBM
tiene suficiente peso de tal manera que prcticamente todas las computadoras
personales basadas en procesadores 80x86 soportan el juego de caracteres
extendidos IBM/ASCII. Esto tambin es vlido para las impresoras.
LENGUAJE ENSAMBLADOR
IMPORTANCIA
Es importante como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de
Mquina, y viceversa; simplemente, es una abstraccin que facilita su uso para los seres humanos. Por otro
lado, la computadora no entiende directamente al Lenguaje Ensamblador; es necesario traducirle a
Lenguaje de Mquina. Pero, al ser tan directa la traduccin, pronto aparecieron los programas
Ensambladores, que son traductores que convierten el cdigo fuente (en Lenguaje Ensamblador) a cdigo
objeto (es decir, a Lenguaje de Mquina. Surge como una necesidad de facilitar al programador la tarea de
trabajar con lenguaje mquina sin perder el control directo con el hardware.
Velocidad
Eficiencia de tamao
Flexibilidad
Por otro lado, al ser un lenguaje ms primitivo, el Ensamblador tiene ciertas desventajas respecto a los
lenguajes de alto nivel:
1.
2.
3.
4.
Tiempo de programacin
Programas fuente grandes
Peligro de afectar recursos inesperadamente
Falta de portabilidad
Velocidad
El proceso de traduccin que realizan los intrpretes, implica un proceso de cmputo adicional al que el
programador quiere realizar. Por ello, nos encontraremos con que un intrprete es siempre ms lento que
realizar la misma accin en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar
traduciendo el programa, cada vez que lo ejecutamos.
De ah nacieron los compiladores, que son mucho ms rpidos que los intrpretes, pues hacen la traduccin
una vez y dejan el cdigo objeto, que ya es Lenguaje de Mquina, y se puede ejecutar muy rpidamente.
Aunque el proceso de traduccin es ms complejo y costoso que el de ensamblar un programa, normalmente
podemos despreciarlo, contra las ventajas de codificar el programa ms rpidamente.
Sin embargo, la mayor parte de las veces, el cdigo generado por un compilador es menos eficiente que el
cdigo equivalente que un programador escribira. La razn es que el compilador no tiene tanta inteligencia, y
requiere ser capaz de crear cdigo genrico, que sirva tanto para un programa como para otro; en cambio, un
programador humano puede aprovechar las caractersticas especficas del problema, reduciendo la generalidad
pero al mismo tiempo, no desperdicia ninguna instruccin, no hace ningn proceso que no sea necesario.
Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un programa para
ordenar una lista tardar cerca de 20 veces ms en Visual Basic (un intrprete), y 2 veces ms en C (un
compilador), que el equivalente en Ensamblador.
Por ello, cuando es crtica la velocidad del programa, Ensamblador se vuelve un candidato lgico como
lenguaje.
Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces ms rpido que un
programa mal hecho en Ensamblador; sigue siendo sumamente importante la eleccin apropiada de algoritmos
y estructuras de datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en el lenguaje que se
desee, y solamente usar Ensamblador cuando se requiere ms optimizacin y no se puede lograr por estos
medios.
Tamao
Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intrpretes generan ms
cdigo mquina del necesario; por ello, el programa ejecutable crece. As, cuando es importante reducir el
tamao del ejecutable, mejorando el uso de la memoria y teniendo tambin beneficios en velocidad, puede
convenir usar el lenguaje Ensamblador. Entre los programas que es crtico el uso mnimo de memoria, tenemos
a los virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, estn escritos en lenguaje
Ensamblador.
Flexibilidad
Las razones anteriores son cuestin de grado: podemos hacer las cosas en otro lenguaje, pero queremos
hacerlas ms eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer
abstracciones, limitan su propia capacidad. Es decir, existen tareas que la mquina puede hacer, pero que un
lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolucin del monitor a
medio programa; es una limitante, impuesta por la abstraccin del GUI Windows. En cambio, en ensamblador es
sumamente sencillo, pues tenemos el acceso directo al hardware del monitor.
Tiempo de programacin
Al ser de bajo nivel, el Lenguaje Ensamblador requiere ms instrucciones para realizar el mismo proceso, en
comparacin con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por parte del programador,
pues es propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin.
Por todo esto, es ms lento el desarrollo de programas comparables en Lenguaje Ensamblador que en un
lenguaje de alto nivel, pues el programador goza de una menor abstraccin.
Tenemos la ventaja de que todo lo que se puede hacer en la mquina, se puede hacer con el Lenguaje
Ensamblador (flexibilidad). El problema es que todo error que podamos cometer, o todo riesgo que podamos
tener, podemos tenerlo tambin en este Lenguaje. Dicho de otra forma, tener mucho poder es til pero tambin
es peligroso.
En la vida prctica, afortunadamente no ocurre mucho; sin embargo, al programar en este lenguaje vern que es
mucho ms comn que la mquina se "cuelgue", "bloquee" o "se le vaya el avin"; y que se reinicialize. Por
qu?, porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones
invlidas, que normalmente no aparecen al usar un lenguaje de alto nivel.
En ciertos casos extremos, puede llegarse a sobrescribir informacin del CMOS de la mquina (no he visto
efectos ms riesgosos); pero, si no la conservamos, esto puede causar que dejemos de "ver" el disco duro, junto
con toda su informacin.
Falta de portabilidad
Como ya se mencion, existe un lenguaje ensamblador para cada mquina; por ello, evidentemente no es una
seleccin apropiada de lenguaje cuando deseamos codificar en una mquina y luego llevar los programas a
otros sistemas operativos o modelos de computadoras. Si bien esto es un problema general a todos los
lenguajes, es mucho ms notorio en ensamblador: yo puedo reutilizar un 90% o ms del cdigo que desarrollo
en "C", en una PC, al llevarlo a una RS/6000 con UNIX, y lo mismo si despus lo llevo a una Macintosh, siempre
y cuando est bien hecho y siga los estndares de "C", y los principios de la programacin estructurada. En
cambio, si escribimos el programa en Ensamblador de la PC, por bien que lo desarrollemos y muchos
estndares que sigamos, tendremos prcticamente que reescribir el 100 % del cdigo al llevarlo a UNIX, y otra
vez lo mismo al llevarlo a Mac.
Intrpretes y complicadores.
Los compiladores, los intrpretes y los ensambladores se encargan de traducir lo que haya
escrito en lenguaje de alto nivel (cdigo fuente) y lo convierten a cdigo objeto (casi
ejecutable).
Complicador
Es un programa que traduce un programa escrito en un lenguaje de alto nivel, por ejemplo
C++, en un programa en lenguaje de mquina que la computadora es capaz de entender y
ejecutar directamente. Un compilador es un tipo especial de programa, en cuanto a que
sus entradas o datos son algn programa y su salida es otro programa. Para evitar
Programa
Fuente
Cdigo
Intermedio
Programa
Objeto
Para cada una de las lneas se ejecuta el siguiente proceso:
1. Anlisis de la instruccin de esa lnea
2. Traduccin de esa lnea (si ya est correcta) a cdigo objeto
3. Ejecucin de esa lnea
Con el intrprete, cada vez que necesitamos ejecutar el programa tenemos que volver a
analizarlo porque no hay cdigo objeto.
Con el compilador, aunque ms lenta la traduccin, slo se realiza una vez.
TRADUCTOR Y SU ESTRUCTURA
QU ES UNA TRADUCTOR?
o
o
ENSAMBLADORES
FUNCIN DE UN ENSAMBLADOR:
La tarea fundamental de un ensamblador es traducir un programa en lenguaje de
ensamblador al cdigo correspondiente en lenguaje de mquina.
o
o
o
o
o
Demasiado complejo.
Comprensin ms profunda de la computadora.
Errores ms frecuentes en el programa.
Mayor tiempo de codificacin.
Difcilmente portable, es decir, un cdigo escrito para un microprocesador en
particular necesita ser modificado muchas veces en su totalidad para poder ser usado en otro
microprocesador.
TIPOS DE ENSAMBLADORES
COMPILADORES
o
o
o
o
2.
o
o
o
3.
o
o
INTERPRETES
JavaScript, BASIC, LISP, Smalltalk y Python son ejemplos de lenguajes que son
normalmente interpretados en vez de compilados.
o
o
o
TASM/MASM.
El Turbo Assembler (TASM), un paquete ensamblador principalmente destinado a la
plataforma del IBM PC y sus compatibles. Fue la oferta de Borland en el mercado de
herramientas de programacin en lenguaje ensamblador para la familia de los
microprocesadores x86. Como se pudiera esperar, trabajaban bien con los compiladores
de lenguaje de alto nivel de Borland para los PC, como Turbo C y Turbo Pascal. Junto
con el resto de suite de lenguajes de programacin Turbo, Turbo Assembler ya no es
mantenido.
El paquete Turbo Assembler vino junto con el enlazador Turbo Linker, y era
interoperable con el depurador Turbo Debugger. Para la compatibilidad con el
ensamblador Microsoft Macro Assembler (MASM) de Microsoft, TASM tambin poda
ensamblar los archivos de cdigo fuente del MASM por medio de su modo MASM. Al
igual que ste, es un ensamblador de alto nivel
/n
/p
/t
/w
/X
/z
/Zi
/Zd
6.4.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
(empleando el ML de MASM 6.X se obtiene directamente el fichero EXE ya que invoca
automticamente al linkador). El linkador permite el uso de libreras de funciones y
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 ayuda 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:
TLINK fich_obj(s), fich_exe, fich_map, fich_libreria, fich_def
Los ficheros no necesarios se pueden omitir (o indicar NUL): para linkar el fichero
prog1.obj y el prog2.obj con la librera math.lib generando PROG1.EXE basta con
ejecutar TLINK prog1+prog2,,,math. Alternativamente se puede indicar TLINK
@fichero para que tome los parmetros del fichero de texto FICHERO, en el caso de
que estos sean demasiados y sea incmodo teclearlos cada vez que se linka. Los
ficheros de texto de extensin MAP contienen informacin til para el programador
sobre la distribucin de memoria de los segmentos.
Sin importar de que microprocesador se trate, los microprocesadores del 8088 al 80486 usan
el modelo de registros del 8086. Los microprocesadores matemticos 80287 al 80487 utilizan
el modelo de registros expandidos del 8087. Para mayor detalle ver los apndices A y B.
Los microprocesadores matemticos estn diseados exclusivamente para efectuar
operaciones aritmticas de una manera ms rpida y precisa bajo el control de otro procesador
razn por la cual se denominan coprocesadores. Estos tambin poseen un juego de
instrucciones de lenguaje de mquina propio.
La diferencia entre los diversos microprocesadores de uso general y los coprocesadores
reside en el nuevo conjunto de instrucciones, registros y sealizadores agregados con cada
nueva liberacin de un procesador superior. Estas adiciones se hicieron con el fin de agregar
un mayor poder de cmputo sin alterar la estructura bsica, para as mantener la
compatibilidad con los desarollos anteriores, tanto de software como de hardware.
La diferencia entre los 8086 y 8088 con los 80186 y 80188 no es muy grande, sta radica en
un grupo de instrucciones que fueron agregadas al 80186 y al 80188. La diferencia entre el
8086 y el 8088, lo mismo que entre el 80186 y el 80188, es el modelo de memoria que usan
ambos procesadores. El 8088 y el 80188 estn diseados como microprocesadores de 8 bits
por lo que el modo de acceso a la memoria es ligeramente distinto pero compatible con el 8086
y el 80186. Esto se ver con ms detalle en un tema posterior.
UN EJEMPLO CLASICO.
En esta parte se describe lo que es el lenguaje ensamblador, no al ensamblador o al
proceso de ensamblado. Aqu se tratar todo lo concerniente con el lenguaje ensamblador y el
conjunto de directivas del Microsoft Macro Assembler v4.0. Si bien esto puede resultar bastente
extenso y complejo, aqu slo se describirn las instrucciones y directivas bsicas.
Para comenzar veamos un pequeo ejemplo que ilustra el formato del programa fuente.
Este ejemplo est completamente desarrollado en lenguaje ensamblador que usa servicios o
funciones de MS-DOS (system calls) para imprimir el mensaje Hola mundo!! en pantalla.
; HOLA.ASM
; Programa clasico de ejemplo. Despliega una leyenda en pantalla.
STACK
SEGMENT STACK
DW
STACK
DATA
64 DUP (?)
ENDS
SEGMENT
SALUDO
DATA
; Segmento de pila
DB
; Segmento de datos
ENDS
CODE
SEGMENT
; Segmento de Codigo
MOV AX,DATA
; Pone direccion en AX
MOV DS,AX
MOV AH,09H
INT
21H
MOV AH,4CH
INT
21H
; Funcion: Terminar
CODE
ENDS
END INICIO
En cuanto a la estructura, todos los archivos fuente tienen la misma forma: cero o ms
segmentos de programa seguidos por una directiva END. No hay una regla sobre la estructura
u orden que deben seguir las diversas secciones o reas en la creacin del cdigo fuente de un
programa en ensamblador. Sin embargo la mayora de los programas tiene un segmento de
datos, un segmento de cdigo y un segmento de stack, los cuales pueden ser puestos en
cualquier lugar.