39
UNIVERSIDAD TECNICA DEL NORTE FICA – CIME JAVIER CABASCANGO SISTEMAS MICROPROCESADOS INSTRUCCIONES DEL MICROCRONTROLADOR 164P INSTRUCCIONES DE ARITMETICA Y LOGICA ADC DESCRIPCION Suma dos registros y el contenido de la C Flag y coloca el resultado en el registro del destino Rd. OPERACIÓN Rd ← Rd + Rr + C SINTAXIS OPERANDOS CONTADOR DE INSTRUCCION ADC Rd, Rr 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1 EJEMPLO ; Add R1:R0 to R3:R2 add r2, r0 ; Add low byte adc r3, r1 ; Add with carry high byte PALABRAS: 1 (2 bytes) CICLOS: 1 ADD CON ARRASTRE DESCRIPCION Suma dos registros sin la C Flag y coloca el resultado en el registro del destino Rd.

MICROCONTROLADOR 164P

Embed Size (px)

DESCRIPTION

INSTRUCCIONES

Citation preview

Page 1: MICROCONTROLADOR 164P

UNIVERSIDAD TECNICA DEL NORTE

FICA – CIME

JAVIER CABASCANGO

SISTEMAS MICROPROCESADOS

INSTRUCCIONES DEL MICROCRONTROLADOR 164P

INSTRUCCIONES DE ARITMETICA Y LOGICA

ADC

DESCRIPCION

Suma dos registros y el contenido de la C Flag y coloca el resultado en el registro del destino Rd.

OPERACIÓN

Rd ← Rd + Rr + C

SINTAXIS OPERANDOS CONTADOR DE INSTRUCCION

ADC Rd, Rr 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1

EJEMPLO

; Add R1:R0 to R3:R2add r2, r0 ; Add low byteadc r3, r1 ; Add with carry high byte

PALABRAS: 1 (2 bytes)CICLOS: 1

ADD CON ARRASTRE

DESCRIPCION

Suma dos registros sin la C Flag y coloca el resultado en el registro del destino Rd.

OPERACIÓN

Rd ← Rd + Rr

SINTAXIS OPERANDOS CONTADOR DE INSTRUCCION

ADC Rd, Rr 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1

EJEMPLO

Page 2: MICROCONTROLADOR 164P

add r1, r2 ; Add r2 to r1 (r1=r1+r2)add r28, r28 ; Add r28 to itself (r28=r28+r28)

PALABRAS: 1 (2 bytes)CICLOS: 1

ADIW

DESCRIPCION

Le añade un valor inmediato (0 - 63) a un par de registro y coloca el resultado en el par de registro. Esta instrucción interviene en los cuatro pares de registro superior, y está bien ubicada para operaciones en los registros del puntero. Esta instrucción no está disponible en todos los dispositivos.

OPERACIÓN

Rd+1: Rd ← Rd+1: Rd + K

SINTAXIS OPERANDOS

ADIW Rd+1: Rd, K d ∈ {24, 26, 28, 30}, 0 ≤ K ≤ 63

CONTADOR DE INSTRUCCIÓN: PC ← PC + 1

EJEMPLO

adiw r25:24,1 ; Add 1 to r25:r24adiw ZH: ZL, 63 ; Add 63 to the Z-pointer (r31:r30)

PALABRAS: 1 (2 bytes)CICLOS: 2

AND – AND LOGICO

DESCRIPCION

Realiza el operador booleano AND lógico entre el contenido de Rr de registro Rd y de registro y coloca el resultado en el registrador del destino Rd.

OPERACION

Rd ← Rd • Rr

SINTAXIS: AND Rd, Rr.OPERANDOS: 0 ≤ d ≤ 31, 0 ≤ r ≤ 31CONTADOR DE INSTRUCCIÓN: PC ← PC + 1

EJEMPLO

Page 3: MICROCONTROLADOR 164P

and r2, r3 ; Bitwise and r2 and r3, result in r2ldi r16, 1 ; Set bitmask 0000 0001 in r16and r2, r16 ; Isolate bit 0 in r2

PALABRAS: 1 (2 bytes)CICLOS: 1

ANDI – AND LOGICO CON INMEDIATO

DESCRIPCION

Realiza el operador booleano AND lógico entre el contenido de registro Rd y una constante y coloca el resultado en el registrador del destino Rd.

OPERACION

Rd ← Rd • K

SINTAXIS: ANDI Rd, KOPERANDOS: 16 ≤ d ≤ 31, 0 ≤ K ≤ 255CONTADOR DE INSTRUCCIÓN: PC ← PC + 1

EJEMPLO

andi r17, $0F ; Clear upper nibble of r17andi r18, $10 ; Isolate bit 4 in r18andi r19, $AA ; Clear odd bits of r19

PALABRAS: 1 (2 bytes)CICLOS: 1

ASR – DESPLAZAMIENTO DERECHO ARITMETICO

DESCRIPCION

