Hardware: Conceptos básicos

 
Hardware
Modo 13h
Retrazado Vertical
Primitivas
La Paleta
Pantallas Virtuales
Sprites
Tablas Prefedifinidas
Efectos
Texto
Formatos gráficos
Periféricos
Optimizaciones
Herramientas
Cursos
Links
Correo Electrónico
Antes de comenzar en la programación de gráficos, es bueno conocer un poco el funcionamiento de la máquina, o por lo menos tener algunos conocimientos básicos de 
su forma de trabajar, por eso sino conoces nada sobre el funcionamiento interno de un
PC es importante leer lo que hay a continuación.

Si quieres profundizar más en el tema y aprender a programar en ensamblador, puedes bajar un curso de ensamblador en formato PDF.
 
Bajar Curso de Ensamblador
Curso de Ensamblador del 8086/88
 (503 Kb)




Introducción

Cuando aparecieron los primeros computadores existía una memoria de solo 640 Kb (memoria convencional) y el procesador que dominaba en aquella época era el 8086  y 8088 el cual podía direccionar hasta 1 Mb de memoria, ya que el microprocesador era de 16 bits. Añadieron a este diferentes áreas de memoria, para la BIOS, el video, cartuchos ROM, etc. 
Hoy en día  la  configuración de todo PC está organizada en bloques de 64 kb.

Organización de la memoria de un PC
Organización de la memoria de un PC

A000: corresponde a la memoria de la pantalla en los modos gráficos  de las tarjetas EGA y VGA.

B000: Es para las tarjetas de video monocromo MDA y Hercules. También sirve      para la tarjeta CGA. Se utiliza como alojamiento de los modos alfanuméricos.

C000: Se depositan algunas rutinas BIOS, que no forman parte del núcleo original de esta.

D000: Para cartuchos ROM. No se suele utilizar.

E000: Igual que D000.

F000: Aquí se guardan todas la rutinas (funciones) de la ROM-BIOS.

Volver


El Procesador

Para hacer  la programación del sistema, hay  que conocer algunos conceptos que juegan un papel importante, términos como por ejemplo los registros, a los que   hay  que conocer si  se quieren manejar  las interrupciones, ya sean a nivel  DOS o BIOS.

Volver


Los registros

Los registros son muy importantes para el ordenador, sirven para  ayudar al funcionamiento de las instrucciones. Una  definición un poco  más  acertada, sería decir que los registros son como variables internas con las que el computador realiza operaciones, y lleva el control de los programas.

El tamaño de estos registros en un 286 es de 16 bits, pero a partir del 386 estos registros son de 32 bits. Cada uno de estos registros se divide en dos partes de 8 bits cada una (esto es así, por que el DOS trabaja en modo Real, y no  puede direccionar más de 16 bits). Por ejemplo, el registro AX, se divide en AH y AL (H de High y L de Low). Podemos distinguir cinco tipos de registros diferentes:
 

  • Registros Generales: Hay cuatro: AX, BX, CX, y DX. Son  unos registros de 16 bits que  se usan como almacenamiento temporal, para realizar operaciones aritméticas, cada uno de estos se divide en dos partes, la parte alta (AH), y la baja (AL), donde H significa High y L de Low. Tienen un propósito general para el programador.
Registros Generales
  • Registros de dirección (Puntero / Indice): SP, BP, SI y DI. Los  utilizamos para formar direcciones de 20 bits, junto con los registros de segmento CS, DS, SS, y ES.
  • Registros de segmento: CS, DS, SS y ES. Con ellos referenciamos direcciones de memoria.
  • Registro de Puntero de Instrucción: IP (Instruction Pointer). Este lo usa el  PC para “acordarse” en que punto se ha  quedado a partir de la base CS. Va cambiando su valor cada vez que saltamos a un punto del programa.
  • Registro de Bandera (Flag): Sirve  para saber el estado y tener el control del  procesador. Con  este registro  podremos saber, si por ejemplo después  de una suma, el valor excede de 65535 y por tanto no cabe en 16 bits. Estos bits, que pueden valer 0 o 1, indican varias cosas según su valor.
Registro de bandera (FLAG)
Volver


Las interrupciones

Las interrupciones, tal y como indica su nombre, tienen como función interrumpir en medio de un procedimiento, ejecutar un trozo de código y continuar con lo que  se  estaba  haciendo. De esta manera la CPU se ahorra de ir preguntado todo  el rato a los diferentes periféricos si “necesitan” su ayuda (polling). Hay de varios tipos, las que son ejecutadas por el hardware, las del  Sistema Operativo y las iniciadas por el sistema (BIOS). Dentro de estas hay las enmascarable, y las no enmascarables (NMI).

