Está en la página 1de 5

ESCUELA POLITÉCNICA NACIONAL

LABORATORIO DE SISTEMAS MICROPROCESADOS

PREPARATORIO DE:
SISTEMAS MICROPROCESADOS

Práctica #: 04 Tema:

Fecha de Realización de la Práctica: 2011 / 10 / 03


año mes día

Realizado por:

Alumno: VICTOR HUGO TARAMUEL Grupo:

(Espacio Reservado)

Fecha de entrega: 2011 / 10 / 03 f. ______________________


año mes día Recibido por:

________________________________________________

Período: Oct - Mar

Mar - Ago
1.- REVISAR EL CONJUNTO DE INSTRUCCIONES PARA LOS MICROCONTROLADORES AVR DE 8
BITS, EN PARTICULAR LOS SALTOS INCONDICIONALES Y CONDICIONALES.

CLASIFICACIÓN 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 TAMBIÉN, LOS CONDICIONADOS PARA LOS CUALES EL MICROCONTROLADOR PRIMERO
EVALÚA LA CONDICIÓN QUE SE ESPECIFICA EN LA INSTRUCCIÓN Y LUEGO SI LA RESPUESTA ES
VERDADERA, SALTA. EN EL CASO CONTRARIO, NO SALTA Y CONTINUA EN LA SECUENCIA NORMAL
DEL PROGRAMA.

SALTAR DIRECTAMENTE Y EN FORMA CONDICIONAL

• SALTA A LA LOCALIDAD DE LA FLASH CON DIRECCIÓN k (0x0000000 … 0x3FFFFF = 4 Megas)


MNEMÓNICO: JMP k [3]
OPERACIÓN: PC ← k
CÓDIGO: 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 INSTRUCCIÓN DEL SALTO
MNEMÓNICO: RJMP k [2]
OPERACIÓN: PC ← PC+k+1
CÓDIGO: 1100 kkkk kkkk kkkk

2.- HACER UN RESUMEN DE LAS DIRECTIVAS DEL ASSEMBLER QUE CREAN TABLAS DE DATOS EN
LA MEMORIA DE PROGRAMA.

COPIAR REGISTROS

• COPIA DE REGISTROS (R0 … R31)


MNEMÓNICO: MOV Rd,Rr [1]
OPERACIÓN: Rd ← Rr
CÓDIGO: 0010 11rd dddd rrrr
• COPIA DE PAREJAS DE REGISTROS (SE ESPECIFICAN SOLO REGISTROS PARES R0, R2 … R28, R30 )
MNEMÓNICO: MOVW Rd,Rr [1]
OPERACIÓN: Rd ← Rr Rd+1 ← Rr+1
CÓDIGO: 0000 0001 dddd rrrr

CARGAR A UN REGISTRO CON UN VALOR


• EN UN REGISTRO (R16 … R31) SE CARGA UN VALOR DE 8 BITS (0 … 255)
MNEMÓNICO: LDI Rd,K [1]
OPERACIÓN: Rd ← K
CÓDIGO: 1110 KKKK dddd KKKK

CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO DIRECTO

• EN UN REGISTRO (R0 … R31) SE CARGA EL CONTENIDO DE UNA LOCALIDAD CON DIRECCIÓN k (0


… 65535), UTILIZANDO DIRECCIONAMIENTO DIRECTO
MNEMÓNICO: LDS Rd,k [2]
OPERACIÓN: Rd ← (k)
CÓDIGO: 1001 000d dddd 0000
kkkk kkkk kkkk kkkk

CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO


• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO
DIRECCIONAMIENTO INDIRECTO
MNEMÓNICO: LD Rd,X [2]
OPERACIÓN: Rd ← (X)
CÓDIGO: 1001 000d dddd 1100
MNEMÓNICO: LD Rd,Y [2]
OPERACIÓN: Rd ← (Y)
CÓDIGO: 1000 000d dddd 1000
MNEMÓNICO: LD Rd,Z [2]
OPERACIÓN: Rd ← (Z)
CÓDIGO: 1000 000d dddd 0000

Y CON DESPLAZAMIENTO CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO Y CON


