domingo, 19 de enero de 2014

Anexo 6: Conjunto de instrucciones del μP 6809

Significado de la notación:

“M:M” simboliza un número de 16 bits formado por dos bytes ubicados en dos localidades contiguas de la memoria.

“←” significa “es transferido a” (en el sentido de la flecha)

PC representa al registro conocido como el Contador del Programa

CCR ó CC representan al registro de 8 bits conocido como el registro de Códigos de Condición, el registro que contiene las banderas


INSTRUCCIONES


ABX (Add Accumulator B into Index Register B)
Descripción: Suma el valor de 8 bits sin signo en el acumulador B al registro X.
Efecto: IX' ← IX + ACCB
Formas: ABX
Banderas (Códigos de Condición): No son alteradas.
Modos de domiciliamiento: Inherente

ADC (Add with Carry into Register)
Descripción: Suma los contenidos del bit de “llevar” C y el byte de la memoria M hacia un acumulador de 8 bits.
Efecto: R' ← R + M + C
Formas: ADCA, ADCB
Banderas:
 H - Puesta en “1” si se genera un “llevar medio” medio,
     puesta en “0” en caso contrario.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Puesta en “1” si ocurre un sobreflujo,
     puesta en “0” en caso contrario.
 C - Puesta en “1” si se genera un “llevar”,
     puesta en “0” en caso contrario.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

ADD (8-bits, Add Memory into Register)
Descripción: Suma el byte de la memoria a un acumulador de 8 bits.
Efecto: R' ← R + M
Formas: ADDA, ADDB
Banderas:
 H - Puesta en “1” si se genera un “llevar medio” medio,
     puesta en “0” en caso contrario.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Puesta en “1” si ocurre un sobreflujo,
     puesta en “0” en caso contrario.
 C - Puesta en “1” si se genera un “llevar”,
     puesta en “0” en caso contrario.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

ADD (16-bits, Add Memory into Register)
Descripción: Suma un valor de 16 bits de la memoria a un acumulador de 16 bits.
Efecto: R' ← R + M:M + 1
Formas: ADDD
Banderas:
 H - Puesta en “1” si se genera un “llevar” medio,
     puesta en “0” en caso contrario.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Puesta en “1” si ocurre un sobreflujo,
     puesta en “0” en caso contrario.
 C - Puesta en “1” si se genera un “llevar”,
     puesta en “0” en caso contrario.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

AND (Logical AND Memory into Register)
Descripción: Se efectúa una operación de AND lógico entre los contenidos de un acumulador y los contenidos de una localidad de la memoria M, dejando el resultado almacenado en el acumulador.
Formas: ANDA, ANDB
Banderas:
 H - No es alterada.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Siempre es limpiada (puesta en “0”).
 C - No es alterada.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

AND (Logical AND Immediate Memory into Condition Code Register)
Descripción: Se efectúa una operación de AND lógico entre el registro de los Códigos de Condición (CC) y el byte inmediato especificado en la instrucción, poniendo el resultado en el registro de los Códigos de Condición.
Formas: ANDCC
Banderas: Alteradas de acuerdo a los resultados de la operación.
Modos de domiciliamiento: Inmediato

ASL (Arithmetic Shift Left)
Descripción: Efectúa un desplazamiento de todos los bits un lugar hacia la izquierda. El bit cero es cargado con un “0”. El bit 7 es desplazado hacia el bit de “llevar” C.
Formas: ASL, ASLA, ASLB
Banderas:
 H - Indefinida.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Cargada con el resultado del OR exclusivo de los bits 6 y 7 del operando original.
 C - Cargada con el bit 7 del operando original.
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

ASR (Arithmetic Shift Right)
Descripción: Efectúa un desplazamiento de todos los bits un lugar hacia la derecha. El bit 7 es mantenido constante. El bit cero es desplazado hacia el bit de “llevar” C.
Formas: ASR, ASRA, ASRB
Banderas:
 H - Indefinida.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - No es alterada.
 C - Cargada con el bit 0 del operando original.
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

BCC (Branch on Carry Clear)
Descripción: Prueba el bit de la bandera de “llevar” C (Carry) en el registro de los Códigos de Condición, ocasionando un salto si el valor es igual a cero.
Formas: BCC, LBCC
Banderas: No son alteradas.
Modos de domiciliamiento: Relativo

