Estimados, vengo encontrando que al compilador no le gusta leer los org en desorden. Si una subrutina tiene un org menor al anterior leído, el compilador me da un error, ¿hay forma de solucionar esto? Porque se me complica para ordenar el programa cómodamente.
Gonzalo,
No hay forma de solucionar eso. Este ensamblador hace una única pasada y requiere que el contador de posiciones siempre se incremente (de ahí que los .orgs tengan que estar en orden creciente.)
Una alternativa, que puede o no servirte dependiendo de lo que quieras hacer, es evitar usar directivas .ORG. Si lo único que te interesa que ciertos datos o código estén alineados a cierta frontera, por ejemplo que una tabla quede en una dirección de la forma 0xXX00, uno puede usar la directiva ".p2align N" para alinear a una potencia de 2 específica:
.p2align 8 ;; el simbolo tablita quedará alineado a un página de 2^8 = 256
tablita: db 0
Con eso el ensamblador te garantiza que va a poner tablita en la dirección de la forma 0xXX00 más cercana sin necesidad de tener que hacer un .org a un valor específico. (Siempre verificar con el listado de símbolos que se genera al compilar!)
Saludos, Leonardo.