Banderas, Segmentos, Direccionamiento e Interrupciones en Microprocesadores

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,44 KB

De estas nueve banderas, seis de ellas cambian después de ejecutar muchas de las instrucciones aritméticas y lógicas. Estas seis banderas son:

  • C (Acarreo): Indica un acarreo después de una suma o un préstamo después de una resta. La bandera de acarreo también indica condiciones de error en ciertos programas y procedimientos.
  • P (Paridad): Es un cero para una paridad impar y un 1 para una paridad par.
  • A (Acarreo auxiliar): Indica un acarreo después de una suma o un préstamo después de una resta del bit 3 al bit 4 en el resultado.
  • Z (Cero): Indica que el resultado de una operación aritmética o lógica es cero. Si Z = 1, el resultado es cero y si Z = 0, el resultado no es cero.
  • S (Signo): Indica el signo aritmético del resultado después de una suma o una resta. Si S = 1, el resultado es negativo. Si S = 0, el resultado es positivo.
  • O (Sobreflujo): Es una condición que ocurre cuando se suman o se restan números con signo. Un sobreflujo indica que el resultado ha excedido la capacidad de la máquina.

Las otras tres banderas se utilizan para controlar ciertas características del microprocesador. Esas tres banderas y su uso son:

  • T (Trampa): Este modo es utilizado por los depuradores para ejecutar las instrucciones una a la vez y permitir observar el efecto de la instrucción sobre los registros y la memoria.
  • I (Interrupción): El estado de esta bandera se controla con las instrucciones sti (habilitar interrupciones) y cli (desactivar las interrupciones).
  • D (Dirección): Controla la selección de autoincremento o autodecremento de los registros DI o SI durante las instrucciones de cadenas y arreglos.

Segmentos y Direccionamiento

Un segmento es un área especial de memoria en un programa que comienza en un límite de párrafo, es decir, en una posición de memoria divisible entre 16 (10H).

En el 8086 se definen cuatro segmentos:

  • DS = Segmento de Datos
  • SS = Segmento de Pila
  • CS = Segmento de Código
  • ES = Segmento Extra

Todas las direcciones de memoria están referidas a la dirección de comienzo de algún segmento. La distancia en bytes desde la dirección de inicio del segmento se define como el offset o desplazamiento.

Nota: Un programa puede tener uno o varios segmentos, los cuales pueden comenzar en casi cualquier lugar de la memoria, variar en tamaño y estar en cualquier orden.

Estos procesadores tienen 27 modos de direccionamiento:

  1. Direccionamiento inherente (el operando está implícito en la instrucción, por ejemplo, en la multiplicación uno de los operandos siempre es AX).
  2. Direccionamiento a registro (el operando es un registro del microprocesador).
  3. Direccionamiento inmediato (el operando es un número que se encuentra en la misma instrucción).

Interrupciones

¿Qué son las interrupciones?

Son rutinas (o conjuntos de instrucciones) definidas por el procesador, el sistema básico de entrada y salida (BIOS) y el sistema operativo (DOS), que se ejecutan al ser invocadas por un programa (interrupciones de software) o por un evento detectado por el hardware del equipo (interrupciones de hardware).

Resumiendo, son de dos tipos:

  • Hardware: Construido dentro del BIOS.
  • Software: Construido por el S.O.

¿Para qué sirven?

Se utilizan para controlar, manejar y comunicar a los programas con el hardware de la computadora y el sistema operativo, p.e.:

  • Manejo de dispositivos de entrada y salida.
  • Control de programas.
  • Control del sistema de archivos, etc.

¿Dónde se encuentran?

Se encuentran en la parte baja de la memoria, a partir de la dirección 0000:0000 y hasta la dirección 0000:0400. Esta área es denominada tabla o vector de interrupciones.

¿Cómo se identifican?

Las interrupciones se identifican por un número en hexadecimal (p.e. 10H).

¿Cómo se ejecutan desde un programa en lenguaje ensamblador?

En lenguaje ensamblador, una interrupción se ejecuta con el uso de la instrucción INT seguida de la interrupción que queremos ejecutar. Las interrupciones de hardware no se pueden llamar.

Entradas relacionadas: