Por cierto como sé cuanto ocupa cada variable?
picto, si te refieres a las variables que tu defines en el código, bueno, solo tú podrás saber cuanto ocupan
Suena tonto, pero en ensamblador tienes que saber todo lo que haces.
Por eso si quieres definir una variable de 8 bits y otra variable de 16 bits lo haces 'salteandote' un posición de memoria cuando haces tus declaraciones de variables con los 'equs'
Ejemplo:
VAR8bits equ 0x20
VAR16bits equ 0x21
VARtmp8bits equ 0x23
Fíjate que la posición de la primer variable es 0x20.
Luego la de la segunda variable es 0x21 porque la anterior variable la quiero de 8 bits
La variable Vartmp8bits se ubica a partir de 0x23 (2 posiciones más arriba) para permitirme que la variable VAR16bits sea de 2 bytes.
Luego por ejemplo en el código haces así.
incf VAR16bits+0,f
incf VAR16bits+1,f
De esa forma, en la segunda instrucción estamos seteando el byte 'alto' o 'high' de la variable. (al menos así lo hago yo).
Nuevamente en ensamblador tu armas como te parezca. Puedes hacer que el byte 0 sea tu low byte, o el high.
Es tu decisión.
De hecho la gente de intel hace eso, el low es el byte con posición de memoria mas baja y la gente de Motorola hace totalmente lo inverso.
Saludos