Se hace a todos los pedacitos en el lugar un Rd la derecha. El pedacito 7 es constante sustentada. El pedacito 0 está cargado en la C Flag del SREG. Esta operación eficazmente divide un valor firmado a las dos sin cambiar su signo. La Bandera de Arrastre puede usarse para redondear el resultado.

OPERACION

SINTAXIS: ASR RdOPERANDOS: 0 ≤ d ≤ 31CONTADOR DE INSTRUCCIÓN: PC ← PC + 1

Page 4: MICROCONTROLADOR 164P

EJEMPLO

ldi r16, $10 ; Load decimal 16 into r16asr r16 ; r16=r16 / 2ldi r17, $FC ; Load -4 in r17asr r17 ; r17=r17/2

PALABRAS: 1 (2 bytes)CICLOS: 1

BCLR

DESCRIPCION

Despeja una Bandera sola en SREG.

OPERACION

SREG(s) ← 0

SINTAXIS: BCLR sOPERANDOS: 0 ≤ s ≤ 7CONTADOR DE INSTRUCCIÓN: PC ← PC + 1

EJEMPLO

bclr 0 ; Clear Carry Flagbclr 7 ; Disable interrupts

PALABRAS: 1 (2 bytes)CICLOS: 1

BLD

DESCRIPCION

Copia la T Flag en el SREG (el Registro de Estatus) para el bit b en el registro Rd.

OPERACION

Rd (b) ← T

SINTAXIS: BLD Rd, bOPERANDOS: 0 ≤ d ≤ 31, 0 ≤ b ≤ 7CONTADOR DE INSTRUCCIÓN: PC ← PC + 1

EJEMPLO

; Copy bitbst r1, 2 ; Store bit 2 of r1 in T Flagbld r0, 4 ; Load T Flag into bit 4 of r0

Page 5: MICROCONTROLADOR 164P

PALABRAS: 1 (2 bytes)CICLOS: 1

BRBC

DESCRIPCION

La rama relativa condicional. Pruebas que un solo bit en SREG y ramas relativamente para PC si el pedacito es despejado. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representado en forma de complemento de dos.

OPERACIÓN

If SREG(s) = 0 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRBC s, k OPERANDOS: 0 ≤ s ≤ 7, -64 ≤ k ≤ +63 PC ← PC + k + 1CONTADOR DE INSTRUCCIÓN: PC ← PC + 1, if condition is false

EJEMPLO

cpi r20, 5 ; Compare r20 to the value 5brbc 1, noteq ; Branch if Zero Flag cleared...noteq: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa, 2 si la condición es verdadera

BRBS

DESCRIPCION

La rama relativa condicional. Pruebas que un solo bit en SREG y ramas relativamente para PC si el pedacito está colocado. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representado en forma de complemento de dos.

OPERACIÓN

If SREG(s) = 1 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRBS s, k OPERANDOS: 0 ≤ s ≤ 7, -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIÓN: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa.

EJEMPLO

Page 6: MICROCONTROLADOR 164P

bst r0, 3 ; Load T bit with bit 3 of r0brbs 6, bitset ; Branch T bit was set...bitset: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa, 2 si la condición es verdadera.

BRCC DESCRIPCION

La rama relativa condicional. Prueba la Bandera de Arrastre (C) y las ramas relativamente para PC si la C es despejada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBC 0, k).

OPERACIÓN

If C = 0 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRCC k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIÓN: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO

add r22, r23 ; Add r23 to r22brcc nocarry ; Branch if carry cleared...nocarry: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa, 2 si la condición es verdadera.

BRCS

DESCRIPCION

La rama relativa condicional. Prueba la Bandera de Arrastre (C) y las ramas relativamente para PC si la C está colocada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 0, k).

OPERACIÓN

If C = 1 then PC ← PC + k + 1, else PC ← PC + 1

Page 7: MICROCONTROLADOR 164P

SINTAXIS: BRCS k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa.EJEMPLO

cpi r26, $56 ; Compare r26 with $56brcs carry ; Branch if carry set...carry: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera

BREAK

DESCRIPCION

La instrucción de SUSPENSIÓN es usada en el sistema del chip Debug, y no es normalmente usada en la aplicación. Cuando la instrucción de SUSPENSIÓN es ejecutada, el AVR CPU es incrustado en el Modo Bloqueado. Esto cede lo En el acceso del Depurador del chip para los medios internos. Si cualquier pedacito del Cerrojo está colocados, o ya sea el JTAGEN u OCDEN Fuses es no sistemático, la UPC tratará la instrucción de SUSPENSIÓN como un NOP y no introducirá el modo Bloqueado. Esta instrucción no está disponible en todos los dispositivos. Refiérase al dispositivo que la instrucción específica colocó resumen.

OPERACIÓN

On-chip Debug system break.

SINTAXIS: BREAK OPERANDOS: Ninguno CONTADOR DE INSTRUCCIONES: PC ← PC + 1PALABRAS: 1 (2 bytes)CICLOS: 1

BREQ

DESCRIPCION