BCS (Branch on Carry Set)
Descripción: Prueba el bit de la bandera de “llevar” C (Carry) en el registro de los Códigos de Condición, ocasionando un salto si el valor es igual a “1”.
Formas: BCS, LBCS
Banderas: No son alteradas.
Modos de domiciliamiento: Relativo

BEQ (Branch on Equal)
Descripción: Prueba el estado del bit de la bandera Z (Cero) en el registro de los Códigos de Condición, ocasionando un salto si el valor es igual a “1”. Cuando es usada en una operación de substracción o comparación, la instrucción llevará a cabo el salto si los valores comparados, ya sea con signo o sin signo, son exactamente los mismos.
Formas: BEQ, LBEQ
Banderas: No son alteradas.
Modos de domiciliamiento: Relativo

BGE (Branch on Greater than or Equal to Zero)
Modos de domiciliamiento: Relativo

BGT (Branch on Greater)
Modos de domiciliamiento: Relativo

BHI (Branch on Higher)
Modos de domiciliamiento: Relativo

BHS (Branch if Higher or Same)
Modos de domiciliamiento: Relativo

BIT (Bit Test)
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

BLE (Branch on Less Than or Equal to Zero)
Modos de domiciliamiento: Relativo

BLO (Branch on Lower)
Modos de domiciliamiento: Relativo

BLS (Branch on Lower or Same)
Modos de domiciliamiento: Relativo

BLT (Branch on Less than Zero)
Modos de domiciliamiento: Relativo

BMI (Branch on Minus)
Modos de domiciliamiento: Relativo

BNE (Branch Not Equal)
Modos de domiciliamiento: Relativo

BPL (Branch on Plus)
Modos de domiciliamiento: Relativo

BRA (Branch Always)
Modos de domiciliamiento: Relativo

BRN (Branch Never)
Modos de domiciliamiento: Relativo

BSR (Branch to Subroutine)
Modos de domiciliamiento: Relativo

BVC (Branch on Overflow Clear)
Modos de domiciliamiento: Relativo

BVS (Branch on Overflow Set)
Modos de domiciliamiento: Relativo

CLR (Clear)
Descripción: El acumulador A o el acumulador B o la localidad de la memoria M son cargados con 00000000.
Formas: CLR
Banderas:
 H - No es alterada.
 N - Siempre es puesta en “0”.
 Z - Siempre es puesta en “1”.
 V - Siempre es puesta en “0”.
 C - Siempre es puesta en “0”.
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

CMP (8-bits, Compare Memory from Register)
Descripción: Compara los contenidos de la localidad de la memoria con los contenidos del registro especificado, ajustando en forma apropiada los valores de los códigos de condición en el registro de los Códigos de Condición.
Formas: CMPA, CMPB
Banderas:
 H - Indefinida.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Cargada con el resultado del OR exclusivo de los bits 6 y 7 del operando original.
 C - Puesta en “1” si se genera un “pedir prestado”,
     puesta en “0” en caso contrario.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

CMP (16-bits, Compare Memory from Register)
Descripción: Compara los contenidos de 16 bits de localidades concatenadas de la memoria con los contenidos del registro especificado, ajustando en forma apropiada los valores de los códigos de condición en el registro de los Códigos de Condición.
Formas: CMPD, CMPX, CMPY, CMPU
Banderas:
 H - No es alterada.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Puesta en “1” si se genera un sobreflujo,
     puesta en “0” en caso contrario.
 C - Puesta en “1” si se genera un “pedir prestado”,
     puesta en “0” en caso contrario.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

COM (Complement)
Descripción: Reemplaza los contenidos de la localidad de la memoria M o del acumulador A o B con su complemento lógico.
Formas: COM, COMA, COMB
Banderas:
 H - No es alterada.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Siempre es puesta en “0”.
 C - Siempre es puesta en “1”.
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

CWAI (Clear CC bits and Wait for Interrupt)
Modos de domiciliamiento: Inmediato

DAA (Decimal Addition Adjust)
Modos de domiciliamiento: Inherente

DEC (Decrement)
Efecto: M' ← M - 1
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

EOR (Exclusive OR)
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

EXG (Exchange Registers)
Descripción: Intercambia los datos entre dos registros designados.
Formas: EXG
Banderas: No son alteradas (a menos que uno de los registros sea el de los Códigos de Condición).
Modos de domiciliamiento: Inmediato

