Está en la página 1de 3

Saltos y bifurcaciones en assembler

Erika Viteri, Facultad de Ingeniera Elctrica y Electrnica Escuela Politcnica Nacional (EPN),
Quito - Ecuador

- JMP: Salta a una localidad de la memoria flash, el salto


Resumen El presente documento presenta el desarrollo de las puede tener como destino una direccin o una etiqueta, la
instrucciones de salto y bifurcacin en el lenguaje ensamblador, la sintaxis es la siguiente:
sintaxis y casos de uso de las diferentes instrucciones de uso para JMP k ; donde k = direccin /etiqueta
saltos y condiciones que podemos encontrar en el lenguaje
assembler, como caso de estudio se presentan las instrucciones
ms utilizadas para el ATEMEGA 164P

ndices assembler, bifurcacin, instruccin, saltos

I. INTRODUCCIN
Assembler es un lenguaje de programacin de bajo nivel, para Figura1. Diagrama instruccin JMP. [3]
microcontroladores, microprocesadores y computadores. Este - RJMP: Salta a una localidad de la memoria flash, distante k
es un lenguaje que constituye la representacin ms directa del localidades, la sintaxis es la siguiente:
cdigo de mquina especificado para cada microprocesador. RJMP k
Un programa escrito en lenguaje ensamblador consiste de una
serie de instrucciones que corresponden al flujo de rdenes
ejecutables, que pueden ser cargadas en la memoria de un
microprocesador. Las instrucciones y la informacin ingresada
al microprocesador son almacenadas en los registros que
dispone el dispositivo, a los cuales se puede acceder mediante
las respectivas instrucciones. Se dispone de instrucciones
Figura2. Diagrama instruccin RJMP. [3]
clasificadas segn la accin que realizan, teniendo las
siguientes: de transferencia de datos, de salto y bifurcaciones, - IJMP: Salta a la localidad de la flash cuya direccin es el
de manipulacin de bits, aritmticas y lgicas y las contenido del puntero Z, su sintaxis es:
instrucciones de control. [1][2] IJMP
Las instrucciones a desarrollar son las de salto y bifurcacin,
las cuales permiten alterar el curso de ejecucin del programa.

II. INSTRUCCIONES DE SALTO


Un salto es el proceso de repetir una secuencia de
instrucciones un determinado nmero de veces, especifica el Figura3. Diagrama instruccin IJMP. [3]
lugar exacto y absoluto de la prxima instruccin a ejecutar.
Un salto pone al Program Counter (PC) en un valor en
particular.Las instrucciones de salto se clasifican en dos: B. Condicionales
incondicionales y condicionales. Las instrucciones de salto condicionales se ejecutan solo si se
cumple determinada condicin, operan con la influencia del
A. Incondicionales
registro de estado (SREG). [2]
Las instrucciones de salto incondicionales se ejecutan siempre Las banderas con las que trabajan estas instrucciones de salto
que se encuentren en el programa. Existen tres instrucciones son las siguientes: Carry (C), Zero (Z), Negacin (N),
que permiten saltos incondicionales. [2] Desborde (V).
- JMP: salto directo.
- RJMP: salto relativo.
- IJMP: salto indirecto.
Sintaxis: BRHS k
Si H = 1 entonces PC PC + k + 1 SALTA
Si H = 0 entonces PC PC + 1 CONTINUA

- BRID: Bifurca el programa si las interrupciones estn


