Vous êtes sur la page 1sur 20

jaime.velarde@epn.edu.

ec
1
INSTRUCCIONES DE SALTO EN
LOS MICROCONTOLADORES
ATmega
Elaborado por: Ing. Jaime E. Velarde
jaime.velarde@epn.edu.ec
2
CLASIFICACIN DE LOS SALTOS
EXISTE DOS TIPOS DE SALTOS:
LOS DENOMINADOS INCONDICIONALES, QUE
SON AQUELLOS QUE SE EJECUTAN SIEMPRE
QUE SE ENCUENTRA EN EL PROGRAMA
EXISTEN TAMBIN, LOS CONDICIONADOS
PARA LOS CUALES EL MICROCONTROLADOR
PRIMERO EVALA LA CONDICIN QUE SE
ESPECIFICA EN LA INSTRUCCIN Y LUEGO SI
LA RESPUESTA ES VERDADERA, SALTA. EN
EL CASO CONTRARIO, NO SALTA Y CONTINUA
EN LA SECUENCIA NORMAL DEL PROGRAMA
jaime.velarde@epn.edu.ec
3
SALTAR DIRECTAMENTE Y EN
FORMA INCONDICIONAL
SALTA A LA LOCALIDAD DE LA FLASH CON
DIRECCIN k (0x0000000 0x3FFFFF = 4 Megas)
MNEMNICO: JMP k [3]
OPERACIN: PC k
CDIGO: 1001 010k kkkk 110k
kkkk kkkk kkkk kkkk
SALTA A UNA LOCALIDAD DE LA FLASH DISTANTE k
LOCALIDADES (-2048 2047), DESDE DONDE SE
ENCUENTRA LA INSTRUCCIN DEL SALTO
MNEMNICO: RJMP k [2]
OPERACIN: PC PC+k+1
CDIGO: 1100 kkkk kkkk kkkk
jaime.velarde@epn.edu.ec
4
SALTAR INDIRECTAMENTE Y EN
FORMA INCONDICIONAL
SALTA A LA LOCALIDAD DE LA FLASH
CUYA DIRECCIN ES EL CONTENIDO
DEL PUNTERO Z (0x0000 0xFFFF = 64
Kilos)
MNEMNICO: IJMP [2]
OPERACIN: PC Z
CDIGO: 1001 0100 0000 1001
jaime.velarde@epn.edu.ec
5
COMPARAR EL CONTENIDO DE
UN REGISTRO
COMPARA EL REGISTRO CON UN VALOR INMEDIATO
MNEMNICO: CPI Rd,K [2]
OPERACIN: Rd - K
CDIGO: 0011 KKKK dddd KKKK
COMPARA ENTRE DOS REGISTROS
MNEMNICO: CP Rd,Rr [2]
OPERACIN: Rd - Rr
CDIGO: 0001 01rd dddd rrrr
COMPARA ENTRE DOS REGISTROS Y EL LLEVO
MNEMNICO: CPC Rd,Rr [2]
OPERACIN: Rd - Rr - C
CDIGO: 0000 01rd dddd rrrr
jaime.velarde@epn.edu.ec
6
BANDERAS QUE SE MODIFICAN
CON LAS COMPARACIONES
LAS BANDERAS TOMAN EL VALOR DE UNO
LGICO COMO RESULTADO DE LA RESTA O
COMPARACIN DE LOS OPERANDOS:
C = 1 CUANDO HAY DEBO EN EL BIT MAS
SIGNIFICATIVO
Z = 1 CUANDO TODOS LOS BITS SON CERO
N = 1 CUANDO AL BIT MAS SIGNIFICATIVO ES UNO
V = 1 CUANDO HAY DESBORDAMIENTO EN LA
OPERACIN DE NMEROS CON SIGNO EN
COMPLEMENTO DE 2
S = 1 COMO RESULTADO DE N OR EXCLUSIVO V
H = 1 CUANDO HAY DEBO ENTRE EL BIT 3 AL BIT 4
jaime.velarde@epn.edu.ec
7
BIFURCAR DE ACUERDO AL BIT
DEL REGISTRO DE ESTADO
BIFURCA EL PROGRAMA SI EL BIT DEL SREG ES
CERO
MNEMNICO: BRBC s,k [1 o 2]
OPERACIN:
Si SREG(s) = 0 entonces PC PC + k + 1 SALTA
Si SREG(s) = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk ksss
BIFURCA EL PROGRAMA SI EL BIT DEL SREG ES
UNO
MNEMNICO: BRBS s,k [1 o 2]
OPERACIN:
Si SREG(s) = 1 entonces PC PC + k + 1 SALTA
Si SREG(s) = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk ksss
Nota: el salto est comprendido entre -64 y 63 localidades
jaime.velarde@epn.edu.ec
8
DIAGRAMAS DE BIFURCAR DE
ACUERDO AL BIT DEL SREG
ES SREG(s) = 0?
SIGUIENTE
INSTRUCCIN
NO
SI
DESTINO
DEL SALTO
ES SREG(s) = 1?
SIGUIENTE
INSTRUCCIN
NO
SI
DESTINO
DEL SALTO
BRBC BRBS
jaime.velarde@epn.edu.ec
9
BIFURCAR DE ACUERDO A LA
BANDERA C (BANDERA DEL LLEVO)
BIFURCA EL PROGRAMA SI NO HAY LLEVO (CARRY
CLEAR)
MNEMNICO: BRCC k [1 o 2]
OPERACIN:
Si C = 0 entonces PC PC + k + 1 SALTA
Si C = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k000
BIFURCA EL PROGRAMA SI HAY LLEVO (CARRY
SET)
MNEMNICO: BRCS k [1 o 2]
OPERACIN:
Si C = 1 entonces PC PC + k + 1 SALTA
Si C = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k000
jaime.velarde@epn.edu.ec
10
BIFURCAR DE ACUERDO A LA
BANDERA Z (BANDERA DE CERO)
BIFURCA EL PROGRAMA SI NO SON IGUALES O
RESULTADO DIFERENTE DE CERO
MNEMNICO: BRNE k [1 o 2]
OPERACIN:
Si Z = 0 entonces PC PC + k + 1 SALTA
Si Z = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k001
BIFURCA EL PROGRAMA SI SON IGUALES O
RESULTADO CERO
MNEMNICO: BREQ k [1 o 2]
OPERACIN:
Si Z = 1 entonces PC PC + k + 1 SALTA
Si Z = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k001
jaime.velarde@epn.edu.ec
11
BIFURCAR DE ACUERDO A LA
BANDERA N (BANDERA DE NEGACIN)
BIFURCA EL PROGRAMA SI EL RESULTADO ES
POSITIVO
MNEMNICO: BRPL k [1 o 2]
OPERACIN:
Si N = 0 entonces PC PC + k + 1 SALTA
Si N = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k010
BIFURCA EL PROGRAMA SI EL RESULTADO ES
NEGATIVO
MNEMNICO: BRMI k [1 o 2]
OPERACIN:
Si N = 1 entonces PC PC + k + 1 SALTA
Si N = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k010
jaime.velarde@epn.edu.ec
12
BIFURCAR DE ACUERDO A LA
BANDERA V (BANDERA DE DESBORDAMIENTO)
BIFURCA EL PROGRAMA SI NO HAY
DESBORDAMIENTO
MNEMNICO: BRVC k [1 o 2]
OPERACIN:
Si V = 0 entonces PC PC + k + 1 SALTA
Si V = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k011
BIFURCA EL PROGRAMA SI HAY
DESBORDAMIENTO
MNEMNICO: BRVS k [1 o 2]
OPERACIN:
Si V = 1 entonces PC PC + k + 1 SALTA
Si V = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k011
jaime.velarde@epn.edu.ec
13
BIFURCAR DE ACUERDO A LA
BANDERA S (BANDERA DEL SIGNO)
BIFURCA EL PROGRAMA SI ES MAYOR O IGUAL
MNEMNICO: BRGE k [1 o 2]
OPERACIN:
Si S = 0 entonces PC PC + k + 1 SALTA
Si S = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k100
BIFURCA EL PROGRAMA SI ES MENOR
MNEMNICO: BRLT k [1 o 2]
OPERACIN:
Si S = 1 entonces PC PC + k + 1 SALTA
Si S = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k100
jaime.velarde@epn.edu.ec
14
BIFURCAR DE ACUERDO A LA
BANDERA H (BANDERA DEL LLEVO INTERMEDIO)
BIFURCA EL PROGRAMA SI NO HAY LLEVO
INTERMEDIO
MNEMNICO: BRHC k [1 o 2]
OPERACIN:
Si H = 0 entonces PC PC + k + 1 SALTA
Si H = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k101
BIFURCA EL PROGRAMA SI HAY LLEVO
INTERMEDIO
MNEMNICO: BRHS k [1 o 2]
OPERACIN:
Si H = 1 entonces PC PC + k + 1 SALTA
Si H = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k101
jaime.velarde@epn.edu.ec
15
BIFURCAR DE ACUERDO A LA
BANDERA T
BIFURCA EL PROGRAMA SI ES CERO LA BANDERA
DE USUARIO
MNEMNICO: BRTC k [1 o 2]
OPERACIN:
Si T = 0 entonces PC PC + k + 1 SALTA
Si T = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k110
BIFURCA EL PROGRAMA SI ES UNO LA BANDERA
DE USUARIO
MNEMNICO: BRTS k [1 o 2]
OPERACIN:
Si T = 1 entonces PC PC + k + 1 SALTA
Si T = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k110
jaime.velarde@epn.edu.ec
16
BIFURCAR DE ACUERDO A LA
BANDERA I (BANDERA DE INTERRUPCIN GLOBAL)
BIFURCA EL PROGRAMA SI LAS INTERRUPCIONES
ESTN DESHABILITADAS
MNEMNICO: BRID k [1 o 2]
OPERACIN:
Si I = 0 entonces PC PC + k + 1 SALTA
Si I = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k111
BIFURCA EL PROGRAMA SI LAS INTERRUPCIONES
ESTN HABILITADAS
MNEMNICO: BRIE k [1 o 2]
OPERACIN:
Si I = 1 entonces PC PC + k + 1 SALTA
Si I = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k111
jaime.velarde@epn.edu.ec
17
BIFURCAR DE ACUERDO A LA
BANDERA C (NMEROS SIN SIGNO)
BIFURCA EL PROGRAMA SI ES IGUAL O ESTA
SOBRE
MNEMNICO: BRSH k [1 o 2]
OPERACIN:
Si C = 0 entonces PC PC + k + 1 SALTA
Si C = 1 entonces PC PC + 1 CONTINUA
CDIGO: 1111 01kk kkkk k000
BIFURCA EL PROGRAMA SI ESTA BAJO
MNEMNICO: BRLO k [1 o 2]
OPERACIN:
Si C = 1 entonces PC PC + k + 1 SALTA
Si C = 0 entonces PC PC + 1 CONTINUA
CDIGO: 1111 00kk kkkk k000
jaime.velarde@epn.edu.ec
18
LLAMAR A SUBRUTINA
DIRECTAMENTE
GUARDA EN EL STACK LA DIRECCIN DE LA PRXIMA
INSTRUCCIN Y SALTA A LA LOCALIDAD DE LA FLASH CON
DIRECCIN k (0x0000000 0x3FFFFF)
MNEMNICO: CALL k [4]
OPERACIN: STACK PC + 2 SP SP - 2
PC k
CDIGO: 1001 010k kkkk 111k
kkkk kkkk kkkk kkkk
GUARDA EN EL STACK LA DIRECCIN DE LA PRXIMA
INSTRUCCIN Y SALTA A UNA LOCALIDAD DE LA FLASH
DISTANTE k LOCALIDADES (-2048 2047), DESDE DONDE SE
ENCUENTRA LA INSTRUCCIN DE LA LLAMADA
MNEMNICO: RCALL k [3]
OPERACIN: STACK PC + 1 SP SP - 2
PC PC + k + 1
CDIGO: 1101 kkkk kkkk kkkk
jaime.velarde@epn.edu.ec
19
LLAMAR A SUBRUTINA
INDIRECTAMENTE
GUARDA EN EL STACK LA DIRECCIN
DE LA SIGUIENTE DIRECCIN Y SALTA
A LA LOCALIDAD DE LA FLASH CUYA
DIRECCIN ES EL CONTENIDO DEL
PUNTERO Z (0x0000 0xFFFF)
MNEMNICO: ICALL [3]
OPERACIN: STACK PC + 1 SP SP 2
PC Z
CDIGO: 1001 0101 0000 1001
jaime.velarde@epn.edu.ec
20
RETORNAR DE LA SUBRUTINA Y
DE LA INTERRUPCIN
RECUPERA DESDE EL STACK LA DIRECCIN
QUE FUE GUARDADA POR LA LLAMADA DE
SUBRUTINA
MNEMNICO: RET [4]
OPERACIN: PC STACK SP SP + 2
CDIGO: 1001 0101 0000 1000
RECUPERA DESDE EL STACK LA DIRECCIN
QUE FUE GUARDADA POR LA INTERRUPCIN
MNEMNICO: RETI [4]
OPERACIN: PC STACK SP SP + 2
I 1
CDIGO: 1101 0101 0001 1000