INC (Increment)
Efecto: M' ← M + 1
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

JMP (Jump)
Descripción: Salto incondicional. El control del programa es transferido al domicilio efectivo de la memoria que sea proporcionado.
Formas: JMP
Banderas: No son alteradas.
Modos de domiciliamiento: Extendido, Directo, Indexado

JSR (Jump to Subroutine)
Descripción: El control del programa es transferido al domicilio efectivo de la memoria que sea proporcionado después de almacenar el domicilio de retorno en la pila del hardware del microprocesador. Una instrucción RTS debe ser la última instrucción en ser ejecutada de la subrutina.
Formas: JSR
Banderas: No son alteradas.
Modos de domiciliamiento: Extendido, Directo, Indexado

LD (8-bits, Load Register from Memory)
Descripción: Carga los contenidos de la memoria M en el registro que haya sido designado.
Formas: LDA, LDB
Banderas:
 H - No es alterada.
 N - Puesta en “1” si el dato cargado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el dato cargado es cero,
     puesta en “0” en caso contrario.
 V - Siempre es puesta en “0”.
 C - No es alterada.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

LD (16-bits, Load Register from Memory)
Descripción: Carga los contenidos de la memoria M en el registro de 16 bits que haya sido designado.
Formas: LDD, LDX, LDY, LDS, LDU
Banderas:
 H - No es alterada.
 N - Puesta en “1” si el dato cargado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el dato cargado es cero,
     puesta en “0” en caso contrario.
 V - Siempre es puesta en “0”.
 C - No es alterada.
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

LEA (Load Effective Address)
Modos de domiciliamiento: Indexado

LSL (Logical Shift Left)
Descripción: Efectúa un desplazamiento de todos los bits del acumulador A o del acumulador B o de una localidad de la memoria M un lugar hacia la izquierda. El bit cero es cargado con un “0”. El bit 7 del acumulador A o del acumulador B o de la localidad de la memoria M es desplazado hacia el bit de “llevar” C.
Formas: LSL, LSLA, LSLB
Banderas:
 H - Indefinida.
 N - Puesta en “1” si el resultado es negativo,
     puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Cargada con el resultado del OR exclusivo de los bits 6 y 7 del operando original.
 C - Cargada con el bit 7 del operando original.
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

LSR (Logical Shift Right)
Descripción: Efectúa un desplazamiento hacia la derecha de todos los bits del operando. Se desplaza un “0” hacia el bit 7, mientras que un bit cero es desplazado hacia el bit de “llevar” C.
Formas: LSR, LSRA, LSRB
Banderas:
 H - No es alterada.
 N - No es alterada.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - No es alterada.
 C - Cargada con el bit 0 del operando original.
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

MUL (Multiply)
Descripción: Multiplicar los números binarios sin signo que se encuentran en los acumuladores A y B poniendo el resultado en ambos acumuladores. La multiplicación sin signo permite operaciones de precisión múltiple. Tras efectuarse la operación, ACCA contiene el byte más significativo del resultado.
Efecto: ACCA':ACCB' ← ACCA × ACCB
Formas: MUL
Banderas:
 H - No es alterada.
 N - No es alterada.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - No es alterada.
 C - Puesta en “1” si el bit 7 de ACCB es “1”,
     puesta en “0” en caso contrario.
Modos de domiciliamiento: Inherente

NEG (Negate)
Descripción: Reemplaza el operando con su “complemento de dos” (“dos-complemento”).
Efecto: M' ← 0 - M
Formas: NEG, NEGA, NEGB
Banderas:
 H - Indefinida.
 N - Puesta en “1” si el resultado es negativo,
     Puesta en “0” en caso contrario.
 Z - Puesta en “1” si el resultado es cero,
     puesta en “0” en caso contrario.
 V - Puesta en “1” si el operando original era 10000000.
 C - Puesta en “1” si se generó un “pedir prestado”,
     puesta en “0” en caso contrario.
Modos de domiciliamiento: Inherente, Extendido, Directo

NOP (No Operation)
Descripción: Esta instrucción ocasiona únicamente que el contador de programa sea incrementado. No se afectan otros registros o localidades de la memoria.
Formas: NOP
Banderas: No son alteradas.
Modos de domiciliamiento: Inherente

