Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

Programación estructurada.

Enviado por   •  25 de Abril de 2018  •  3.084 Palabras (13 Páginas)  •  386 Visitas

Página 1 de 13

...

rjmp significa salto relativo (relative jump, en inglés). En este tipo de salto el operando k, que en este caso representa una distancia relativa, se suma al contenido actual del contador de programa (PC, por sus siglas en inglés), lo que causa que éste continúe su ejecución en una nueva dirección. En lenguaje ensamblador esta distancia se define por medio de una etiqueta, que el ensamblador se encarga de calcular. Esta distancia no debe exceder de 2048, hacia adelante (valor positivo) o hacia atrás (valor negativo).

Ejemplo de uso:

loop:

inc r16

rjmp loop

En este ejemplo, el salto relativo es rjmp loop, que "apunta" a la etiqueta de la instrucción inc r16, que como está antes del salto relativo ocupa una dirección menor en la memoria; por lo tanto, en este caso k deberá ser un valor negativo, pero de eso se encarga el ensamblador, nosotros no debemos preocuparnos por eso.

Instrucción ijmp

ijmp significa salto indirecto (indirect jump, por sus siglas en inglés). Para ejecutar este tipo de operando es necesario guardar previamente en el registro Z (concatenación de los registros 30 y 31) la dirección a la que se desea realizar el salto. El siguiente ejemplo ilustra su uso:

ldi zh,high(16384)

ldi zl,low(16384)

:

ijmp

La instrucción ldi zh,high(16384) guarda el byte alto de la dirección 16386, valor que se convierte a 16 bits, en el registro zh (r31). La instrucción ldi zl,low(16384) guarda en zh (r30) el byte bajo de 16384.

En este ejemplo, el salto indirecto llevará al procesador a ejecutar la instrucción almacenada en la dirección 16384 y continuará en la 16385, y así sucesivamente.

Las llamadas a procedimientos rcall e icall las veremos más adelante, en otra sección del curso.

Tema 4.3 Saltos Condicionales

Antes de entrar de lleno en las instrucciones de salto condicional, vamos a conocer con más detalle el registro de estado (SREG) de los procesadores AVR.

Registro de estado

En los procesadores AVR este registro se encuentra direccionado en el espacio de E/S en la dirección $3F, y está definido como:

Bit/Nombre/Valor inicial

7

6

5

4

3

2

1

0

I

T

H

S

V

N

Z

C

0

0

0

0

0

0

0

0

Registro SREG

Donde:

El bit 7, bit I, de interrupciones, es el bit global de interrupciones. Si I = 0, las interrupciones están deshabilitadas. Si I = 1, las interrupciones están habilitadas.

El bit 6, bit T, es el bit de Almacena Copia (Copy Storage), es el origen o destino de las instrucciones BLD (Bit Load) y BST (Bit Store).

El bit 5, bit H, de Half-Carry, es el bit de bandera H, que es el bit de acarreo medio, que su utiliza en algunas instrucciones aritméticas.

El bit 4, bit S, de Signo, S = N ⊕ V, es siempre el OR-exclusivo entre los bits N y V.

El bit 3, bit V, es el bit de desbordamiento del complemento a dos, que se utiliza en aritmética en complemento a dos.

El bit 2, bit N, Negativo, indica un resultado negativo después de una operación aritmética o lógica.

El bit 1, bit Z, de Cero (Zero) indica que el resultado de la operación aritmética o lógica es exactamente cero.

El bit 0, bit C, de Acarreo (Carry Bit). Indica que la última operación ejecutada produjo un bit de acarreo.

Instrucciones de salto condicional

Los procesadores AVR tienen un conjunto muy completo de instrucciones de saltos condicionales. En la siguiente tabla se muestran estas instrucciones:

Mnemónico

Operandos

Descripción

Operación

SBRC

Rr,b

Salta (skip) si bit b en Rr está en cero (clear).

Si (Rr(b)= 0) entonces PC ← PC + 2 o 3

SBRS

Rr,b

Salta si bit b en Rr está en uno (set).

Si (Rr(b) = 1) entonces PC ← PC + 2 o 3

SBIC

P,b

Salta si bit b en el puerto P está en cero (clear).

Si (P(b) = 0) entonces PC ← PC + 2 o 3

SBIS

P,b

Salta si bit b en el puerto P está en uno (set).

Si (P(b) = 1) entonces PC ← PC + 2 o 3

BRBS

s,k

Salta

...

Descargar como  txt (21 Kb)   pdf (153.3 Kb)   docx (586.4 Kb)  
Leer 12 páginas más »
Disponible sólo en Essays.club