alguien me puede explicar esto modificar bits PA0 Y PA1 frente a un call

Hola que tal ,resulta que lei esto en un manual pero no termino de entender si es asi ,porque que pasa
que no se puede poner un call a cualquier parte del programa? si puede alguien explicarme o con algun ejemplo
gracias

FIG 2.2.1 Direccionamiento directo con instrucción GOTO
Deberá tenerse en cuenta además que es posible avanzar de una página a otra en forma
automática cuando el PC se incrementa. Esto ocurre si el programa empieza en una
página y sigue en la siguiente. Sin embargo, al incrementarse el PC desde la última
posición de una página a la primera de la siguiente, los bits PA0 y PA1 no se
modifican, y por lo tanto sí se ejecuta una instrucción GOTO, CALL o alguna que actúe
sobre el PC, esta producirá un salto a la página anterior, a menos que el programador
tenga la precaución de actualizar el valor de dichos bits. Por este motivo es conveniente
dividir el programa en módulos o rutinas que estén confinados a una página.
En el caso de la instrucción CALL, el direccionamiento se complica un poco más, ya que la
misma solo dispone de 8 bits para especificar la dirección de destino salto. En este caso
también se utilizan los mismos bits de selección de página para completar los bits décimo
y decimoprimero de la dirección, pero falta el noveno bit. En estas instrucciones este bit se
carga siempre con 0, lo que implica que solo se pueden realizar saltos a subrutina a las
mitades inferiores de cada página. En este caso también el programador deberá
asegurarse que el estado de los bits PA0 y PA1 sea el correcto al momento de ejecutarse
la instrucción.
 
Última edición:
El PIC tiene paginas de memoria en RAM y Programa, debido a que es un micro de 8 bits y su set de instrucciones (de la serie 16) es de 14 bits, su direccionamiento es limitado, asi que para poder llegar a toda la memoria disponible añaden los bits que no caben en la instruccion de 14 bits en registros especiales en la memoria RAM, estos registros se deben precargar antes de realizar la instruccion GOTO o CALL

Normalmente no te preocupas por este hecho, pero si se vuelve muy notorio (y molesto) cuando tienes muchas subrutinas y/o usas tablas de busqueda, para esos casos las colocas en un area especifica de la memoria de programa usando una instruccion ORG, asi el compilador siempre las colocara en la misma direccion al compilar el programa
 
hola que tal ;
Lo que es el concepto de la explicacion lo entiendo ,pero no termino de hacerme a la idea sobre un programa esto de agrupar todas las subrrutinas en una parte o lo que comentas de ponerlas en una parte con un org,segun lei el org se pone a partir de donde quieres que el compilador ensamble el programa ,pero claro en los pics de gama baja aun no he usado otra cosa que no sea org inicial 00,org vector de interr 04 y salto de interr 05 ,en base de un programa es cuando no termino de entender lo que lei ya que,pensaba que en un programa puedes saltar de una parte a otro sin mas molestias,entonces digamos que tengo un programa extenso y quiero hacer un call desde el principio al final ,que pasaria que no funcionaria? o deberia cambiar esos dos bits de la palabra de estado?
 
Atrás
Arriba