Introducción al hardware de la PC (continuacion)

Registro de apuntador de instrucciones

      El registro apuntador de instrucciones (IP) de 16 bis contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP está asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se está ejecutando actualmente. Por lo común, usted no refiere el registro IP en un programa, pero, para probar un programa, sí puede cambiar su valor por medio del programa DEBUG del DOS. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.
        En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H. Para encontrar la siguiente instrucción que será ejecutada, el procesador combina las direcciones en el CS y el IP:

       Segmento de dirección en el registro CS: 25A40H
             Desplazamiento de dirección en el registro IP: + 412H
Dirección de la siguiente instrucción: 25E52H

Registros apuntadores

      Los registros SP (apuntador de la pila) y BP (apuntador base) están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila.

Registro SP. El apuntador de la pila de 16 bits está asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila. Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits, el registro ESP. El sistema maneja de manera automática estos registros.
       En el ejemplo siguiente, el registro SS contiene la dirección de segmento 27B3[0]H y el SP, el desplazamiento 312H. Para encontrar la palabra actual que está siendo procesada en la pila, la computadora combina las direcciones en el SS y el SP:
Dirección de segmento en el registro SS: 27B30H
                                            Desplazamiento en el registro SP:            +  312H
                                            Dirección en la pila:                                 27E42H

Registro BP. El BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía la pila. Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP.

Registros índice

      Los registros SI y DI están disponibles para direccionamiento indexado y para sumas y restas.

Registro SI. El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI está asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el ESI.

Registro DI. El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI está asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado de 32 bits, el EDI.

Registros de propósito general

     Los registros de propósito general AX, BX, CX y DX son los caballos de batalla del sistema. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El último byte de la izquierda es la parte "alta", y el último byte de la derecha es la parte "baja". Por ejemplo, el registro CX consta de una parte CH (alta) y una parte CL (baja), y usted puede referirse a cualquier parte por su nombre. Las instrucciones siguientes mueven ceros a los registros CX, CH y CL, respectivamente.

     Los procesadores 80386 y posteriores permiten el uso de todos los registros de propósito general, más sus versiones ampliadas de 32 bits: EAX, EBX, ECX y EDX. Para poder usar los registros extendidos se debe especificar en el programa el procesador a usar porque sino arrojara un error en los registros

Registro AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones generan código más eficiente si se refieren al AX en lugar de a los otros registros.

Registro BX. El BX es conocido como el registro base ya que es el único registro de propósito general que puede ser un índice para direccionamiento indexado. También es común emplear el BX para cálculos.

Registro CX. El CX es conocido como el registro contador. Puede contener un valor para controlar el número de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la derecha o hacia la izquierda. El CX también es usado para muchos cálculos.

Registro DX. El DX es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren su uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos.

Registro de banderas

    De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores 8086, y sirven para indicar el estado actual de la máquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas de cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente. En resumen, los bits de las banderas comunes son como sigue:

OF (overflow, desbordamiento). Indica desbordamiento de un bit de orden alto (más a la izquierda) después de una operación aritmética.

DF (dirección). Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.

IF (interrupción). Indica que una interrupción externa, como la entrada desde el teclado, sea procesada o ignorada.

TF (trampa). Permite la operación del procesador en modo de un paso. Los programas depuradores, como DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo, para examinar el efecto de esa instrucción sobre los registros y la memoria.

SF (signo). Contiene el signo resultante de una operación aritmética (0 = positivo y 1 = negativo).

ZF (cero). Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero). 

AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de ocho bits, para aritmética especializada.

PF (paridad). Indica paridad par o impar de una operación en datos de ocho bits de bajo orden (más a la derecha).

CF (acarreo). Contiene el acarreo de orden más alto (más a la izquierda) después de una operación aritmética; también lleva el contenido del último bit en una operación de corrimiento o de rotación.

        Las banderas están en el registro de banderas en las siguientes posiciones:


      Las banderas más importantes para la programación en ensamblador son O, S, Z y C, para operaciones de comparación y aritméticas, y D para operaciones de cadenas de caracteres. Los procesadores 80286 y posteriores tienen algunas banderas usadas para propósitos internos, en especial las que afectan al modo protegido. Los procesadores 80386 y posteriores tienen un registro extendido de banderas conocido como Eflags.

Y por ultimo para cerrar este capitulo hay que saber las conversiones mas básicas hexadecimal, binaria, decimal y octal.

Decimal:

       Los números con base 10 están compuestos de 10 posibles dígitos (0-9). Cada dígito de un numero tiene una potencia de 10 asociada con el, basada en su posición en el numero. Por ejemplo:


Binario
       Los números en base dos están compuestos de dos posibles dígitos (0 y 1). Cada dígito de un numero tiene una potencia de 2 asociada con el basada en su posición en el numero. Por ejemplo:

Hexadecimal

    Los numero hexadecimales tienen base 16. Los hexadecimales (o hex) se pueden usar como una representación resumida de los n´umeros binarios. Los números hexadecimales tienen 16 dígitos posibles. Esto crea un problema ya que no hay símbolos para estos dígitos adicionales después del nueve. Por convención se usan letras para estos dígitos adicionales. Los 16 dígitos hexadecimales son: 0-9 y luego A, B, C, D, E, F. El dígito A equivale a 10 en decimal, B es 11 etc. Cada dígito de un numero hexadecimal tiene una potencia de 16 asociada con el. Por ejemplo:


Octal

     El sistema numérico en base 8 se llama octal y utiliza los dígitos del 0 al 7.Tiene la ventaja de que no requiere utilizar otros símbolos diferentes de los dígitos. Sin embargo, para trabajar con bytes o conjuntos de ellos, asumiendo que un byte es una palabra de 8 bits, suele ser más cómodo el sistema hexadecimal, por cuanto todo byte así definido es completamente representable por dos dígitos hexadecimales.



No hay comentarios.:

Publicar un comentario

Ejemplo sencillo

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