OR (Inclusive OR Memory into Register)
Formas: ORA, ORB
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

OR (Inclusive OR Memory Immediate into Condition Code Register)
Formas: ORCC
Modos de domiciliamiento: Inmediato

PSHS (Push Registers on the Hardware Stack)
Modos de domiciliamiento: Inmediato

PSHU (Push Registers on the User Stack)
Modos de domiciliamiento: Inmediato

PULS (Pull Registers from the Hardsware Stack)
Modos de domiciliamiento: Inmediato

PULU (Pull Registers from the User Stack)
Modos de domiciliamiento: Inmediato

ROL (Rotate Left)
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

ROR (Rotate Right)
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

RTI (Return from Interrupt)
Modos de domiciliamiento: Inherente

RTS (Return from Subroutine)
Modos de domiciliamiento: Inherente

SBC (Subtract with Borrow)
Modos de domiciliamiento: Inmediato

SEX (Sign Extended)
Modos de domiciliamiento: Inherente

ST (8-bit, Store Register into Memory)
Modos de domiciliamiento: Extendido, Directo, Indexado

ST (16-bit, Store Register into Memory)
Modos de domiciliamiento: Extendido, Directo, Indexado

SUB (8-bit, Subtract Memory from Register)
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

SUB (16-bit, Subtract Memory from Register)
Modos de domiciliamiento: Inmediato, Extendido, Directo, Indexado

SWI (Software Interrupt)
Modos de domiciliamiento: Inherente

SWI2 (Software Interrupt 2)
Modos de domiciliamiento: Inherente

SWI3 (Software Interrupt 3)
Modos de domiciliamiento: Inherente

SYNC (Synchronize to External Event)
Descripción: Cuando se ejecuta una instrucción SYNC, el procesador entra en un estado de sincronización, deteniendo todas las instrucciones de procesamiento, y poniéndose a la espera de una señal de interrupción. Cuando ocurre una interrupción, el estado de sincronización es limpiado (puesto en “0”) y el procesamiento continúa. Si la interrupción está habilitada, y si dura tres o más ciclos, el procesador ejecutará la rutina de interrupción. Si la interrupción está enmascarada o dura menos de tres ciclos, el procesador simplemente continúa con la siguiente instrucción. Mientras se está en el estado de sincronización, los buses de domicilios y datos son puestos en una condición de alta impedancia (en otras palabras, desconectados eléctricamente). Esta instrucción proporciona una sincronización de software con un proceso del hardware. Considérese el siguiente ejemplo para adquisición de datos a alta velocidad:




El estado de sincronización es limpiado (puesto en “0”) por una interrupción. Naturalmente, las interrupciones habilitadas hasta este punto pueden destruír la transferencia de datos y, como tal, deben representar únicamente condiciones de emergencia.

La misma condición usada para servicios de entrada/salida manejados por interrupciones puede ser usada también para transferencias de datos a alta velocidad usando la máscara de interrupción y usando la instrucción SYNC como lo muestra el ejemplo que se acaba de dar.

Modos de domiciliamiento: Inherente

TFR (Transfer to Register)
Descripción: Transfiere datos entre dos registros designados. Unicamente los contenidos de registros del mismo tamaño pueden ser transferidos (8 bits a 6 bits, ó 16 bits a 16 bits).
Efecto: R1 → R2
Formas: TFR
Banderas: No son alteradas
Modos de domiciliamiento: Inmediato

TST (Test)
Modos de domiciliamiento: Inherente, Extendido, Directo, Indexado

FIRQ (Fast Interrupt Request, Hardware Interrupt)
Modos de domiciliamiento: Inherente

IRQ (Interrupt Request, Hardware Interrupt)
Modos de domiciliamiento: Inherente

NMI (Non Maskable Interrupt, Hardware Interrupt)
Modos de domiciliamiento: Inherente

RESTART
Descripción: El procesador es inicializado (requerido cuando se lleva a cabo el encendido de la máquina) para comenzar con la ejecución del programa. El domicilio de arranque es procurado del vector de reinicialización. Este vector es usualmente puesto por los diseñistas de la máquina en las últimas dos localidades de la memoria, o sea en los domicilios FFFE y FFFF.
Efecto:
  CCR' ← X1X1XXXX
  PC'← FFFE:FFFF
Modos de domiciliamiento: Extendido, Indirecto