PIC (serie 18) ¿Direccionamiento de instrucciones de 12 bits?

2

Estoy tratando de encontrar la dirección de 12 bits en hexadecimal, así como el banco de memoria que se está utilizando, mediante la última instrucción en las secuencias que se enumeran a continuación.

Antes de enumerar las secuencias, entiendo que la dirección de 12 bits utilizada debe ser 00da ffff ffff, donde d es 1 (resultado almacenado de nuevo en el registro), o 0 (resultado almacenado en WREG), y es 1 (usa BSR) o 0 (ignora BSR). Sin embargo, también he leído que la dirección de 12 bits se compone de 4 bits BSR y 8 bits de la instrucción ... ¿cuál es? ¿Se está utilizando la dirección 00da ffff ffff, o bbbb ffff ffff (donde las b indican el banco)?

La primera secuencia es:

MOVLW  H'08'
MOVWF BSR
MOVF  H'10',W

Como no incluí A (MOVF f, d, a), creo que esto ignora el BSR, por lo que diría que la dirección es 0000 0001 0000 o 0x010. Esto se almacenaría en el Banco 0.

La siguiente secuencia es

MOVLW H'08'
MOVWF BSR
MOVF  H'10',W,A

Como incluí A aquí, debería usar los bits BSR para determinar el banco, lo que significa que la instrucción debería usar el Banco 8. Dicho esto, significa que la dirección es 00da ffff ffff = 0001 0001 0000 = 0x110, o que la dirección es 1000 0001 0000 = 0x810?

    
pregunta Nick

1 respuesta

1

Los bits d y a son campos en la codificación de instrucciones , pero no forman parte del campo address de 8 bits en la instrucción. Si queremos ser académicos al respecto, podríamos decir que el a bit es un campo de modo de direccionamiento en la instrucción. El bit d se puede analizar como un modo de direccionamiento de destino o como parte del código de operación, pero el 00 que comienza por la cotización no forma parte del direccionamiento; son simplemente los dos últimos bits del código de operación MOVF.

La dirección efectiva de 12 bits utilizada se construye como los 8 bits de dirección de la instrucción, precedidos por 4 bits que provienen del BSR o se derivan de los primeros bits de la dirección explícita , según lo seleccionado por el campo a . Pero el valor del bit a en sí no se convierte en parte de la dirección.

Finalmente (pero es posible que esté leyendo mal la documentación que podría encontrar aquí), el ,A en la sintaxis del ensamblador parece indicar "usar el banco de acceso", por lo que cuando (mayúscula) A es presente en la instrucción del ensamblador, significa que (en minúsculas) a en la codificación de la instrucción binaria es cero y el BSR no se utiliza .

    
respondido por el Henning Makholm

Lea otras preguntas en las etiquetas