You are on page 1of 2

Resumen del conjunto de instrucciones

Mnemonics Operando Descripción Operación Banderas #Ciclos


s
INSTRUCCIONES ARITMÉTICAS Y LÓGICAS
ADD Rd, Rr Sumar dos registros Rd  Rd + Rr Z,C,N,V,H 1
ADC Rd, Rr Sumar con carry dos registros Rd  Rd + Rr + C Z,C,N,V,H 1
ADIW Rdl,K Agregar inmediato una constante Rdh:Rdl  Rdh:Rdl + K Z,C,N,V,S 2
SUB Rd, Rr Restar dos registros Rd  Rd - Rr Z,C,N,V,H 1
SUBI Rd, K Restar una constante de un Registro Rd  Rd - K Z,C,N,V,H 1
SBC Rd, Rr Reste con carry dos registros Rd  Rd - Rr - C Z,C,N,V,H 1
SBCI Rd, K Restar con Carry una constante de un Registro Rd  Rd - K - C Z,C,N,V,H 1
SBIW Rdl,K Reste inmediata de una constante Rdh:Rdl  Rdh:Rdl - K Z,C,N,V,S 2
AND Rd, Rr Registro lógico AND Rd  Rd  Rr Z,N,V 1
ANDI Rd, K Registro lógico AND y constate Rd  Rd  K Z,N,V 1
OR Rd, Rr Registro lógico OR Rd  Rd v Rr Z,N,V 1
ORI Rd, K Registro lógico OR y constate Rd  Rd v K Z,N,V 1
EOR Rd, Rr Registro OR exclusivo Rd  Rd  Rr Z,N,V 1
COM Rd Complemento a uno Rd  $FF  Rd Z,C,N,V 1
NEG Rd Complemento a dos Rd  $00  Rd Z,C,N,V,H 1
SBR Rd,K Establecer los bits en el Registro Rd  Rd v K Z,N,V 1
CBR Rd,K Borrar los bits en el Registro Rd  Rd  ($FF - K) Z,N,V 1
INC Rd Incremento de 1 Rd  Rd + 1 Z,N,V 1
DEC Rd Decremento de 1 Rd  Rd  1 Z,N,V 1
TST Rd Prueba de cero o Menos Rd  Rd  Rd Z,N,V 1
CLR Rd Borrar Registro Rd  Rd  Rd Z,N,V 1
SER Rd Establecer el registro Rd  $FF None 1
MUL Rd, Rr Multiplicar sin signo R1:R0  Rd x Rr Z,C 2
MULS Rd, Rr Multiplicar con signo R1:R0  Rd x Rr Z,C 2
MULSU Rd, Rr Multiplicar con signo o sin signo R1:R0  Rd x Rr Z,C 2
FMUL Rd, Rr Multiplicar fracciones sin signo R1:R0  (Rd x Rr) << 1 Z,C 2
FMULS Rd, Rr Multiplicar fracciones con signo R1:R0  (Rd x Rr) << 1 Z,C 2
FMULSU Rd, Rr Multiplicar fracciones con signo o sin signo R1:R0  (Rd x Rr) << 1 Z,C 2

BRANCH INSTRUCTIONS

RJMP k Salto relativo PC  PC + k + 1 None 2


