Introducción al hardware de la PC

     Un programa en lenguaje ensamblador consiste en uno o más segmentos para definir datos y almacenar instrucciones de máquina y un segmento llamado stack (o pila) que contiene direcciones almacenadas.  

Bit

     La memoria del computador se compone de unidades de almacenamiento llamadas bits, que tienen dos estados posibles (representados por 0 y 1), es decir, sirven para almacenar números expresados en binario. La palabra bit proviene de la contracción binary digit (dígito binario). Así pues, todo lo que reside en la memoria del computador (códigos de instrucción y datos) están expresados por números binarios, a razón de un dígito binario por bit.

Bytes
    
      Los bits de la memoria se agrupan en bytes (u octetos), a razón de 8 bits por byte. Un byte es realmente la unidad de direccionamiento, es decir, podemos referirnos a cada byte mediante un número que es su dirección.

    La cantidad de memoria de un computador se mide en Kilobytes (cuya abreviatura es Kbyte, Kb o simplemente K), siendo:

                  1K = 1024 bytes

     Un byte puede almacenar números binarios de hasta ocho dígitos, lo cual corresponde a un rango de valores en decimal desde 0 hasta 255 inclusive.




Nibble

    La agrupación de los cuatro bits (superiores o inferiores) de un byte se llama nibble. Por lo tanto, un byte contiene dos nibbles. El que corresponde a los bits 0 al 3 se llama nibble inferior y el que corresponde a los bits 4 al 7 nibble superior.

     El nibble es una unidad de trabajo mucho más cómoda que el bit. En cada nibble se almacena un dígito
hexadecimal.


Caracteres ASCII.

  En los sistemas de numeración estudiados en apartados anteriores solamente es posible representar información numérica. Pero en muchos sistemas digitales, tanto de control como de proceso de datos, es necesario representar información alfabética y además algunos signos especiales, lo que ha dado lugar a la existencia de códigos alfanuméricos.

     De entre los diversos códigos alfanuméricos existentes, ha sido definido como código internacional el ASCII (American Standard Code for Information Interchange). En el mismo se representan todos los caracteres numéricos y alfabéticos así como ciertos caracteres de control, existiendo un código para cada carácter.

El Procesador

    Un elemento importante del hardware de la PC es la unidad del sistema, que contiene una tarjeta de sistema, fuente de poder y ranuras de expansión para tarjetas opcionales. Los elementos de la tarjeta de sistema son un microprocesador Intel (o equivalente), memoria de sólo lectura (ROM) y memoria de acceso aleatorio (RAM).
     El cerebro de la PC y compatibles es un microprocesador basado en la familia 8086 de Intel, que realiza todo el procesamiento de datos e instrucciones. Los procesadores varían en velocidad y capacidad de memoria, registros y bus de datos. Un bus de datos transfiere datos entre el procesador, la memoria y los dispositivos externos.

La familia de microprocesadores 80x86

8088/80188:  Estos procesadores tienen registros de 16 bits y un bus de datos de 8 bits, y pueden direccionar hasta un millón de bytes en memoria interna. Los registros pueden procesar dos bytes al mismo tiempo, mientras que el bus de datos sólo puede transferir un byte a la vez. El 80188 es un 8088 con mayor potencia por la adición de unas cuantas instrucciones. Ambos procesadores corren en lo que se conoce como modo real, esto es, un programa a la vez.

8086/80186: Estos procesadores son similares a los 8088/80188, pero tienen un bus de datos de 16 bits y corren más rápido. El 80186 es un 8086 más potente con unas cuantas instrucciones adicionales.

80286: Este procesador puede correr más rápido que los anteriores y direccionar hasta 16 millones de bytes. Puede correr en modo real o en modo protegido para multitareas.

80386: Este procesador tiene registros de 32 bits y un bus de datos de 32 bits, y puede direccionar hasta cuatro mil millones de bytes en memoria. Puede correr en modo real o en modo protegido para multitareas.

80486: Este procesador también tiene registros de 32 bits y un bus de datos de 32 bits (aunque algunos clones tienen un bus de datos de 16 bits) y está diseñado para mejorar el desempeño. Puede correr en modo real o en modo protegido para multitareas.

Unidad de ejecución y unidad de interfaz del bus




