Lenguajes de Bajo Nivel. REGISTROS DE PROPÓSITO GENERAL
Enviado por karlo • 16 de Noviembre de 2017 • 10.121 Palabras (41 Páginas) • 615 Visitas
...
BP (APUNTADOR DE BASE). - Se usa para manipular la pila sin afectar el registro de segmento SS
DI (INDICE DESTINO). - Se usan ciertos nodos de direccionamiento indirecto. También puede guardar un valor de direccionamiento indirecto. También se usa para manejar bloques de cadena en memoria.
SI (INDICE FUENTE). - Se usa igual que el DI, pero en este caso es la fuente y el DI es el destino.
IP (APUNTADOR DE INSTRUCCIONES). - Se utiliza para direccionar a la siguiente instrucción que va a ejecutar el MP (Micro Procesador)
REGISTROS DE SEGMENTO
Estos registros direccionados en la memoria junto con otros registros en el Micro Procesador.
CS (SEGMENTO DE CODIGO) Es una sección de la memoria que tiene los programas y procesamientos utilizados por los programas. El registro de segmento de código define la dirección inicial de la sección de memoria de 64 KB de que consta el CS.
DS (SEGMENTO DE DATOS). - Es una sección de memoria que contiene la mayor parte de datos utilizados en un programa. Se les accesa en el DS y desplazamiento a un contenido de otros registros que tienen la dirección de desplazamiento.
SS (SEGMENTO DE PILA). - Define la superficie de la memoria utilizada por la pila. - La dirección del punto inicial de entrada a la pila, se determina por el registro del apuntador de la pila. El registro DP también direcciona los datos que hay dentro del segmento de pila.
ES (SEGMENTO EXTRA). - Lo utilizan algunas instrucciones para cadena.
REGISTRO DE BANDERAS
Es un registro que guarda información sobre el estado del MP después de la ejecución de ciertas instrucciones específicas, generalmente aritméticas. A continuación, se describe el significado de cada byte del registro de banderas.
TODAS LAS BANDERAS APAGADAS
NV UP DI NZ NA PO NC
TODAS LAS BANDERAS PRENDIDAS
OV DN EI NG ZR AC PE CY
Significado de Bytes:
- OVERFLOW NV = NO HAY DESBORDAMIENTO
OV= SI LO HAY
- DIRECCION UP = HACIA ADELANTE
DN= HACIA ATRÁS
- INTERRUPTS DI = DESCATIVADAS
EI = ACTIVADAS
- SIGN PL = POSITIVO
NG = NEGATIVO
- ZERO NZ = NO ES CERO
ZR = SI LO ES
- AUXILIARY NA = NO HAY ACARREO AUXLIRIAR
AC = HAY ACARRERO AUXILIAR
- PARTYS PO = PARIDAD NON
PE = PARIDAD PAR
- CARRY NC = NO HAY ACREO
CY = SI LO HAY
ARQUITECTURA INTERNA DEL MICROPOCESADOR
Antes de escribir un programa o analizar cualquier instrucción, es necesario conocer la configuración interna del MP.
Se detalla la arquitectura interna visible para el programa correspondiente al MP 80-86. También se detallan las funciones y objetivos de cada uno de los registros internos.
MODELO DE PROGRAMACIÓN
El modelo de programación del MP 8086 se considera visible para el programa, ya que sus registros son utilizados durante la programación de aplicaciones y son especificadas por las instrucciones, el diagrama anterior visto en clase ilustra el modelo de programación del MP 80-86, este posee una arquitectura interna de 16 bites.
El arreglo de registros interno consta de 3 grupos de registros:
Registro de uso general, Apuntador y Registros de Índice y Registros de segmentos. Además de esos grupos hay también un Registro de Banderas que señala las condiciones respecto al funcionamiento de la unidad aritmética lógica (ALU).
LA PILA (STACK)
Para un programa con la extensión .EXE se debe definir de manera explícita la pila (cada elemento de dato en la pila es de una palabra, es decir 2 bytes). El registro SS, como es inicializado por el DOS, contiene la dirección de inicio de la pila.
Inicialmente el SP contiene el tamaño de la pila un valor que apunta al byte pasando el final de la pila. La pila difiere de otros segmentos en su método de almacenar los datos: empieza en la localidad más alta y almacena los datos hacia abajo por la memoria.[pic 12]
LA PILA
La instrucción PUSH (entre otras) disminuye el SP en 2 hacía abajo, hacía la siguiente palabra almacenada en la pila y coloca (o empuja PUSH) un valor allí. La instrucción POP (entre otras) regresa el valor de la pila e incrementa el SP en 2 arriba, hacía la siguiente palabra almacenada.
El siguiente ejemplo ilustra como meter el contenido de los registros AX, BX a la pila y la subsecuente extracción de ellos.
Suponga que AX contiene 015AH, el BX contiene 03D2H y el SP contiene 28
1.- Al comenzar, la pila está vacía y se ve así.[pic 13]
2.- PUSH AX: Disminuye en 2 (a 26H) y almacena el contenido de AX, 015AH, en la pila: observe que la operación invierte la secuencia de bytes almacenados, de modo que 015AH se convierte en 5A01 [pic 14]
*primero entra la parte baja porque coincide ab con 0 bytes y AH con 64 bytes baja con baja y alta con alta (por eso se invierten) *
3.- PUSH BX: Disminuye el SP en 2 (a 24H) y almacena el contenido de BX 03D2H en la pila:[pic 15]
4.- POP BX: Regresa la palabra que se encuentra en la pila en donde apunta el SP y la envía al registro BX e incrementa el SP en 2 (a 26H), el BX ahora contiene 03D2H, con los bytes correctamente ordenados.
5.- POP AX: Regresa la palabra que se encuentra en la pila, en donde apunta el SP y la envía
...