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.

yte 20H a 2FH son numerados secuencialmente <strong>de</strong>s<strong>de</strong> el bit 0 <strong>de</strong> dirección 20H (bit 00H) al bit 7 <strong>de</strong><br />

dirección 2FH (bit 7FH).<br />

Los Bits se pue<strong>de</strong>n hacer 1” o hacer “0” en una simple instrucción. control <strong>de</strong> Simple bit es común para<br />

muchos dispositivos <strong>de</strong> E/S, incluyendo salidas a relevadores, motores, solenoi<strong>de</strong>s, LEDs, buzzers, alarmas,<br />

altavoces, o entradas <strong>de</strong> una variedad <strong>de</strong> switches o indicadores estado. Si una alarma es conectada al Puerto<br />

1 bit 7, por ejemplo, ella pue<strong>de</strong> activarse mediante SETB P1.7 haciendo “1” el bit 7 <strong>de</strong>l puerto, y apagarse al<br />

limpiar el bit <strong>de</strong>l puerto con CLR P1.7. El ensamblador hará lo necesario para efectuar la conversión <strong>de</strong>l<br />

símbolo "P1.7" en la correcta dirección <strong>de</strong>l bit, 97H.<br />

Notar que fácil una ban<strong>de</strong>ra interna se mueve a la pata <strong>de</strong> un puerto:<br />

MOV C, BANDERA<br />

MOV P1.0, C<br />

En este ejemplo, BANDERA es el nombre <strong>de</strong> cualquier bit direccionable en las 128 localida<strong>de</strong>s más bajas o<br />

en el espacio <strong>de</strong> SFR. Una linea <strong>de</strong> E/S (El LSB <strong>de</strong>l Puerto 1, en este caso) es puesto a “1” o a “0”<br />

<strong>de</strong>pendiendo en si el bit BANDERA es 1 o 0.<br />

El bit <strong>de</strong> acarreo en la palabra <strong>de</strong> estado <strong>de</strong>l programa [program status word (PSW)] se usa como el<br />

acumulador <strong>de</strong> un simple bit <strong>de</strong>l procesador Booleano. Las <strong>instrucciones</strong> <strong>de</strong> Bit que hacen referencia al bit <strong>de</strong><br />

acarreo como "C” se ensamblan como <strong>instrucciones</strong> específicas <strong>de</strong> acarreo (i.e. CLR C). El bit <strong>de</strong> acarreo<br />

a<strong>de</strong>más tiene una dirección directa, ya que él resi<strong>de</strong> en el registro PSW, que es bit-direccionable. Como otros<br />

SFRs bit-direccionable, los bits <strong>de</strong>l PSW tienen nemotécnicos pre<strong>de</strong>finidos que el ensamblador acepta como<br />

alias <strong>de</strong> la dirección <strong>de</strong>l bit. El alias <strong>de</strong> la ban<strong>de</strong>ra <strong>de</strong> acarreo es " CY", que está <strong>de</strong>finido como la dirección<br />

<strong>de</strong> bit 0D7H. Consi<strong>de</strong>rar las siguientes dos <strong>instrucciones</strong>:<br />

CLR C<br />

CLR CY<br />

Ambas causan el mismo efecto, sin embargo, la primera es una instrucción <strong>de</strong> un byte. Mientras que la<br />

última es una instrucción <strong>de</strong> dos bytes. En e postrer caso, el segundo byte es la dirección directa <strong>de</strong>l bit<br />

especificado, la ban<strong>de</strong>ra <strong>de</strong> acarreo.<br />

Notar que las operaciones booleanas incluyen <strong>instrucciones</strong> ANL (AND lógico) y ORL (OR lógico), pero no<br />

la operación XRL (OR exclusivo lógico). Una operación XRL es simple <strong>de</strong> implementar. Suponer, por<br />

ejemplo, que es requerido el formar el OR exclusivo <strong>de</strong> dos bits, BITl y BIT2, y <strong>de</strong>jar el resultado en la<br />

ban<strong>de</strong>ra <strong>de</strong> acarreo. Las <strong>instrucciones</strong> se dan <strong>de</strong>bajo.<br />

MOV C, BIT1<br />

JNB BIT2, DONE<br />

CPL C<br />

DONE: (continua)<br />

Primero, BITl es movido a la ban<strong>de</strong>ra <strong>de</strong> acarreo. Si BIT2 = 0, entonces C contiene el resultado correcto; que<br />

es, BIT1 ⊕ BIT2 = BITl si BIT2 = 0. Si BIT2 = 1, C contiene el complemento <strong>de</strong>l resultado correcto.<br />

Complementando C se completa la operación.<br />

3.4.1 Pruebas <strong>de</strong> Bits<br />

El código en el ejemplo anterior usa la instrucción JNB, una <strong>de</strong> una serie <strong>de</strong> <strong>instrucciones</strong> que prueban bits y<br />

que saltan si el bit direccionado es “1” (JC. JB, JBC) o si el bit direccionado es “0” (JNC, JNB). En el caso<br />

anterior, si BIT2 = 0 la instrucción CPL es saltada. JBC (salta si bit es “1” y entonces limpia el bit) ejecuta el<br />

salto si el bit direccionado es “1”, y también limpia el bit; es <strong>de</strong>cir, una ban<strong>de</strong>ra pue<strong>de</strong> ser probada y limpiada<br />

en una simple instrucción.<br />

Todos los bits <strong>de</strong>l PSW son direccionables directamente, así que el bit <strong>de</strong> paridad o las ban<strong>de</strong>ras <strong>de</strong> propósito<br />

general, por ejemplo, son también viables para <strong>instrucciones</strong> que prueban bits.<br />

Profr. Salvador Saucedo 12

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

Saved successfully!

Ooh no, something went wrong!