La rama relativa condicional. Prueba la Bandera de Cero (Z) y las ramas relativamente para PC si la Z está colocada. Si la instrucción es ejecutada inmediatamente después de cualquier del instrucciones CP, CPI, FUNJA COMO SUBSTITUTO o SUBI, la rama ocurrirá si y sólo si el número sin firmar o firmado y binario representado en Rd fue igual al número sin firmar o firmado y binario representado en Rr. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 1, k).

OPERACIÓN

Page 8: MICROCONTROLADOR 164P

If Rd = Rr (Z = 1) then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BREQ k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsaEJEMPLO

cp r1, r0 ; Compare registers r1 and r0breq equal ; Branch if registers equal...equal: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera

BRGE

DESCRIPCION

La rama relativa condicional. Prueba las ramas y Bandera Firmada (S) relativamente para PC si la S es despejada. Si la instrucción es ejecutada inmediatamente después de cualquier del instrucciones CP, CPI, FUNJA COMO SUBSTITUTO o SUBI, la rama ocurrirá si y sólo si lo firmado binario el número representado en Rd fue mayor o igual para el firmado número binario representado en Rr. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representado en forma de complemento de dos. (El equivalente para instrucción BRBC 4, k).

OPERACIÓN

If Rd ≥ Rr (N ⊕ V = 0) then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRGE k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO

cp r11, r12 ; Compare registers r11 and r12brge greateq ; Branch if r11 ≥ r12 (signed)...greateq: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera

Page 9: MICROCONTROLADOR 164P

BRHC

DESCRIPCION

La rama relativa condicional. Prueba la Media Bandera de Arrastre (H) y las ramas relativamente para PC si la H es despejada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBC 5, k).

OPERACIÓN

If H = 0 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRHC k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa.

EJEMPLO

brhc hclear ; Branch if Half Carry Flag cleared...hclear: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera.

BRHS

DESCRIPCION

La rama relativa condicional. Prueba la Media Bandera de Arrastre (H) y las ramas relativamente para PC si la H está colocada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 5, k).

OPERACIÓN

If H = 1 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRHS k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa.

EJEMPLO:

Page 10: MICROCONTROLADOR 164P

brhs hset ; Branch if Half Carry Flag set...hset: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera.

BRIDDESCRIPCION

La rama relativa condicional. Prueba la Bandera Global (yo) de Interrupción y las ramas relativamente para PC si soy despejado. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representado en forma de complemento de dos. (El equivalente para instrucción BRBC 7, k).

OPERACIÓN

If I = 0 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRID k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

brid intdis ; Branch if interrupt disabled...intdis: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera

BRIE

DESCRIPCION

La rama relativa condicional. Prueba la Bandera Global (yo) de Interrupción y las ramas relativamente para PC si es el set. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representado en forma de complemento de dos. (El equivalente para instrucción BRBS 7, k).

OPERACIÓN

(i) If I = 1 then PC ← PC + k + 1, else PC ← PC + 1

Page 11: MICROCONTROLADOR 164P

SINTAXIS: BRIE k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:brie inten ; Branch if interrupt enabled...inten: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera

BRLO

DESCRIPCION

La rama relativa condicional. Prueba la Bandera de Arrastre (C) y las ramas relativamente para PC si la C está colocada. Si la instrucción es ejecutada inmediatamente después de cualquier del instrucciones CP, CPI, FUNJA COMO SUBSTITUTO o SUBI, la rama ocurrirá si y sólo si el número sin firmar y binario representado en Rd fue más pequeño que el número sin firmar y binario representado en Rr. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 0, k).

OPERACION

If Rd < Rr (C = 1) then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRLO k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

eor r19, r19 ; Clear r19loop: inc r19 ; Increase r19...cpi r19, $10 ; Compare r19 with $10brlo loop ; Branch if r19 < $10 (unsigned)nop ; Exit from loop (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera

Page 12: MICROCONTROLADOR 164P

BRLT

DESCRIPCION

La rama relativa condicional. Prueba las ramas y Bandera Firmada (S) relativamente para PC si la S está colocada. Si la instrucción es ejecutada inmediatamente después de cualquier del instrucciones CP, CPI, FUNJA COMO SUBSTITUTO o SUBI, la rama ocurrirá si y sólo si el número binario firmado representado en Rd estaba menos del firmado número binario representado en Rr. Esta instrucción se ramifica relativamente para PC en cualquier dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en el complemento de dos la forma. (El equivalente para instrucción BRBS 4, k).

OPERACIÓN

If Rd < Rr (N ⊕ V = 1) then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRLT k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

cp r16, r1 ; Compare r16 to r1brlt less ; Branch if r16 < r1 (signed)...less: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 si la condición es falsa2 si la condición es verdadera

BRMI

DESCRIPCION

La rama relativa condicional. Prueba las ramas y Bandera Negativa (N) relativamente para PC si la N está colocada. Este branchesrelatively de instrucción para PC en cualquier dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 2, k).

OPERACIÓN

If N = 1 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRMI k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1

Page 13: MICROCONTROLADOR 164P

PC ← PC + 1, si la condición es falsa EJEMPLO:

subi r18, 4 ; Subtract 4 from r18brmi negative ; Branch if result negative...negative: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BRNE

DESCRIPCION