IJMP Salto indirecto a (Z) PC  Z None 2
JMP k Salto directo PC  k None 3
RCALL k Llamar subrutina relativa PC  PC + k + 1 None 3
ICALL Llamada relativa a (Z) PC  Z None 3
CALL k Llamar subrutina directo PC  k None 4
RET Retorno a subrutina PC  STACK None 4
RETI Interrumpir retorno PC  STACK I 4
CPSE Rd,Rr Comparar, Salta si es igual if (Rd = Rr) PC  PC + 2 or 3 None 1 /2/3
CP Rd,Rr Comparar Rd  Rr Z, N,V,C,H 1
CPC Rd,Rr Comparar con llevo Rd  Rr  C Z, N,V,C,H 1
CPI Rd,K Comparar el registro con una constante Rd  K Z, N,V,C,H 1
SBRC Rr, b Ignorar si el bit del registro es Borrado if (Rr(b)=0) PC  PC + 2 or 3 None 1 /2/3
SBRS Rr, b Ignorar si el bit del registro es establecido if (Rr(b)=1) PC  PC + 2 or 3 None 1 /2/3
SBIC P, b Ignorar si el bit de E / S Registro es Borrado if (P(b)=0) PC  PC + 2 or 3 None 1 /2/3
SBIS P, b Ignorar si el bit de E / S esté establecido if (P(b)=1) PC  PC + 2 or 3 None 1 /2/3
BRBS s, k Salta si se ha establecido el Estado de la bandera if (SREG(s) = 1) then PCPC+k + 1 None 1 /2
BRBC s, k Salta si se ha borrado el Estado de la bandera if (SREG(s) = 0) then PCPC+k + 1 None 1 /2
BREQ k Salta si es igual if (Z = 1) then PC  PC + k + 1 None 1 /2
BRNE k Salta si no es igual if (Z = 0) then PC  PC + k + 1 None 1 /2
BRCS k Salta si el llevo esta establecido if (C = 1) then PC  PC + k + 1 None 1 /2
BRCC k Salta si el llevo esta borrado if (C = 0) then PC  PC + k + 1 None 1 /2
BRSH k Salta si es igual o superior if (C = 0) then PC  PC + k + 1 None 1 /2
BRLO k Salta si es inferior if (C = 1) then PC  PC + k + 1 None 1 /2
BRMI k Salta si es negativo if (N = 1) then PC  PC + k + 1 None 1 /2
BRPL k Salta si es positivo if (N = 0) then PC  PC + k + 1 None 1 /2
BRGE k Salta, si es mayor o igual, con signo if (N  V= 0) then PC  PC + k + 1 None 1 /2
BRLT k Salta si es inferior a cero, con signo if (N  V= 1) then PC  PC + k + 1 None 1 /2
BRHS k Salta si el llevo intermedio es establecido if (H = 1) then PC  PC + k + 1 None 1 /2
BRHC k Salta si el llevo intermedio es borrado if (H = 0) then PC  PC + k + 1 None 1 /2
BRTS k Salta si la bandera T es establecido if (T = 1) then PC  PC + k + 1 None 1 /2
BRTC k Salta si la bandera T as borrado if (T = 0) then PC  PC + k + 1 None 1 /2
BRVS k Salta si la bandera de desbordamiento as establecido if (V = 1) then PC  PC + k + 1 None 1 /2
BRVC k Salta si la bandera de desbordamiento as borrado if (V = 0) then PC  PC + k + 1 None 1 /2
Mnemonics Operands Description Operation Flags #Clocks
BRIE k Salta si la interrupción as habilitada if ( I = 1) then PC  PC + k + 1 None 1 /2
BRID k Salta si la interrupción as deshabilitada if ( I = 0) then PC  PC + k + 1 None 1 /2
DATA TRANSFER INSTRUCTIONS
MOV Rd, Rr Copiar entre dos registros Rd  Rr None 1
MOVW Rd, Rr Copiar registros pares Rd+1:Rd  Rr+1:Rr None 1
LDI Rd, K Cargar a un registro una constante Rd  K None 1
LD Rd, X Cargar indirectamente en el puntero x Rd  (X) None 2
LD Rd, X+ Cargar indirectamente con post incremento en el puntero x Rd  (X), X  X + 1 None 2
LD Rd, - X Cargar indirectamente con pre decremento en el puntero x X  X - 1, Rd  (X) None 2
LD Rd, Y Cargar indirectamente en el puntero y Rd  (Y) None 2
LD Rd, Y+ Cargar indirectamente con post incremento en el puntero y Rd  (Y), Y  Y + 1 None 2
LD Rd, - Y Cargar indirectamente con pre decremento en el puntero y Y  Y - 1, Rd  (Y) None 2
LDD Rd,Y+q Cargar indirectamente con desplazamiento en el puntero y Rd  (Y + q) None 2
LD Rd, Z Cargar indirectamente en el puntero z Rd  (Z) None 2
LD Rd, Z+ Cargar indirectamente con post incremento en el puntero z Rd  (Z), Z  Z+1 None 2
LD Rd, -Z Cargar indirectamente con pre decremento en el puntero z Z  Z - 1, Rd  (Z) None 2
LDD Rd, Z+q Cargar indirectamente con desplazamiento en el puntero z Rd  (Z + q) None 2
LDS Rd, k Cargar directamente a la SRAM una constante Rd  (k) None 2
ST X, Rr Guarde indirectamente en el puntero x (X)  Rr None 2
ST X+, Rr Guarde indirectamente y realice un post incremento en el puntero x (X)  Rr, X  X + 1 None 2
ST - X, Rr Guarde indirectamente y realice un pre decremento en el puntero x X  X - 1, (X)  Rr None 2
ST Y, Rr Guarde indirectamente en el puntero y (Y)  Rr None 2
ST Y+, Rr Guarde indirectamente y realice un post incremento en el puntero y (Y)  Rr, Y  Y + 1 None 2
ST - Y, Rr Guarde indirectamente y realice un pre decremento en el puntero y Y  Y - 1, (Y)  Rr None 2
STD Y+q,Rr Guarde indirectamente con desplazamiento en el puntero y (Y + q)  Rr None 2
ST Z, Rr Guarde indirectamente y realice un post incremento en el puntero z (Z)  Rr None 2
ST Z+, Rr Guarde indirectamente y realice un pre decremento en el puntero z (Z)  Rr, Z  Z + 1 None 2
ST -Z, Rr Guarde indirectamente con desplazamiento en el puntero z Z  Z - 1, (Z)  Rr None 2
STD Z+q,Rr Guarde indirectamente y realice un post incremento en el puntero z (Z + q)  Rr None 2
STS k, Rr Guarde directo a SRAM (k)  Rr None 2
LPM Cargar la memoria de un programa R0  (Z) None 3
LPM Rd, Z Cargar la memoria de un programa Rd  (Z) None 3
LPM Rd, Z+ Cargar la memoria de un programa y pos incremente Rd  (Z), Z  Z+1 None 3
SPM Guarde la memoria de un programa (Z)  R1:R0 None -
IN Rd, P Leer desde el Puerto P Rd  P None 1
OUT P, Rr Escribir en el Puerto P P  Rr None 1
PUSH Rr Ponga Registro de pila STACK  Rr None 2
POP Rd Abre Registro de la Pila Rd  STACK None 2
BIT AND BIT-TEST INSTRUCTIONS
SBI P,b Establecer el bit en el Registro de I / O I/O(P,b)  1 None 2
CBI P,b Borre el bit en el Registro de I / O I/O(P,b)  0 None 2
LSL Rd Desplazamiento lógico a la izquierda Rd(n+1)  Rd(n), Rd(0)  0 Z,C,N,V 1
LSR Rd Desplazamiento lógico a la derecha Rd(n)  Rd(n+1), Rd(7)  0 Z,C,N,V 1
ROL Rd Rote a la izquierda atraves del llevo Rd(0)C,Rd(n+1) Rd(n),CRd(7) Z,C,N,V 1
ROR Rd Rote a la derecha atraves del llevo Rd(7)C,Rd(n) Rd(n+1),CRd(0) Z,C,N,V 1
ASR Rd Aritmética Desplazamiento a la derecha Rd(n)  Rd(n+1), n=0..6 Z,C,N,V 1
SWAP Rd Intercambiar Nibbles (4bits) Rd(3..0)Rd(7..4),Rd(7..4)Rd(3..0) None 1
BSET s Establecer bandera SREG(s)  1 SREG(s) 1
BCLR s Borrar bandera SREG(s)  0 SREG(s) 1
BST Rr, b Guardar bit desde el registro T T  Rr(b) T 1
BLD Rd, b Cargar bit desde el registro T Rd(b)  T None 1
SEC Establecer llevo C 1 C 1
CLC Borrar llevo C 0 C 1
SEN Establecer bandera de signo N 1 N 1
CLN Borrar bandera de signo N 0 N 1
SEZ Establecer bandera de cero Z 1 Z 1
CLZ Borrar bandera de cero Z 0 Z 1
SEI Habilitar interrupción global I 1 I 1
CLI Deshabilitar interrupción global I 0 I 1
SES Establecer bandera de test de signo S 1 S 1
CLS Borrar bandera de test de signo S 0 S 1
SEV Establecer desbordamiento de complemento a dos V 1 V 1
CLV Borrar desbordamiento de complemento a dos V 0 V 1
SET Establecer T en SREG T 1 T 1
CLT Borrar T en SREG T 0 T 1
SEH Establecer bandera de llevo intermedio en SREG H 1 H 1

Mnemonics Operands Description Operation Flags #Clocks


CLH Borra bandea de llevo intermedio en SREG H 0 H 1
MCU CONTROL INSTRUCTIONS
NOP No hay operación None 1
SLEEP Dormir (see specific descr. for Sleep function) None 1
WDR Restablecer watchdog (see specific descr. for WDR/timer) None 1
BREAK Romper For On-Chip Debug Only None N/A

You might also like