El  B.I.O.S ( Basic Input Output System) tiene una serie de interrupciones, para que  cuando utilicemos alguna de ellas sepamos donde se encuentra. Para eso utilizaremos  una  tabla que nos servirá de “índice” para así obtener la dirección  de la rutina. Esta tabla se aloja en la parte más baja  de la memoria, es decir, en 0000:0000, y tiene una longitud de 256 entrada de 4bytes cada una; 2 bytes de dirección (segmento) y 2 bytes de desplazamiento (offset), o sea, 1 kb en total.

El Bios dispone  de las funciones principales que necesita un programa para la comunicación  con  el hardware del PC y los dispositivos conectados a él.
Hay rutinas de todas clases. Su función más importante, es que permite usar a los programas diferentes periféricos independientemente de las características  del hardware. Esto nos  ahorra mucho tiempo a la hora de programar para diferentes periféricos. O sea, que el Bios es un sistema de comunicación estándar.

A continuación describiré todas las interrupciones de la BIOS y su finalidad de la 00H a la 1BH, pero aunque hay más, no serán comentadas ya que es de uso de la BIOS.
 

INTERRUPCION 00H: División entre cero.

INTERRUPCION 01H: Un solo paso.

INTERRUPCION 02H: Interrupción no enmascarable.

INTERRUPCION 03H: Punto de ruptura.

INTERRUPCION 04H: Desbordamiento.

INTERRUPCION 05H: Imprime pantalla.

INTERRUPCION 08H: Sistema del cronómetro.

INTERRUPCION 09H: Interrupción del teclado.

INTERRUPCION 0BH,
INTERRUPCION 0CH: Estas dos son para el Control de Dispositivo Serial.

INTERRUPCION 0DH,
INTERRUPCION 0FH: Estas son para el Control del Dispositivo Paralelo.

INTERRUPCION 0EH: Control disco flexible.

INTERRUPCION 10H: Servicios de video.

INTERRUPCION 11H: Obtener equipo instalado. Determinación equipo.

INTERRUPCION 13H: Obtención tamaño memoria.

INTERRUPCION 14H: Comunicaciones i/o.

INTERRUPCION 15H: Servicios sistema.

INTERRUPCION 16H: Entrada teclado.

INTERRUPCION 17H: Salida impresora.

INTERRUPCION 18H: Entrada basic de rom.

INTERRUPCION 19H: Cargador de arranque.

INTERRUPCION 1AH: Lee y pone hora.

INTERRUPCION 1BH: Tomar control en interrupción del teclado.


Estas son las interrupciones del BIOS, pero hay más, las del sistema operativo, MS-DOS en nuestro caso. Cada  interrupción se divide en funciones, que son los diferentes servicios a  los  que  tenemos  acceso. Para llamar a una interrupción utilizamos los registros, donde en AX indicaremos por norma general el número de interrupción, y en los demás registros los parámetros.

Volver


La Programación del Sistema

A  la  hora de programar una aplicación, la forma de tratar la información, ordenarla, y  representarla es siempre igual para todos los computadores, los algoritmos utilizados no varían, los podemos describir de forma muy general. Pero lo que sí varía y que depende del sistema, es la forma en la que se debe tratar la información que entra en un programa y la forma en la que sale, esto sí es realmente la programación de sistemas, en la que se deben conocer como acceder al teclado, pantalla, impresora, archivos, etc.

Una  de las cosas mas importantes en este tipo de programación es el acceso al hardware. Debemos  saber por donde nos movemos si queremos que nuestra aplicación funcione correctamente.

Aunque la programación de sistemas esté tan fuertemente ligada al hardware, no  significa que tengamos que rompernos  la cabeza para  poner un "¡Hola!" en  pantalla, tenemos unas ayudas que nos simplifican mucho la vida. Esto es las funciones de el BIOS y del Sistemas Operativo. Estas rutinas (interrupciones) nos ahorrará mucho trabajo, ya que cada uno de  estos servicios, conlleva más tiempo mediante la programación directa al hardware. 

Resumiendo, tenemos  que las diferentes capas a la que una aplicación puede  acceder son tres:

Aplicación

 Para decidirnos  por uno de los tres, se tendrá que pensar en el objetivo de  la aplicación que se está desarrollando: si es un juego se tendrá que ir directo al hardware del computador, por que si se hace  mediante rutinas  BIOS,  el juego quedará demasiado lento. Esto no quiere  decir que  las rutinas de la BIOS sean   lentas de por si, lo  que  pasa es que son “universales” y llevan muchos tipos de comprobaciones. Por otro lado, si  lo que se quiere  es hacer una aplicación en modo texto, simplemente usaremos las funciones que nos pone a disposición nuestro lenguaje de programación favorito.
 

Volver

 
Página principal
Siguiente
1
Hosted by www.Geocities.ws

1