La rama relativa condicional. Prueba la Bandera de Cero (Z) y las ramas relativamente para PC si la Z está colocada. Si la instrucción es ejecutada inmediatamente después de cualquier del instrucciones CP, CPI, FUNJA COMO SUBSTITUTO o SUBI, la rama ocurrirá si y sólo si el número sin firmar o firmado y binario representado en Rd fue igual al número sin firmar o firmado y binario representado en Rr. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 1, k).

OPERACIÓN

If Rd ≠ Rr (Z = 0) then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRNE k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

eor r27, r27 ; Clear r27loop: inc r27 ; Increase r27...cpi r27, 5 ; Compare r27 to 5brne loop ; Branch if r27<>5nop ; Loop exit (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BRPL

DESCRIPCION

Page 14: MICROCONTROLADOR 164P

La rama relativa condicional. Prueba las ramas y Bandera Negativa (N) relativamente para PC si la N es despejada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBC 2, k).

OPERACIÓN

If N = 0 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRPL k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

subi r26, $50 ; Subtract $50 from r26brpl positive ; Branch if r26 positive...positive: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BRSH

DESCRIPCION

La rama relativa condicional. Prueba la Bandera de Arrastre (C) y las ramas relativamente para PC si la C es despejada. Si la instrucción es ejecutada inmediatamente después de la ejecución de cualquier del instrucciones CP, CPI, FUNJA COMO SUBSTITUTO o SUBI la rama ocurrirá si y sólo si lo el número sin firmar y binario representado en Rd fue mayor o igual para el número sin firmar y binario representado en Rr. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representado en forma de complemento de dos. (El equivalente para instrucción BRBC 0, k).

OPERACIÓN

If Rd ≥Rr (C = 0) then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRSH k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

Page 15: MICROCONTROLADOR 164P

subi r19, 4 ; Subtract 4 from r19brsh highsm ; Branch if r19 >= 4 (unsigned)...highsm: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BRTC

DESCRIPCION

La rama relativa condicional. Prueba la T Flag y ramas relativamente para PC si la T es despejada. Esta instrucción se ramifica relativamente para PC en cualquier dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBC 6, k).

OPERACION

If T = 0 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRTC k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

bst r3, 5 ; Store bit 5 of r3 in T Flagbrtc tclear ; Branch if this bit was cleared...tclear: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BRTS

DESCRIPCION

La rama relativa condicional. Prueba la T Flag y ramas relativamente para PC si la T está colocada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 6, k).

OPERACIÓN

(i) If T = 1 then PC ← PC + k + 1, else PC ← PC + 1

Page 16: MICROCONTROLADOR 164P

SINTAXIS: BRTS k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

bst r3, 5 ; Store bit 5 of r3 in T Flagbrts tset ; Branch if this bit was set...tset: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BRVCDESCRIPCION

La rama relativa condicional. Prueba la Bandera de Rebalse (V) y las ramas relativamente para PC si la V es despejada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBC 3, k).

OPERACIÓN

(i) If V = 0 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRVC k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

add r3, r4 ; Add r4 to r3brvc noover ; Branch if no overflow...noover: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BRVS

DESCRIPCION

Page 17: MICROCONTROLADOR 164P

La rama relativa condicional. Prueba la Bandera de Rebalse (V) y las ramas relativamente para PC si la V está colocada. Esta instrucción se ramifica relativamente para PC en ya sea la dirección (la PC - 63 PC d destino d + 64). La k de parámetro es el offset de PC y es representada en forma de complemento de dos. (El equivalente para instrucción BRBS 3, k).

OPERACION(i) If V = 1 then PC ← PC + k + 1, else PC ← PC + 1

SINTAXIS: BRVS k OPERANDOS: -64 ≤ k ≤ +63 CONTADOR DE INSTRUCCIONES: PC ← PC + k + 1PC ← PC + 1, si la condición es falsa

EJEMPLO:

add r3, r4 ; Add r4 to r3brvs overfl ; Branch if overflow...overfl: nop ; Branch destination (do nothing)

PALABRAS: 1 (2 bytes)CICLOS: 1 if condition is false2 if condition is true

BSET

DESCRIPCION

Incrusta un pedacito o Bandera sola en SREG.

OPERACIÓN

(i) SREG(s) ← 1

SINTAXIS: BSET s OPERANDOS: 0 ≤ s ≤ 7 CONTADOR DE INSTRUCCIONES: PC ← PC + 1

EJEMPLO:

bset 6; Set T Flagbset 7; Enable interrupt

PALABRAS: 1 (2 bytes)CICLOS: 1

BST

DESCRIPCION

Page 18: MICROCONTROLADOR 164P

Almacena un bit b de Rd para la T Flag en SREG (el Registro de Estatus).

OPERACIÓN

(i) T ← Rd (b)

SINTAXIS: BST Rd, b OPERANDOS: 0 ≤ d ≤ 31, 0 ≤ b ≤ 7 CONTADOR DE INSTRUCCIONES: PC ← PC + 1

EJEMPLO:

; Copy bitbst r1, 2 ; Store bit 2 of r1 in T Flagbld r0, 4 ; Load T into bit 4 of r0

PALABRAS: 1 (2 bytes)CICLOS: 1

CALL

DESCRIPCIONLlama para una subrutina dentro de la memoria entera de Programa. La dirección del remitente (para la instrucción después de la LLAMADA) se guardará encima de la Pila. (Vea también a RCALL). El Puntero de la Pila usa un esquema de postdecremento durante la LLAMADA. Esta instrucción no está disponible en todos los dispositivos. Refiérase al dispositivo que la instrucción específica colocó resumen.

OPERACIÓN

(i) PC ← k Devices with 16 bits PC, 128K bytes Program memory maximum.(ii) PC ← k Devices with 22 bits PC, 8M bytes Program memory maximum.

SINTAXIS(i) CALL k (ii) CALL k

OPERANDOS0 ≤ k < 64K 0 ≤ k < 4M

CONTADORPC ← k PC ← k

STACKSTACK ← PC+2SP ← SP-2, (2 bytes, 16 bits)

Page 19: MICROCONTROLADOR 164P

STACK ← PC+2SP ← SP-3 (3 bytes, 22 bits)

EJEMPLO:

mov r16, r0 ; Copy r0 to r16call check ; Call subroutinenop ; Continue (do nothing)...check: cpi r16, $42 ; Check if r16 has a special valuebreq error ; Branch if equalret ; Return from subroutine...error: rjmp error ; Infinite loop

PALABRAS: 2 (4 bytes)CICLOS: 4, devices with 16 bit PC5, devices with 22 bit PCCICLOS XMEGA: 3, devices with 16 bit PC4, devices with 22 bit PC

CBI

DESCRIPCION

Despeja un especificado pedacito en uno Yo el Registro de la / O. Esta instrucción opera en lo más bajo 32 Yo los Registros de la / O – el 0-31 de direcciones.

OPERACIÓN

I/O(A, b) ← 0

SINTAXIS: CBI A, b OPERANDOS: 0 ≤ A ≤ 31, 0 ≤ b ≤ 7 CONTADOR: PC ← PC + 1

EJEMPLO:

cbi $12,7 ; Clear bit 7 in Port D

PALABRAS: 1 (2 bytes)CICLOS: 2CICLOS XMEGA: 1CICLOS Reduced Core tinyAVR: 1

CBR

DESCRIPCION

Page 20: MICROCONTROLADOR 164P

Despeja los especificados pedacitos en el registro Rd. Realiza el operador booleano AND lógico entre el contenido de registro Rd y el complemento del constante kilobyte de la máscara. El resultado será colocado en registro Rd.

OPERACIÓN

(i) Rd ← Rd • ($FF - K)

SINTAXIS: CBR Rd, K OPERANDOS: 16 ≤ d ≤ 31, 0 ≤ K ≤ 255 CONTADOR: PC ← PC + 1

EJEMPLO:

cbr r16, $F0 ; Clear upper nibble of r16cbr r18, 1 ; Clear bit 0 in r18

PALABRAS: 1 (2 bytes)CICLOS: 1

CLC

DESCRIPCION

Despeja la Bandera de Arrastre (C) en SREG (el Registro de Estatus).

OPERACIÓN

(i) C ← 0

SINTAXIS: CLC OPERANDOS: Ninguno CONTADOR: PC ← PC + 1

EJEMPLO:

add r0, r0 ; Add r0 to itselfclc ; Clear Carry Flag

PALABRAS: 1 (2 bytes)CICLOS: 1

CLH

DESCRIPCION

Despeja la Media Bandera de Arrastre (H) en SREG (el Registro de Estatus).

OPERACIÓN

Page 21: MICROCONTROLADOR 164P

(i) H ← 0

SINTAXIS: CLH OPERANDOS: NingunoCONTADOR: PC ← PC + 1

EJEMPLO:clh ; Clear the Half Carry Flag

PALABRAS: 1 (2 bytes)CICLOS: 1

SUB

Descripción

Resta dos registros y coloca el resultado en la Calle de registro de destino.

Operación

Rd ← Rd - Rr

Syntaxis: Operandos: Contador:SUB Rd, Rr 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1

CLI

OPERACIÓN

I ← 0SINTAXIS: CLI OPERANDOS: Ninguno CONTADOR: PC ← PC + 1

EJEMPLO

in temp, SREG ; Store SREG value (temp must be defined by user)cli ; Disable interrupts during timed sequencesbi EECR, EEMWE ; Start EEPROM writesbi EECR, EEWEout SREG, temp ; Restore SREG value (I-Flag)

PALABRAS: 1 (2 bytes)CICLOS: 1

CLN

OPERACIÓN

N ← 0

Page 22: MICROCONTROLADOR 164P

SINTAXIS: CLN OPERANDOS: Ninguno CONTADOR: PC ← PC + 1

EJEMPLO

add r2, r3 ; Add r3 to r2cln ; Clear Negative Flag

PALABRAS: 1 (2 bytes)CICLOS: 1

SUBI