deshabilitadas.
Sintaxis: BRID k [4]
Si I = 0 entonces PC PC + k + 1 SALTA
Si I = 1 entonces PC PC + 1 CONTINUA
- BRIE: Bifurca el programa si las interrupciones estn
habilitadas.
Sintaxis: BRLT k [4]
Tabla1. Instrucciones de saltos condicionales [2]
Si I = 1 entonces PC PC + k + 1 SALTA
Si I = 0 entonces PC PC + 1 CONTINUA
Cada bandera puede ser usada para realizar una bifurcacin
condicional C. Subrutinas
- BRBC: Bifurca el programa si el bit del SREG es cero. Se pueden realizar saltos mediante el llamado a una subrutina,
Sintaxis: BRBC s, k [4] la cual facilita la programacin, para ejecutar una subrutina se
Si SREG(s) = 0 entonces PC PC + k + 1 SALTA tienen las siguientes instrucciones:
Si SREG(s) = 1 entonces PC PC + 1 CONTINUA
- BRBS: Bifurca el programa si el bit del SREG es uno. - CALL: Guarda en el STACK la direccin de la ltima
Sintaxis: BRBS s, k [4] instruccin ejecutada, para poder retornar y salta a la siguiente
Si SREG(s) = 1 entonces PC PC + k + 1 SALTA localidad de la FLASH.
Si SREG(s) = 0 entonces PC PC + 1 CONTINUA Sintaxis: CALL k [4]
STACK PC + 2
SP SP 2, (2 bytes, 16 bits)
- RCALL: Guarda en el STACK la direccin de la prxima
instruccin y salta a una localidad de la FLASH distante k
localidades, desde donde se encuentra la instruccin de la
llamada.
Sintaxis: RCALL k [4]
Figura4. Diagrama instrucciones BRBC, BRBS. [3]
STACK PC + 1
- BRCC: Bifurca el programa si el bit del carry es cero. SP SP 2, (2 bytes, 16 bits)
Sintaxis: BRCC k [4] PC PC + k + 1
Si C = 0 entonces PC PC + k + 1 SALTA - ICALL: Guarda en el STACK la direccin de la siguiente
Si C = 1 entonces PC PC + 1 CONTINUA direccin y salta a una localidad de la FLASH cuya direccin
- BRCS: Bifurca el programa si el bit del carry es uno. es el contenido del puntero Z.
Sintaxis: BRCS k [4] Sintaxis: ICALL [4]
Si C = 1 entonces PC PC + k + 1 SALTA STACK PC + 1
Si C = 0 entonces PC PC + 1 CONTINUA SP SP 2, (2 bytes, 16 bits)
- RET: Recupera desde el STACK la direccin que fue
- BRGE: Bifurca el programa si es mayor o igual. guardada por la llamada de subrutina.
Sintaxis: BRGE k [4] Sintaxis: RET [4]
Si S = 0 entonces PC PC + k + 1 SALTA PC STACK
Si S = 1 entonces PC PC + 1 CONTINUA SP SP + 2, (2 bytes, 16 bits)
- BRLT: Bifurca el programa si menor. - RETI: Recupera desde el STACK la direccin que fue
Sintaxis: BRLT k [4] guardada por la interrupcin
Si S = 1 entonces PC PC + k + 1 SALTA Sintaxis: RETI [4]
Si S = 0 entonces PC PC + 1 CONTINUA PC STACK
SP SP + 2, (2 bytes, 16 bits)
BRHC: Bifurca el programa si no hay carry intermedio. I1
Sintaxis: BRHC k [4]
Si H = 0 entonces PC PC + k + 1 SALTA
Si H = 1 entonces PC PC + 1 CONTINUA
- BRHS: Bifurca el programa si hay carry intermedio.
III. CONCLUSIONES
- Existen varios tipos de instrucciones para realizar saltos y
bifurcaciones segn la condicin que cumplan o ya sea que se
ejecuten sin cumplir la condicin, depende de las necesidades
de programacin segn la accin que se desea realice el
microprocesador.
- Las instrucciones condicionales utilizan el registro de estado,
mediante cada una de las banderas que forman parte de este
registro, comprueban si determinada condicin se cumple o no
y realizan el salto.
- Las subrutinas tambin constituyen un salto, las cuales
utilizan la pila de usuario o STACK para almacenar una
direccin de retorno, mediante el llamado a subrutinas se logra
optimizar la programacin.

IV. REFERENCIAS
[1] [Online] Lenguaje ensamblador, articulo disponible:
http://www.ecured.cu/Lenguaje_ensamblador

[2] Yacelga Marco, Clase de Sistemas Microprocesados, IEE633


SISTEMAS MICROPROCESADOS,2015.
[3] Chamorro William, Curso Sistemas Microprocesados, Instrucciones de
salto,2013.
[4] 8-bit AVR Instruction Set, 2010 Atmel Corporation.

V. BIOGRAFA

Erika Viteri, naci en Ambato-Ecuador el 14


de Julio de 1992. Realiz sus estudios
secundarios en el Colegio Experimental
Ambato, obteniendo el ttulo de bachiller
en ciencias, especialidad Fsico Matemtico.
Actualmente cursa el quinto y sexto semestre
de la carrera de Ingeniera Electrnica y
Redes de Informacin en la Escuela
Politcnica Nacional.
reas de inters: seguridad en redes,
conectividad y tecnologas de informacin.
(erika.viteri@epn.edu.ec)