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.

DEC DPH ;DECREMENTAR BYTE BAJO TAMBIEN<br />

SK: [continua)<br />

Los bytes alto y bajo <strong>de</strong> DPTR <strong>de</strong>ben ser <strong>de</strong>crementados separadamente; sin embargo, el byte alto (DPH) es<br />

sólo <strong>de</strong>crementado si el byte bajo (DPL) cae <strong>de</strong> 00H a FFH.<br />

La instrucción MUL AB multiplica el acumulador por el dato en el registro B y pone el producto <strong>de</strong> 16 bits<br />

en los registros concatenados B (byte alto) y acumulador (byte bajo). DIV AB divi<strong>de</strong> al acumulador por el<br />

dato en el registro B, <strong>de</strong>jando al cociente <strong>de</strong> 8 bits en el acumulador y el residuo <strong>de</strong> 8 bits en el registro B.<br />

Por ejemplo, si A contiene 125 (7DH) y B contiene 9 (09H), la instrucción<br />

DIV AB<br />

divi<strong>de</strong> al contenido <strong>de</strong> A por el contenido <strong>de</strong> B. El acumulador A se queda con el valor 13 y el acumulador B<br />

se queda con el valor 8 (125/9 = 13 con un residuo <strong>de</strong> 8.)<br />

Para aritmética BCD (<strong>de</strong>cimal codificado en binario); las <strong>instrucciones</strong> ADD y ADDC <strong>de</strong>ben seguirse por<br />

una operación DA A (ajuste <strong>de</strong>cimal) para asegurar el resulta esté en el rango para BCD. Notar que DA A<br />

no convierte un número binario a BCD; ella produce un resultado valido sólo como el segundo paso en la<br />

adición <strong>de</strong> 2 bytes BCD. Por ejemplo, si A contiene el valor BCD 59 (59H), entonces la secuencia <strong>de</strong><br />

<strong>instrucciones</strong><br />

ADD A,#36h<br />

DA A<br />

primero aña<strong>de</strong> 36h a A, dando el resultado 8FH, entonces ajusta el resultado al valor BCD correcto <strong>de</strong> 95<br />

(95H), (59 +36 = 95).<br />

3.2 Instrucciones Lógicas y <strong>de</strong> Rotación<br />

Las <strong>instrucciones</strong> lógicas <strong>de</strong>l 80C51 (ver Apéndice) llevan a cabo operaciones Booleanas (AND, OR,<br />

Exclusive OR, y NOT) en bytes <strong>de</strong> datos en una base <strong>de</strong> bit a bit. Si el acumulador contiene 01110101B,<br />

entonces la siguiente instrucción lógica AND<br />

ANL A, #01010011B<br />

<strong>de</strong>ja al acumulador con 01010001B, lo que es ilustrado <strong>de</strong>bajo.<br />

01010011 (dato inmediato)<br />

AND 01110101 (valor original <strong>de</strong> A)<br />

01010001 (resultado en A)<br />

Ya que los modos <strong>de</strong> direccionamiento para las <strong>instrucciones</strong> lógicas son las mismas que para las<br />

<strong>instrucciones</strong> aritméticas, la instrucción lógica AND pue<strong>de</strong> tomar varias formas:<br />

ANL A.55H (direccionamiento directo)<br />

ANL A, @R0 (direccionamiento indirecto)<br />

ANL A, R6 (direccionamiento <strong>de</strong> registro)<br />

ANL A, #33H (direccionamiento inmediato)<br />

Todas las <strong>instrucciones</strong> lógicas que usan el acumulador como uno <strong>de</strong> los operandos se ejecutan en un ciclo<br />

<strong>de</strong> máquina. Las otras toman dos ciclos <strong>de</strong> máquina.<br />

Las operaciones Lógicas pue<strong>de</strong>n ser realizadas en cualquier byte en el espacio <strong>de</strong> memoria interna <strong>de</strong> datos<br />

sin pasar por el acumulador. La instrucción "XRL directo,#dato” ofrece una manera fácil y rápida <strong>de</strong> invertir<br />

los cuatro bits bajos <strong>de</strong> un puerto, como en<br />

XRL Pl, #0FH<br />

Profr. Salvador Saucedo 8

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

Saved successfully!

Ooh no, something went wrong!