Hola clafuente , maunix tiene razon para hacer llamadas a otra pagina puede seleccionarla usando pclath, otra cosa es que el ensamblador no pone las rutinas donde el quiere , comienza en la direccion 0x00 y va avanzando de acuerdo a las instrucciones que tienes. por ejemplo
org 0x00 ;defines el inicio
goto inicio ; comienzo del programa
nop
nop
nop
nop
nop
inicio
La instruccion goto inicio esta en 0x00 y como luego tienes 5 instrucciones la etiqueta inicio estara en la posicion 0x06 , si no quieres que inicio este en esta posicion puedes definir una nueva direccion usando la directiva org, por ejemplo
org 0x00 ;defines el inicio
goto inicio ; comienzo del programa
nop
nop
nop
nop
nop
org 0x10
inicio
En este caso la etiqueta inicio se encontrara en la posicion 0x10, por lo que entre el ultimo nop y la etiqueta inicio tendras 10 posiciones de memoria.
sobre tus otras preguntas , la cosa depende de la cantidad de instrucciones que tengas en la gama media el tamaño de la pagina es de 2048 posiciones y tienes un maximo de 4 paginas, es decir, 8192 posiciones de memoria de programa , entonces la pagina 1 va de 0x00 a 0x7FF, la pagina 2 va de 0x800 a 0xFFF, la pagina 3 de 0x1000 a 0x17FF y la pagina 4 de 0x1800 a 0x1FFF, entonces si tu quieres poner una subrutina en el inicio de la pagina 3, colocas
org 0x1000
LoQueSea
y para llamarla utilizas el procedimiento que explico maunix , que funciona de forma similar para el goto.
Saludos