TAREA #8
REGISTROS
Registros de Propósito General: Son 4 registros de 16 bits, que el programador usará para una diversidad de funciones. Tienen varias características en común:
Los 4 registros tienen su nombre propio y ciertas especializaciones:
AX: Registro de acumuladorEste registro es el más usado, siendo de propósito general; y tiene ciertas especializaciones, de ahí su nombre:
BX: Registro de BaseEste registro, además de las características generales de los registros de propósito general, se especializa
CX: Registro de ContadorEste registro, como su nombre indica, será ampliamente usado como contador. Puede ser usado como cualquier registro de propósito general, pero tiene capacidades especiales para ser usado en instrucciones:
DX: Registro de DatosEste registro de propósito general tiene como especializaciones:
Registros de ÍndiceEstos registros, de 16 bits, son muy similares a los de propósito general, pero no tienen todas las capacidades de los mismos; en particular:
Ahora bien, tienen sus propias habilidades. Específicamente, están diseñados para combinarse con los registros de segmento, ser usados como desplazamientos y así intervenir en el acceso a memoria. Se les usa, por ello, para el acceso a arreglos o como apuntadores. Los 4 registros que se consideran en este grupo son:
SI: Source Index, o Apuntador a la FuenteEste registro se especializa en el acceso a bytes o words dentro del segmento de datos; existen instrucciones que lo toman por defecto como el registro que apunta a una localidad de memoria que se va a leer, por lo cual toma su nombre.
DI: Destination Index, Apuntador al DestinoEste registro se especializa en el acceso a bytes o words dentro del segmento de datos o el extra; existen instrucciones que lo toman por defecto como el registro que en combinación con el ES apunta a una localidad de memoria que se va a escribir, por lo cual toma su nombre.
BP: Base Pointer, o apuntador a la Base de la Pila.Este registro es usado para accesar, dentro del segmento de pila, la información. Principalmente nos permite determinar cuando hay un underflow, es decir, cuando se quiere sacar más información de la pila que la que se ha colocado en ella; y el acceso a variables locales y parámetros.
SP: Stack Pointer, o apuntador al tope de la Pila.Este registro también está siempre asociado al manejo de la pila. Su función especial es marcar el tope de la pila, y por tanto, indica en qué localidad de memoria se localiza la información de la pila; se incrementa cuando se hace un POP, con lo que apunta al siguiente elemento en la pila; y se decrementa al hacer un PUSH, con lo que controla el acceso a la memoria de la pila.
ALU: Unidad Aritmética-LógicaEste componente, como su nombre indica, contiene la circuitería necesaria para realizar las diversas operaciones aritméticas y lógicas. Recibe sus operandos por el Bus A, y genera los resultados regresándolos al mismo bus. Una particularidad que es importante recalcar es su conexión al registro de banderas, por lo cual todas las operaciones aritméticas y lógicas, de acuerdo a su resultado, lo alterarán.
Registro de Banderas:Este es un registro de 16 bits, usados como banderas. Esto quiere decir que cada uno de los bits señala un evento dentro del procesador; cuando el bit tiene un valor de 0, el evento no ocurrió (falso); y cuando tiene un valor de 1, el evento ocurrió (verdadero). Entre las banderas más importantes mencionaremos: ZF: Bandera de resultado 0Se prende cuando el resultado de la última operación realizada en el ALU fue un 0. CF: Bandera de carrySe prende cuando el resultado de la última operación realizada en el ALU (necesariamente, una suma o resta) generó un carry o un borrow. OF: Bandera de overflowSe prende cuando el resultado de la última operación realizada en el ALU excedió la capacidad del registro donde se almacena (overflow). SF: Bandera de signoSe prende cuando el resultado de la última operación realizada en el ALU fue negativo, según la representación de complemento a 2 que mencionamos en clases anteriores. AF: Bandera de carry auxiliarSe prende cuando el resultado de la última operación realizada en el ALU generó un carry cuando estaba a la mitad. Por ejemplo, si sumamos dos números de 16 bits, nos indicará si la suma de las partes bajas (primeros 8 bits) había generado carry; si sumamos dos números de 8 bits, indica si el resultado intermedio después de sumar los 4 bits menos significativos, generó carry para sumarse a los bits 5. DF: Bandera de direcciónA diferencia de las anteriores, esta bandera no se prende como resultado del ALU, sino que el programador la usa para controlar la dirección del acceso mediante apuntadores, especialmente en las instrucciones de strings. IF: Bandera de interrupciónSe prende cuando el procesador es interrumpido, y está ejecutando una rutina de atención de interrupción. Esto evita que el procesador acepte interrupciones mientras está procesando interrupciones previas, de manera que no se pierda el control del procesador.
CONCLUSIONES: En esta tarea se presentan los registros que usa una computadora, para saber un poco mas de como funciona y como trabaja la memoria
REFERENCIAS: http://www.sinergia-web.com.mx/clases/asm9708/Temas/clase07.htm |