26.12.2014 Views

microcontrolador mc68hc11

microcontrolador mc68hc11

microcontrolador mc68hc11

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MICROCONTROLADOR 68HC11: Fundamentos, recursos y programación.<br />

MICROBÓTICA.<br />

Se saca una conclusión muy importante al comparar ambos modos de direccionamiento: siempre que sea<br />

posible conviene usar el direccionamiento directo, es decir, "SITUAR LAS VARIABLES EN LAS<br />

DIRECCIONES BAJAS DE LA MEMORIA, EN EL ESPACIO $00−$FF". De esta manera, todas las<br />

instrucciones que hagan referencia a variables, utilizarán direccionamiento directo y se ahorrarán muchos bytes de<br />

memoria.<br />

¿Quién decide el modo de direccionamiento. Es el propio ensamblador. Al encontrarse el ensamblador con<br />

la instrucción 1 (LDAB $FC00) sabe que la dirección es superior a $FF y que debe utilizar direccionamiento<br />

extendido. Al encontrarse con la instrucción 2, la dirección es menor que $FF y por tanto utiliza direccionamiento<br />

directo ahorrando un byte.<br />

3.3.4. Indexado<br />

Este modo de direccionamiento se utiliza para acceder a TABLAS (Arrays, cadenas....) en la memoria. El<br />

dato se busca de la siguiente forma: Se toma la dirección del registro índice (X ó Y), se le suma un desplazamiento<br />

(offset) de 8 bits y el contenido de esa dirección es el dato buscado.<br />

Este modo de direccionamiento se especifica colocando como argumentos en la instrucción un offset, una<br />

coma y el registro índice.<br />

Ejemplo: LDAB 5,X Esta instrucción carga en el acumulador B el contenido de la dirección especificada por X<br />

más un offset de 5. Se simboliza de la siguiente manera:<br />

dir = (X) + 5 , siendo dir la dirección que contiene el dato.<br />

Para el caso particular de tener un offset de 0, es decir, que se quiera acceder a la dirección contenido en X,<br />

se puede especificar de las siguientes maneras:<br />

LDAB 0,X<br />

LDAB ,X<br />

LDAB X<br />

Las 3 instrucciones son equivalentes.<br />

Este modo de direccionamiento es muy interesante porque permite acceder a cualquier dirección de<br />

memoria ($0000−$FFFF) como en el direccionamiento extendido pero las instrucciones sólo ocupan 2 bytes, como<br />

en el direccionamiento directo. Además, el registro X se puede variar (incrementar, decrementar...) con lo que se<br />

obtiene una gran flexibilidad a la hora de acceder a tablas de datos.<br />

Para acceder a los registros de configuración del <strong>microcontrolador</strong>, que se encuentran en las direcciones<br />

$1000−$103F, es conveniente utilizar este modo de direccionamiento porque así las instrucciones ocupan menos<br />

bytes. En el registro índice se introduce la dirección $1000 correspondiente al comienzo de los registros de<br />

configuración del <strong>microcontrolador</strong>, y sólo es necesario especificar el desplazamiento:<br />

Instrucciones Comentarios Tamaño instrucción<br />

LDX $1000 ; X = $1000 (3 Bytes)<br />

STAA 1,X ; Meter A en dir. $1001 (2 Bytes)<br />

STAB $2C,X ; Meter B en dir. $102C (2 Bytes)<br />

STAA $10,X ; Meter A en dir. $1010 (2 Bytes)<br />

Para realizar esto mismo con direccionamiento extendido sería:<br />

STAA $1001<br />

; Meter A en dir. $1001 (3 Bytes)<br />

STAB $102C<br />

; Meter B en dir. $102C (3 Bytes)<br />

STAA $1010<br />

; Meter A en dir. $1010 (3 Bytes)<br />

Para acceder a 3 registros de control distintos, ambos trozos de código ocupan 9 bytes de memoria. Pero si<br />

se pretende acceder a más de 3 registros de control, que suele ser lo más habitual, se ahorra memoria utilizando<br />

direccionamiento indexado.<br />

El offset aplicado es de 8 bits y sin signo por lo que el offset máximo es de 256 bytes.<br />

XXV

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!