POST INCREMENTO

• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO


DIRECCIONAMIENTO INDIRECTO Y EL PUNTERO SE INCREMENTA POSTERIORMENTE
MNEMÓNICO: LD Rd,X+ [2]
OPERACIÓN: Rd ← (X) X ← X+1
CÓDIGO: 1001 000d dddd 1101
MNEMÓNICO: LD Rd,Y+ [2]
OPERACIÓN: Rd ← (Y) Y ← Y+1
CÓDIGO: 1001 000d dddd 1001
MNEMÓNICO: LD Rd,Z+ [2]
OPERACIÓN: Rd ← (Z) Z ← Z+1
CÓDIGO: 1001 000d dddd 0001

CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO Y CON PRE DISMINUCIÓN

• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO


DIRECCIONAMIENTO INDIRECTO EN EL QUE EL PUNTERO PREVIAMENTE SE HA DISMINUIDO
MNEMÓNICO: LD Rd,-X [2]
OPERACIÓN: X ← X-1 Rd ← (X)
CÓDIGO: 1001 000d dddd 1110
MNEMÓNICO: LD Rd,-Y [2]
OPERACIÓN: Y ← Y-1 Rd ← (Y)
CÓDIGO: 1001 000d dddd 1010
MNEMÓNICO: LD Rd,-Z [2]
OPERACIÓN: Z ← Z-1 Rd ← (Z)
CÓDIGO: 1001 000d dddd 0010

CARGAR DESDE LA SRAM CON DIRECCIONAMIENTO INDIRECTO

• EN UN REGISTRO (R0 … R31) SE CARGA DESDE UNA LOCALIDAD (0 … 65535), UTILIZANDO


DIRECCIONAMIENTO INDIRECTO AL QUE SE SUMA EL DESPLAZAMIENTO (0 … 63)
MNEMÓNICO: LDD Rd,Y+q [2]
OPERACIÓN: Rd ← (Y+q)
CÓDIGO: 10q0 qq0d dddd 1qqq
MNEMÓNICO: LDD Rd,Z+q [2]
OPERACIÓN: Rd ← (Z+q)
CÓDIGO: 10q0 qq0d dddd 0qqq

3.- REALIZAR UN PEQUEÑO PROGRAMA QUE REALICE LA COMPARACIÓN ENTRE DOS


REGISTROS, Y DETERMINE QUÉ VALOR TOMAN LAS BANDERAS Z Y C DEPENDIENDO SI LOS
REGISTROS SON IGUALES, Ó SI EL UNO ES MAYOR O MENOR QUE EL OTRO. ANOTAR SUS
CONCLUSIONES.

ESCRIBIR EL PROGRAMA QUE SE INDICA A CONTINUACIÓN:


4.- En la memoria SRAM se deben reservar cuatro espacios de memoria de acuerdo al siguiente
detalle: Tres localidades de 1 byte cada una a los que se les asigna los nombres VALOR, ZONA1
y ZONA2, y se debe reservar un espacio adicional llamado NOMBRE de un número de bytes
correspondiente a todas las letras del nombre más extenso de los integrantes del grupo,
incluidos los espacios en blanco. Por ejemplo si ese nombre fuera; JUAN JOSE FLORES DELGADO ,
se deberían dejar 24 bytes.

5.- Escribir un programa que copie el contenido de las localidades de SRAM : VALOR, ZONA1 y
ZONA2 a tres registros diferentes. Luego debe proceder a comparar estos registros, de forma
que se determine si VALOR está sobre ZONA2, bajo ZONA1 ó entre esos dos valores. De acuerdo
al resultado de la acción anterior se debe copiar hacia el espacio NOMBRE dejado en SRAM uno
de los textos que se deben crear como tablas en la memoria FLASH, de acuerdo al siguiente
detalle:

Si el contenido de VALOR es igual o mayor que el de ZONA2, el texto a copiar es el Nº 1,


Si el contenido de VALOR es menor o igual que el de ZONA1, el texto a copiar es el Nº 3, y
Si el contenido de VALOR está entre ZONA1 y ZONA2 el texto a copiar es el Nº 2

También podría gustarte