Anda di halaman 1dari 4

Aula Macedonia

C urso de Programacin en Ensamblador para PC

Artculo realizado por


Ricardo Amil "Artemis"

Captulo 2.
Tipos de datos y operaciones binarias.

En el nmero anterior se explic el sistema de numeracin de un PC. Ahora se podrn ver los diferentes tipos de datos que en ste se usan como unidad de medicin:

1 BIT: Es la mnima parte de informacin existente. Es una cifra binaria (puede ser 1 0). Rango decimal = de 0 a 1.

1 NIBBLE = 4 BITS: Es la base del sistema hexadecimal, ya que: 1111 bin = 15 dec. = F hex. Puede ser representado con 1 dgito hexadecimal. Ej: 0Fh. Rango decimal = de 0 a
15.

1 BYTE = 2 NIBBLES = 8 BITS: Es la base estndar para la representacin de datos. Puede ser representado con 2 dgitos hexadecimales. Ej: 0FFh. Rango decimal = de 0 a 255.

1 WORD = 2 BYTES = 4 NIBBLES = 16 BITS: Puede ser representado con 4 dgitos hexadecimales. Ej: 0FFFFh. Rango decimal = de 0 a 65.535.

1 DWORD = 2 WORDS = 4 BYTES = 8 NIBBLES = 32 BITS: Es una palabra doble (DOUBLE-WORD). Puede ser representado por 8 dgitos hexadecimales. Ej: 0FFFFFFFFh.
Rango decimal = de 0 a 4.294.967.295.

1 KILOBYTE = 256 DWORDS = 512 WORDS = 1.024 BYTES = 2048 NIBBLES = 8192 BITS: Aunque su nombre despiste, el kb. es un conjunto de 1.024 y no de 1.000 bytes.
Puede ser representado por 2.048 dgitos hexadecimales. Ej: JA, JA!!! Rango decimal = de 0 a 28192.

1 MEGABYTE = 1.024 KILOBYTES = 262.144 DWORDS = 524.288 WORDS = 1.048.576 BYTES = 2.097.152 NIBBLES = 8.388.608 BITS: Puede ser representado por 2.097.152
dgitos hexadecimales (esto lo hago para que quede bien claro que cada nibble representa un dgito hexadecimal). Rango decimal = de 0 a 28.388.608 (esto lo hago para que quede
bien claro que el nmero de bits representa al exponente de la base 2)(la base es 2 porque cada bit puede albergar solo dos valores decimales, 1 0).

1 GIGABYTE = 1.024 MEGABYTES = 1.048.576 KILOBYTES = 268.435.456 DWORDS = 536.870.912 WORDS = 1.073.741.824 BYTES = 2.147.483.648 NIBBLES =
8.589.934.592 BITS: Por cuntos dgitos hexadecimales puede ser representado?... Muy bien!!! (2.147.483.648). Rango decimal = de 0 a 28.589.934.592.

1 TERABYTE = 1024 GIGABYTES = 1.048.576 MEGABYTES = 1.073.741.824 KILOBYTES = 274.877.906.944 DWORDS = 549.755.813.888 WORDS = 1.099.511.627.776 BYTES
= 2.199.023.255.552 NIBBLES = 8.796.093.022.208 BITS: Puede ser representado por 2.199.023.255.552 dgitos hexadecimales. Rango decimal = de 0 a 28.796.093.022.208.

Guarda paginas w eb como PDF con http://www.htmlapdf.com! desbloquear Netflix


OPERACIONES BINARIAS: A continuacin se explicarn las cuatro operaciones fundamentales de los dgitos binarios. Recordar que 0 = "falso" y 1 = "verdadero".

Operacin AND ("Y" lgico): Se toman dos dgitos binarios, y si los dos son verdaderos el resultado tambin lo es.

Operacin OR ("O" lgico): Se toman dos dgitos binarios, y si los al menos uno es verdadero el resultado
tambin lo es:

Operacin XOR (OR exclusivo): Se toman dos dgitos binarios, y si slo uno de los dos es verdadero el resultado tambin lo es:

Operacin NOT (negacin): Se toman slo un dgito binario y el resultado ser el valor opuesto:

Guarda paginas w eb como PDF con http://www.htmlapdf.com! desbloquear Netflix


SEGMENTOS Y DESPLAZOS (segments & offsets):

Cuando se dise el 8088, los ingenieros pensaron que nunca se usara ms memoria que 1 megabyte. Entonces lo construyeron de manera que no se poda acceder a memorias
mayores que 1 MB. Para acceder al MB se necesitan 20 bits, pero el problema es que un registro tena solo 16 bits y si se usaban dos registros eran 32 bits, demasiado. Entonces
decidieron que usaran 2 registros, pero que no conformaran 32 bits, que daran direcciones de 20 bits. Como ya veremos ms adelante, cada registro de 16 bits posee dos
registros de 8 bits: 1 alto y 1 bajo. Si tenemos 32 bits, tenemos 4 bytes, 2 bytes de cada registro de 16 bits. Pensando que los dos bytes inferiores pueden tener un valor mximo
de 0FFFFh (el cero delante se usa para que el ensamblador entienda que no es una cadena sino un nmero y la h es el smbolo de hexadecimal), 4 nibbles; esto nos da acceso a
(0FFFh = 65535d) 65535 bytes de memoria, a esto se le llama bloque. Estos 2 bytes son el "offset" o desplazo.

Ahora tenemos 2 bytes del registro superior o de segmento, que se sitan en los 16 bits superiores de la direccin de 20 bits, quedando los 4 bits inferiores a 0, o sea que el valor
se multiplic por 16 ya que 10000b = 16d. Ahora se le suma a este valor el offset, y el resultado es la direccin real de 20 bits, de sta manera se pudieron aprovechar 32 bits de
los 2 registros para formar una direccin de 20 bits. Ejemplo:

Recordar que para expresar una direccin de memoria se usa segment:offset. Hay direcciones fsicas o reales que pueden ser accedidas con diferentes valores de segment:offset,
por ejemplo 0FFF:0001 = 0000:FFF1.

El valor mximo de la direccin real (20 bits) es de 1048575 (1 MB) y aunque los dos registros con su mximo valor dieran por resultado: 65535*16 + 65535 = 1114095 (65520 bytes
ms que 1MB), solo hay 20 bits y no 21 para acarrear el bit ms significante. Para tener este 21er bit se necesita activar algo llamado la lnea A20, ms conocida como memoria
alta (la administra en DOS el "himem.sys"), pero esto no es de importancia.

Guarda paginas w eb como PDF con http://www.htmlapdf.com! desbloquear Netflix


En el prximo nmero veremos los registros y su utilidad.

LTIMA REVISIN EN JULIO DE 1999

[Aula Macedonia]

[Curso de Ensamblador]

AULA MACEDONIA
X
MACEDONIA Magazine

Guarda paginas w eb como PDF con http://www.htmlapdf.com! desbloquear Netflix