[go: up one dir, main page]

57% encontró este documento útil (7 votos)
5K vistas2 páginas

Contador de Programa

El contador de programa (PC) almacena la dirección de la última instrucción leída para saber cuál es la siguiente a ejecutar. El PC se incrementa secuencialmente salvo por instrucciones de salto. La pila es un área de memoria LIFO que almacena datos temporales como variables locales y datos de funciones anidadas para su posterior recuperación.

Cargado por

JTC1992
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
57% encontró este documento útil (7 votos)
5K vistas2 páginas

Contador de Programa

El contador de programa (PC) almacena la dirección de la última instrucción leída para saber cuál es la siguiente a ejecutar. El PC se incrementa secuencialmente salvo por instrucciones de salto. La pila es un área de memoria LIFO que almacena datos temporales como variables locales y datos de funciones anidadas para su posterior recuperación.

Cargado por

JTC1992
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 2

Contador de programa El contador de programa (en ingls Program Counter o PC) es un registro interno del computador en el que se almacena

la direccin de la ltima instruccin leda. De esta manera el computador puede saber cul es la siguiente instruccin que debe ejecutar. El PC va incrementndose en una unidad, salvo que la instruccin ejecutndose en ese instante cambie el flujo del programa, saltando a otra direccin. unidad: una instruccin, que segn la arquitectura de los computadores que lo alberguen, puede constar de un byte, 2, o ms, segn el tamao de palabra usado en el formato del juego de instrucciones. EL CONTADOR DE PROGRAMA: El PC proporciona la direccin de la memoria de programa y su longitud puede oscilar entre 9 y 11 bits, segn la capacidad de la misma. En la siguiente figura se muestra la longitud que adopta el PC para los diversos modelos de PIC16C5X. Los 8 bits de menos peso del PC (A07-A00) estn implementados fsicamente en un registro denominado PCL, que se ubica en la direccin 02 de la memoria de datos. Longitud que adopta el PC para los diversos modelos de PIC de la gama baja. El comportamiento del PC para las diversas instrucciones del repertorio es el siguiente: 1. Para todas las instrucciones que no entraen saltos en el programa, el PC se autoincrementa para apuntar la siguiente instruccin a la que se est ejecutando. 2. Las instrucciones de salto GOTO cargan en el PC directamente los 9 bits de menos peso desde el cdigo OP de la propia instruccin. Cuando el rea de programa es superior a las 512 posiciones, los 2 bits de ms peso del PC (Al0 y A9) se cargan con el valor de los bits PA1 y PA0 del Registro de Estado. 3. Las instrucciones CALL contienen en su cdigo OP el valor de los 8 bits de menos peso del PC. El bit A8 toma en este caso el valor 0 lo que obliga a restringir la ubicacin de las rutinas a las 256 primeras posiciones de cada pgina. Cuando son necesarios los bits Al0 y A9, se cargan con los bits PA1 y PA0 del Registro de Estado. Las instrucciones CALL, antes de su ejecucin, guardan en la Pila el valor del PC inicial incrementado una unidad. Dicho valor se restituye al PC cuando se ejecuta la instruccin de retorno cuyo mnemnico es RETLW. 4. En las instrucciones de "salto relativo", la ALU suma al PC inicial (A7-A0), el valor del salto que se obtiene de los 8 bits de menos peso del cdigo OP. El resultado de la operacin se carga en la parte baja del PC (AT-A0). El bit A8 toma el valor 0 y los bits Al0 y A9 se cargan con el valor de PA1 y PA0, respectivamente. Cuando el PC apunta la ltima posicin de una pgina y se autoincrementa pasa a direccionar a la siguiente instruccin que estar situada en la primera posicin de la pgina siguiente. Cuando se produce un cambio de pgina, se deben actualizar los bits PA1 y PA0 del Registro de Estado porque, en caso contrario, cuando se ejecute una instruccin de salto, ste seguir controlando la pgina en la que se halla esta instruccin de salto. Cuando se genera un reset, los bits PA1 y PA0 del Registro de Estado toman el valor 0. El PC queda apuntando la ltima posicin de la ltima pgina que exista en la EPROM. Si en dicha posicin se coloca una instruccin de GOTO, se pasa a direccionar una posicin de la pgina 0. En la figura que representamos a continuacin se presenta un rea de programa de cuatro pginas, habindose colocado en la ltima posicin de la pgina 3 una instruccin de GOTO 0. Si se produce un RESET, dado que PA1 = PA0 = 0, el GOTO lleva el flujo del programa a la posicin 0 de la pgina 0. En el caso de llevarse a cabo un reset en un microcontrolador con 512 posiciones de programa, la primera instruccin que se ejecuta es la que ocupa la direccin 1FFh en el PIC16C54/55. Si tiene 1 k posiciones, como sucede al PIC16C56, la primera instruccin que se ejecuta tras un reset es la que ocupa la direccin 3FFh y, si tiene 2 k (PIC16C57/58), ocupa la direccin 7FFh.

Si colocamos una instruccin GOTO 0 en la ltima posicin de la ltima pgina, despus de provocarse un reset el flujo de control pasa a la posicin 0 de la pgina O.

4.2 Pila ("Stack") Es un rea muy importante manejada directamente por la UCP para alojar datos durante la ejecucin del programa. Su nombre deriva de su propio mecanismo de funcionamiento. Es un almacn de datos contiguos del tipo LIFO ("Last In First Out"). Frecuentemente es comparada con una pila de platos; el ltimo en ser colocado es el primero en ser retirado. Se usa para muchas cosas, por ejemplo, aqu se almacenan las variables locales automticas y los datos involucrados en el mecanismo de invocacin de funciones, de forma que si se utilizan muchas de estas invocaciones forma anidada o recursiva, la pila crece. En algunos sistemas, la pila y el montn son contiguos y el crecimiento desmesurado de la pila puede llegar a sobrescribir el rea inferior del montn. Los movimientos en el stack son generalmente rpidos, a veces basta una simple instruccin del procesador para almacenar o borrar algo en la pila. Los objetos colocados en ella se asocian a una duracin automtica. El trmino se refiere a que es el compilador el que determina cuando se destruyen. El lenguaje C++ se caracteriza por hacer un uso extensivo de la pila (muchos objetos son "automticos" por defecto) y el mecanismo de invocacin de funciones se basa en su utilizacin. Decimos que C++ es un lenguaje orientado a la pila. La localizacin y desalojo de variables de la pila se realiza de forma automtica (son decisiones tomadas por el compilador), no obstante, la directiva register permite indicar que algunas variables que normalmente iran en esta zona, sean alojadas en los registros del procesador. Precisamente este "automatismo" hace que la llamada explcita al destructor de objetos que hayan sido construidos en esta zona sea extremadamente peligroso, ya que si se realiza antes de que el objeto salga de mbito, el destructor ser llamado de nuevo cuando sea liberado el marco de la pila correspondiente a dicho mbito. A cambio la pila presenta la comodidad que supone la destruccin automtica de los objetos alojados en ella cuando salen de mbito (con la liberacin de la memoria correspondiente), lo que supone que no hay peligro de prdidas inadvertidas porque el programador olvide destruir el objeto. Segmento de pila SS ("Stack segment"). Seala la direccin del segmento donde est la pila del programa

También podría gustarte