Pues tampoco es que sea un experto del asm, pero me parece que todo valor que quieras cargar en una dirección de memoria lo tienes que hacer pasándolo por el w, ya que juegas directamente con la arquitectura del micro, de hecho los compiladores de C, lo que hacen al traducirlo a asm, es eso también. Asique, salvo que esté equivocado y alguien nos de una sorpresa, me temo que tendrás que seguir pasando los valores a través del registro W o mediante alguna operación matemática si estás en el programa ya.
(Y tampoco es tan pesado hacer ctrl+C y ctrl+v jejee y cambiar alguna cosilla).
Un saludo.