08.05.2013 Views

Juego de instrucciones del 80C31

Juego de instrucciones del 80C31

Juego de instrucciones del 80C31

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

mueve 77H al acumulador.<br />

El direccionamiento Indirecto es esencial cuando se acce<strong>de</strong> <strong>de</strong> manera secuencial a localida<strong>de</strong>s <strong>de</strong> memoria.<br />

Por ejemplo, la siguiente secuencia <strong>de</strong> <strong>instrucciones</strong> limpia la RAM interna <strong>de</strong>s<strong>de</strong> la dirección 50H hasta la<br />

6FH:<br />

MOV R0, #50H<br />

LAZO: MOV @R0, #0<br />

INC R0<br />

CJNE R0, #70H, LAZO<br />

(continua)<br />

La primera instrucción inicializa R0 con la dirección <strong>de</strong> arranque <strong>de</strong>l bloque <strong>de</strong> memoria; la segunda<br />

instrucción usa el direccionamiento indirecto para mover 00H a la localidad apuntada por R0; la tercera<br />

instrucción incrementa al apuntador (R0) a la siguiente dirección; y la última instrucción prueba al apuntador<br />

para ver si el término <strong>de</strong>l bloque ya fue limpiado. La prueba usa 70H, y no 6FH, porque el incremento ocurre<br />

<strong>de</strong>spués <strong>de</strong>l mover indirecto. Esto garantiza que la localidad final (6FH) sea escrita antes <strong>de</strong> terminar.<br />

2.4 Direccionamiento Inmediato<br />

Cuando el operando fuente es una constante y no una variable (i.e., la instrucción usa un valor conocido al<br />

tiempo <strong>de</strong> ensamblar), entonces la constante pue<strong>de</strong> ser incorporada en la instrucción como un byte <strong>de</strong> dato<br />

"inmediato". Un byte adicional en la instrucción contiene el valor. (ver Figura 1d.)<br />

En lenguaje ensamblador, los operandos inmediatos están precedidos por el signo <strong>de</strong> número (#). El<br />

operando pue<strong>de</strong> ser una constante numérica, una variable simbólica, o una expresión aritmética usando<br />

constantes, símbolos, y operadores. El ensamblador computa el valor y substituye el dato inmediato en la<br />

instrucción. Por ejemplo, la instrucción MOV A, #14 carga el valor 14 (0EH) en el acumulador. (se asume<br />

que la constante "14" está en notación <strong>de</strong>cimal, ya que ella no está seguida por "H").<br />

Con una excepción, todas las <strong>instrucciones</strong> usando direccionamiento inmediato usan una constante <strong>de</strong> 8 bits<br />

como dato para el valor inmediato. Cuando se inicializa al apuntador <strong>de</strong> datos, una constante <strong>de</strong> 16 bits es<br />

requerida. Por ejemplo, MOV DPTR, #2800H es una instrucción <strong>de</strong> 3 bytes que carga la constante 2800H,<br />

<strong>de</strong> 16 bits, en el apuntador <strong>de</strong> datos.<br />

2.5 Direccionamiento Relativo<br />

El direccionamiento Relativo se usa sólo con ciertas <strong>instrucciones</strong> <strong>de</strong> salto. Una dirección relativa (o sesgo)<br />

es un valor <strong>de</strong> 8 bits, signado, el cual se aña<strong>de</strong> al contador <strong>de</strong> programa para formar la dirección <strong>de</strong> la<br />

siguiente instrucción a ejecutarse. Ya que un sesgo <strong>de</strong> 8 bits con signo se usa, el rango para saltos es -128 a<br />

+127 localida<strong>de</strong>s. El sesgo relativo es agregado a la instrucción como un byte adicional. (ver Figura le.)<br />

Previo a la adición, el contador <strong>de</strong> programa es incrementado a la dirección que sigue a la instrucción <strong>de</strong>l<br />

salto; esto es, la nueva dirección es relativa a la siguiente instrucción, no a la la dirección <strong>de</strong> la instrucción<br />

<strong>de</strong>l salto. (ver Figura 2). Normalmente, tal <strong>de</strong>talle no es <strong>de</strong> cuidado para el programador, ya que los <strong>de</strong>stinos<br />

<strong>de</strong>l salto son usualmente especificados como etiquetas y el ensamblador <strong>de</strong>termina el sesgo relativo<br />

a<strong>de</strong>cuado.<br />

Por ejemplo, si la etiqueta THEME representa una instrucción en la localidad 0930H. y la instrucción<br />

SJMP THEME<br />

está en memoria en las localida<strong>de</strong>s 0900H y 09001H, el ensamblador asignará un sesgo relativo <strong>de</strong> 2EH<br />

como el byte 2 <strong>de</strong> la instrucción (0902H +2EH = 0930H).<br />

Profr. Salvador Saucedo 4

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

Saved successfully!

Ooh no, something went wrong!