OperaciónRd ← Rd - K

Sintaxis: Operandos: Contador del Programa: (i) SUBI Rd, K 16 ≤ d ≤ 31, 0 ≤ K ≤ 255 PC ← PC + 1

DescripciónResta un registro y una constante y coloca el resultado en el registro de destino "Rd". Esta instrucción se está trabajando en el Registro R16 a R31 y está muy bien adaptado para las operaciones en la X, Y Z de los punteros.

SBCOperaciónRd ← Rd - Rr - C

Syntaxis: Operandos: Contador del Programa:(i) SBC Rd, Rr 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1

DescripciónResta dos registros y resta con la bandera C y coloca el resultado en la Calle de registro de destino.

SBCI OperaciónRd ← Rd - K - C

Sintaxis: Operandos: Contador del Programa: (i) SBCI Rd, K 16 ≤ d ≤ 31, 0 ≤ K ≤ 255 PC ← PC + 1

DescripciónResta una constante a partir de un registro y resta con la bandera C y coloca el resultado en el registro de destino "Rd".

SBIW

Page 23: MICROCONTROLADOR 164P

Operación:Rd+1: Rd ← Rd+1: Rd - K

Sintaxis: Operandos: Contador del Programa:SBIW Rd+1: Rd, K d ∈ {24, 26, 28,30}, 0 ≤ K ≤ 63 PC ← PC + 1

Descripción:Resta un valor inmediato (0-63) a partir de un par de registro y coloca el resultado en el par de registros. Esta instrucción opera sobre los pares de registro superior cuatro, y se adapta bien para las operaciones en los Registros de puntero.Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones.

ORI Operación(i) Rd ← Rd v K

Sintaxis: Operandos: Contador de Programa:ORI Rd, K 16 ≤ d ≤ 31, 0 ≤ K ≤ 255 PC ← PC + 1

DescripciónRealiza la operación lógica OR entre el contenido del registro Rd. y una constante y coloca el resultado en el registro de destino "Rd".

EOR Operación(i) RD ← Rd. ⊕ Rr

Sintaxis: Operandos: Contador de Programa:(i) EOR Rd., RR 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC + 1

DescripciónLleva a cabo la recuperación asistida del OR exclusivo entre el contenido del registro Rd y Rr registro y coloca el resultado en el registro de destino "Rd".

COMOperación(i) Rd ← $ FF - Rd.

Sintaxis: Operandos: Contador de Programa:COM Rd. 0 ≤ d ≤ 31 PC ← PC + 1

DescripciónEsta instrucción se lleva a cabo un complemento Uno de registro Rd.

NEGOperaciónRD ← $ 00 - Calle

Page 24: MICROCONTROLADOR 164P

Sintaxis: Operandos: Contador de Programa:NEG Rd. 0 ≤ d ≤ 31 PC ← PC + 1

DescripciónReemplaza el contenido del registro Rd con complemento de sus dos mujeres; el valor de $ 80 se mantiene sin cambios.

SBRSBR

OperaciónRD ← Rd. v K

Sintaxis: Operandos: Contador de Programa:SBR Rd, K 16 ≤ d ≤ 31, 0 ≤ K ≤ 255 PC ← PC + 1

DescripciónEstablece bits especificado en el registro Rd... Realiza la lógica ORI entre el contenido del registro Rd. y una máscara constante K y coloca el resultado en RD registro de destino

INC OperaciónR Rd. ← Rd 1

Sintaxis: Operandos: Contador de Programa:INC Rd. 0 ≤ d ≤ 31 PC ← PC 1

DescripciónAñade un -1 - para el contenido del registro Rd. y coloca el resultado en el registro de destino Rd... La bandera C en SREG no se ve afectada por la operación, permitiendo así que la instrucción INC para ser utilizado en un contador de bucle en los cálculos de precisión múltiple.Cuando se opera en números sin signo, sólo ramas BREQ y Brne se puede esperar que un rendimiento consistente. Cuando se trabaja con valores de complemento a dos, todas las ramas firmados están disponibles.

DECOperaciónRd. ← Rd. - 1

Sintaxis: Operandos: Contador de Programa:DEC Rd. 0 ≤ d ≤ 31 PC ← PC 1

DescripciónResta un -1 - de los contenidos de registro Rd. y coloca el resultado en el registro de destino Road. La bandera C en SREG no se ve afectada por la operación, permitiendo así que la instrucción diciembre para ser utilizado en un contador de bucle en los cálculos de precisión múltiple. Cuando se opera en valores sin signo, sólo ramas BREQ y Brne se puede esperar que un rendimiento consistente. Cuando se trabaja con valores de complemento a dos, todas las ramas firmadas están disponibles.

Page 25: MICROCONTROLADOR 164P

TST

Operación(i) R Rd. ← Rd. • RD

Sintaxis: Operandos: Contador de Programa:TST Rd. 0 ≤ d ≤ 31 PC ← PC 1

DescripciónComprueba si un registro es cero o negativo. Realiza una operación lógica AND entre un registro y sí mismo. El registro se mantendrá sin cambios.