Memoria 

     El programa o secuencia de instrucciones, que debe seguir la máquina para realizar el procesamiento de los datos, está almacenado en una parte de la memoria, denominada memoria o segmento de instrucciones para diferenciarla del resto de la misma, que se emplea para guardar datos y resultados en forma temporal.
    La información, que recibe la memoria a través del bus de direcciones, es un conjunto de bits lógicos, tantos como líneas tenga el bus, que seleccionan la posición de memoria a la que se accede. El decodificador de direcciones se encarga de elegir una posición de la matriz de la memoria, descodificando la información que ha llegado por el bus de direcciones. Como generalmente la memoria está constituida físicamente por mas de un chip, será tarea del decodificador de direcciones habilitar al chip correspondiente.
    La microcomputadora posee dos tipos de memoria interna: memoria de acceso aleatorio (RAM) y memoria de sólo lectura (ROM). Los bytes en memoria se numeran en forma consecutiva, iniciando con 00, de modo que cada localidad tiene un número de dirección único.

Memoria ROM

     La memoria ROM (Read Only Memory) o memoria de sólo lectura también permite el acceso directo a cada uno de los elementos que la componen, pero la información en ella contenida puede ser leída pero no alterada. Debido a que conserva la información, aún en el caso de ausencia de energía, se usa para almacenar las rutinas de mas bajo nivel, que sirven para el arranque del sistema.

Memoria RAM

     La memoria RAM (Random Access Memory) o memoria de acceso al azar debe su nombre al hecho de permitir el acceso a cualquiera de las localidades de memoria en forma directa,pero su característica más importante es la de que la información contenida en cada una de las localidades puede ser leída y/o alterada. En ella se va a almacenar, por lo tanto, el sistema operativo y los programas del usuario, así como la información temporal que estos manejen.
  A la memoria RAM se le suele llamar memoria volátil, por el hecho de que la información en ellas almacenada, se pierde en ausencia de energía.

Buses

      Los buses no son más que los conductores que interconectan cada una de la partes que componen al
computador. A través de ellos viaja información que según su función permite clasificarlos en tres tipos: bus
de Datos, bus de Direcciones y bus de Control.

Bus de datos

     El bus de datos se encarga de transferir información entre el CPU, la memoria y los periféricos. Es bidireccional, ya que la información puede fluir en ambos sentidos, es decir, desde o hacia el microprocesador.

Bus de direcciones

   El bus de direcciones permite seleccionar la localidad de memoria o el periférico que el CPU desea accesar. Este bus es unidireccional ya que la información a través de él siempre fluye desde el microprocesador.

Bus de control

     En el Bus de Control se encuentran las diferentes señales encargadas de la sincronización y control del
sistema. Su naturaleza es unidireccional aun cuando existen señales que salen del microprocesador así como
otras que entran al microprocesador. Ejemplos de las señales de control son:

               WR (escritura)
               RD (lectura)
               WAIT (espera)
               READY (listo), etc.

Segmentos 
    Un segmento en modo real puede ser de hasta 64K. Se puede tener cualquier número de segmentos; para direccionar un segmento en particular basta cambiar la dirección en el registro del segmento apropiado. Los tres segmentos principales son los segmentos de código, de datos y de la pila.

Segmento de código

     El segmento de código (CS) contiene las instrucciones de máquina que son ejecutadas. Por lo común, la primera instrucción ejecutable está en el inicio del segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecución del programa. Como su nombre indica, el registro del CS direcciona el segmento de código. Si su área de código requiere más de 64K, su programa puede necesitar definir más de un segmento de código.

Segmento de datos

   El segmento de datos (DS) contiene datos, constantes y áreas de trabajo definidos por el programa. El registro del DS direcciona el segmento de datos. Si su área de datos requiere de más de 64K, su programa puede necesitar definir más de un segmento de datos.

Segmento de la pila

    En términos sencillos, la pila contiene los datos y direcciones que usted necesita guardar temporalmente o para uso de sus "llamadas" subrutinas. El registro del segmento de la pila (SS) direcciona el segmento de la pila.

y hay un cuarto segmento que es el segmento extra

Segmento extra

     El segmento extra (ES), puede ser usado para almacenar información. Es frecuentemente usado para
operaciones de transferencia de contenidos de bloques de memoria. Las instrucciones para
manipulación de cadenas del 80x86, emplean este segmento.

Registros

   Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre. Los bits, por convención, se numeran de derecha a izquierda, como en:
... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Registros de segmento

       Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual. Como hemos dicho, un segmento se alinea en un límite de párrafo y su dirección en un registro de segmento supone cuatro bits 0 a su derecha.

Registro CS. El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro de apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución. Para propósitos de programación normal, no se necesita referenciar el registro CS.

Registro DS. La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos.

Registro SS. El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada. Para propósitos de programación normal, no se necesita referenciar el registro SS.

Registro ES. Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.

Registros FS y GS. Son registros extra de segmento en los procesadores 80386 y posteriores.





No hay comentarios.:

Publicar un comentario

Ejemplo sencillo

Ejemplo de separar numero pares de impares                         .model small .stack 100h      ;tamaño de l...