Practica3 VF
Practica3 VF
Practica3 VF
Microprocesadores
División: Ingeniería Eléctrica Departamento: Ingeniería Electrónica
N.º de práctica: 03
1. Seguridad en la Ejecución
Peligro o fuente de energía Riesgo asociado
1 Manejo de Corriente Alterna Electrochoque
2 Manejo de corriente Continua Daño al equipo
2. Objetivos de aprendizaje.
El alumno aprenderá a usar instrucciones básicas en lenguaje ensamblador para el core ARM, realizando
operaciones de carga y almacenamiento de datos, desde y hacia registros y memoria. Además, utilizará
las herramientas de depuración para analizar los resultados de la ejecución de las instrucciones y así
hallar posibles errores y corregirlos.
3. Material y equipo.
a) Documentos: Set de instrucciones del core ARM M4, spnu118o ARM Assembly Language Tools
v15.12.0.LTS User’s Guide.
b) Tarjeta de desarrollo y ambiente IDE CCS.
4. Actividad Previa.
Para el MCU TM4C1294:
a) ¿Cuántos registros en total? ¿Cuáles son los de propósito general?, ¿Cuál es la función de los Registros
SP, LR, ¿PC? (Del manual del TM4C, revisar tema 2.3.3 Register Map y 2.3.4 Register Descriptions)
Tiene 20 registros en total, con 13 registros de propósito general de R0 a R12, La función del
registro SP cambia dependiendo del bit ASP, LR almacena la información de retorno para
subrutinas, PC contiene la información del programa actual al reiniciar.
b) ¿Qué es el registro PSR y en particular el APSR y qué información proporciona? (Revisar tema 2.3.4
Register Descriptions, Registro 17).
Tiene 3 funciones, cada bit proporciona una función diferente, APSR, EPSR, IPSR.
c) Considere que el inicio de Memoria RAM es la localidad 0x2000.0200. Realice un diagrama del
mapa de memoria con el valor de direcciones y su contenido para las siguientes declaraciones con
directivas.
Explique la función de cada directiva y argumentos. (Revise el documento spnu118o, tema 2).
.data ; Estos datos se colocan en memoria RAM
count . word 0xFF2233 ;
i . byte 0x10 ;
. byte 0x20 ;
. byte 0x30 ;
. byte 0xAA ;
j .word 0x80
ms .string "hola m undo”;
.bss M , 4
.byte 0xAA ;
d) Explique lo que hace y cómo funciona las directivas: field y string.
ptC .field count,32
5. Desarrollo.
5.1. Crear un nuevo proyecto para la práctica 3.
5.2. Escriba dentro del programa principal las siguientes instrucciones:
; Código para comprender el direccionamiento inmediato
; y sintaxis de instrucción MOV
. global main
.text
main:
MOV R2,#0x5
MOV R1,#0x2
ADD R2,R1,R2
; cargar un valor desde el depurador en R3 y ejecutar la sig. Instrucc. MOV
R4, R3
. end
5.3. Empleo de directivas de reserva de datos, lectura y escritura de datos en memoria. Empleando la sesión
de depuración ejecute cada instrucción y analice el resultado.
Agregue aquí el código de la actividad previa inciso (c)
. global main
.text ; Inicia sección de programa principal
; Estos punteros son valores constantes colocados en ROM
ptM . field M,32 ; ptM = dirección de (símbolo) M (campo de 32 bits, definida antes)
ptC .field count,32 ; ptC =
ptStr .field msg,32 ; ptStr = direccion del símbolo msg (32 bits)
stop B stop
. end
5.4. Describa el comportamiento de cada directiva e instrucción empleados en los puntos 5.2 y 5.3:
inicialización de datos en memoria RAM, operaciones realizadas, estado de los registros antes y después de
ejecutarse.
MOVE: Nos permite mover números de 32 bits entre registros o asignar un valor binario al registro.
ADD: Realiza una suma entre dos registros o un numero cualquiera y lo almacena en un registro.
LDR: Podemos guardar datos en memoria RAM.
STR: Recuperamos algún dato en memoria para almacenarlo en un registro.
LDRH: Guardamos valores en memoria solo utilizando la parte baja de las localidades de memoria.
Como observamos el valor a calcular esta almacenado en R1, posteriormente después de ejecutar la
rutina almacenamos el resultado en R0.
Cuestionario.
Etiqueta-MOV RX,RY-Comentarios
En los operandos colocamos los registros que queremos mover o los valores a
asignar a un registro.
¿Qué otros tipos de instrucción MOV existen en el set de instrucciones que se pueden emplear?
MOVT,MOVN.
ii. La instrucción LDR, que se emplea para cargar en un registro, un dato que está en
memoria.
Etiqueta-LDR-RX,[RY]-etiqutea.
Por medio de esta instrucción podemos asignar el valor contenido en RX a la dirección de
memoria en RY.
iii. La instrucción STR, que se emplea para almacenar en memoria un dato.
Etiqueta-STR RX,[RY]-comentarios.
Por medio de esta instrucción asignamos el valor almacenado en la dirección
apuntada por RY en RX.
iv. Para las dos instrucciones anteriores, que significa:
a) que no tenga sufijo, b) tenga sufijo B, c) tenga sufijo H?
Que movemos la parte baja o alta del valor operando.
c) Describa el uso de las siguientes instrucciones lógicas: AND, ORR, EOR, BIC, ORN.
d) Describa el uso de las siguientes instrucciones de desplazamiento: LSR, ASR, LSL, ROR, RRX.
e) ¿A qué operación aritmética corresponde un desplazamiento: a) a la derecha, b) a la
izquierda?
f) ¿Qué instrucciones se usan para hacer operaciones no signadas y signadas de suma y resta?
g) ¿Cómo reserva en memoria volátil una localidad de: 1 byte, 2 bytes, 4 bytes?
h) ¿Con cuál directiva se obtiene la dirección de una localidad reservada en RAM?
i) ¿Cómo se obtiene un dato que está en memoria RAM? Escriba las instrucciones necesarias y explique.
Utilizando la instrucción STR podemos obtener un dato almacenado en memoria y asignarlo a un
registro.
6. Conclusiones.
Mediante las instrucciones con que cuenta el microcontrolador podemos realizar operaciones básicas
de suma y multiplicación y demás, y a partir de estas generar funciones mas complejas, la
importancia de trabajar en ensamblador se encuentra en que ahora es posible verificar que esta
pasando realmente dentro del integrado y tener a conciencia una idea de lo que sucede cuando
usamos lenguajes de alto nivel.
7. Bibliografía.