CLROperaciónR Rd. ← Rd. ⊕ Rd.

Sintaxis: Operandos: Contador de Programa:CLR Rd. 0 ≤ d ≤ 31 PC ← PC 1

DescripciónBorra un registro. Esta instrucción realiza un OR exclusivo entre un registro y sí mismo. Esto borrará todos los bits en el registro.

SER OperaciónRd ← $ FF

Sintaxis: Operandos: Contador de Programa:SER Rd. 16 ≤ d ≤ 31 PC ← PC 1

Descripción: Carga $ FF directamente al registro de Calle.

MUL

OperaciónR1: R0 ← Rd. × RR (sin signo ← sin signo x signo)

Sintaxis: Operandos: Contador de Programa:MUL Rd., RR 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 PC ← PC 1

DescripciónEsta instrucción realiza de 8-bits x 8-bits → 16-bits sin signo de multiplicación.El RD multiplicando y el multiplicador del RR son dos registros que contienen números sin signo. El producto entero de 16 bits se encuentra en R1 (byte alto) y R0 (low). Tenga en cuenta que si el multiplicando o el multiplicador se selecciona de R0 o R1 el resultado se sobreponen a los que después de la multiplicación. Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones.

Page 26: MICROCONTROLADOR 164P

MULS

OperaciónR1: R0 ← Rd. × Rr (firmado ← firmado × firmado)

Sintaxis: Operandos: Contador de Programa:Muls Rd, Rc 16 ≤ d ≤ 31, 16 ≤ r ≤ 31 PC ← PC 1

DescripciónEsta instrucción realiza de 8-bits x 8-bits → 16-bits multiplicación firmado. El RD multiplicando y el multiplicador del RR son dos registros que contienen números con signo. El producto de 16 bits con signo se coloca en R1 (byte alto) y R0 (low). Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones.

MULSU

OperaciónR1: R0 ← Rd. × Rr (firmado ← firmado × sin signo)

Sintaxis: Operandos: Contador de Programa:MULSU Rd, Rc 16 ≤ d ≤ 23, 16 ≤ r ≤ 23 PC ← PC 1

DescripciónEsta instrucción realiza de 8-bits x 8-bits → 16-bits multiplicación de una firma y un número sin signo.

El RD multiplicando y el multiplicador del RR son dos registros. El RD multiplicando es un número con signo, y el multiplicador Rr no tiene signo. El producto de 16 bits con signo se coloca en R1 (byte alto) y R0 (low). Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones.

FMUL

OperaciónR1: R0 ← Rd. × RR (sin signo (1,15) ← sin signo (1,7) × sin signo (1.7))

Sintaxis: Operandos: Contador de Programa:FMUL Rd., Rr 16 ≤ d ≤ 23, 16 ≤ r ≤ 23 PC ← PC 1

DescripciónEsta instrucción se lleva a cabo de 8-bits x 8-bit → 16-bit sin signo de multiplicación y cambia el resultado de un bit a la izquierda. Sea (NQ) indican un número fraccionario con los dígitos binarios de N a la izquierda del punto de base, y los dígitos binarios Q derecha del punto de base. Una multiplicación de dos números en los formatos (N1.Q1) y (N2.Q2) resultados en el formato ((N1, N2).

FMULS

Page 27: MICROCONTROLADOR 164P

OperaciónR1: R0 ← Rd. × Rr (firmado (1,15) ← firmado (1,7) × firmado (1,7))

Sintaxis: Operandos: Contador de Programa:FMULS Rd, Rc 16 ≤ d ≤ 23, 16 ≤ r ≤ 23 PC ← PC + 1

DescripciónEsta instrucción se lleva a cabo de 8-bits x 8-bit → 16-bit de multiplicación firmado y cambia el resultado de un bit a la izquierda. Sea (NQ) indican un número fraccionario con los dígitos binarios de N a la izquierda del punto de base, y los dígitos binarios Q derecha del punto de base. Una multiplicación de dos números en los formatos (N1.Q1) y (N2.Q2) resultados en el formato ((N1 + N2). (Q1 + Q2)).

FMULSU

OperaciónR1: R0 ← Rd. × Rr (firmado (1,15) ← firmado (1,7) × sin signo (1.7))

Sintaxis: Operandos: Contador de Programa:FMULSU Rd, Rc 16 ≤ d ≤ 23, 16 ≤ r ≤ 23 PC ← PC 1

DescripciónEsta instrucción se lleva a cabo de 8-bits x 8-bit → 16-bit de multiplicación firmado y cambia el resultado de un bit a la izquierda. Sea (NQ) indican un número fraccionario con los dígitos binarios de N a la izquierda del punto de base, y los dígitos binarios Q derecha del punto de base. Una multiplicación de dos números en los formatos (N1.Q1) y (N2.Q2) resultados en el formato ((N1, N2). (T1 T2))

DESOperaciónSi H = 0, entonces Cifrar ronda (R7-R0, R15-R8, K)Si H = 1 entonces descifrar ronda (R7-R0, R15-R8, K)

Sintaxis: Operandos: Contador de Programa:DES 0x00 K ≤ K ≤ 0x0F PC ← PC 1

DescripciónEl módulo es una extensión del conjunto de instrucciones a la CPU AVR, la realización de iteraciones DES. El bloque 64-bit de datos (texto o texto cifrado) se coloca en el archivo de registro de la CPU, registros R0-R7, donde LSB de datos se colocan en LSB de R0 y MSB de datos se colocan en MSB de R7. El total de 64-bits (incluyendo los bits de paridad) se coloca en los registros R8-R15, organizado en el archivo de registro con el LSB de clave en la LSB y MSB de la R8 de la clave en el MSB del R15. Ejecución de una instrucción DES realizará un ciclo en el algoritmo DES. Dieciséis rondas deben ser ejecutadas en orden creciente para formar la correcta cifrado DES o texto plano. Los resultados intermedios se almacenan en el registro de archivo (R0-R15) operando DES de instrucciones (K) determina que todo se ejecuta, y la bandera de acarreo de la mitad (H) determina si el cifrado o descifrado se realiza

RJMP

Page 28: MICROCONTROLADOR 164P

OperaciónPC ← PC + k + 1

Sintaxis: Operandos: Contador de Programa: PilaRJMP k-2 K ≤ k <2K PC ← PC + k + 1 sin cambios

DescripciónSalto relativo a una dirección dentro de PC - 2K +1 y PC + 2K (palabras). Para los microcontroladores AVR con memoria de programa que no exceda de 4 K palabras (8K bytes) esta instrucción puede abordar toda la memoria de todas las ubicaciones de direcciones. Véase también el JMP.

IJMPOperación (I) ← PC Z (15:00) Los dispositivos con PC de 16 bits, el máximo de 128 Kb de memoria de programa.(Ii) PC (15:00) ← Z (15:00) Los dispositivos con PC 22 bits, bytes Programa 8M de memoria máxima.PC (21:16) ← 0 Sintaxis: Operandos: Contador de Programa: Pila:(I), (ii) Ninguna IJMP Consulte Operación no afectada

DescripciónSalto indirecto a la dirección apuntada por la Z (16 bits) un registro puntero en el archivo de Registro. El Registro de Z-puntos es de 16 bits de ancho y permite saltar dentro de los más bajos palabras 64K (128K bytes) parte de la memoria de programa. Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones.

EIJMPOperaciónPC (15:00) ← Z (15:00)PC (21:16) ← Eind

Sintaxis: Operandos: Contador de Programa: Pila:(I) Ninguna EIJMP Consulte Operación no afectada

DescripciónSalto indirecto a la dirección apuntada por la Z (16 bits) un registro puntero en el Archivo de Registro y el Registro Eind en el espacio de E / S. Esta instrucción permite saltos indirectos a la totalidad 4M (palabras) el espacio de memoria del programa. Véase también IJMP. Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones.

JMP

Operación(I) ← PC k

Page 29: MICROCONTROLADOR 164P

Sintaxis: Operandos: Contador de Programa: Pila:(I) JMP k 0 ≤ k <k PC ← 4M sin cambios

DescripciónIr a una dirección dentro de la totalidad 4M (palabras) de memoria de programa. Véase también RJMP. Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones

RCALLOperación(I) PC ← PC + k + 1 Los dispositivos con PC de 16 bits, bytes Programa de 128K de memoria máxima.(Ii) PC ← PC + k + 1 Los dispositivos con PC 22 bits, bytes máximo de 8M de memoria de programa.

Sintaxis: Operandos: Contador de Programa: Pila: (I) rcall k-2 K ≤ k <2K PC ← PC + k + 1 PILA ← PC + 1 SP ← SP - 2 (2 bytes, 16 bits)(Ii) rcall k-2 K ≤ k <2K PC ← PC + k + 1 PILA ← PC + 1 SP ← SP - 3 (3 bytes, 22 bits

DescripciónLlamada relativa a una dirección dentro PC - 2K + 1 + 2K y PC (las palabras). La dirección de retorno (la instrucción después de la rcall) se almacena en la pila. Véase también el LLAMADO. Para AVR microcontroladores con memoria de programa que no exceda de 4 K palabras (8K bytes) esta instrucción puede abordar toda la memoria de todas las ubicaciones de direcciones. El puntero de pila utiliza un esquema de decremento posterior durante rcall.

EICALL Operación PC (15:00) ← Z (15:00)PC (21:16) ← Eind

Sintaxis: Operandos: Contador de Programa: Pila:EICALL pila de operación ← PC + 1 SP ← SP - 3 (3 22 bits)

DescripciónLlamada indirecta de una subrutina a la que apunta la Z (16 bits) un registro puntero en el Archivo de Registro y el Registro Eind en el espacio de E / S. Esta instrucción permite llamadas indirectas a la totalidad 4M (palabras) el espacio de memoria del programa. Véase también iCall. La Stack Pointer utiliza un esquema de decremento posterior durante EICALL. Esta instrucción no está disponible en todos los dispositivos. Consulte el resumen de un dispositivo específico conjunto de instrucciones.