Practica3 VF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Manual de Prácticas

Microprocesadores
División: Ingeniería Eléctrica Departamento: Ingeniería Electrónica

Aplicación de la plataforma de desarrollo

N.º de práctica: 03

Nombre completo del alumno Firma

Garcia Hernandez Carlos

N.º de brigada: Fecha de elaboración: 13/10/20 Grupo: 2


Manual de Prácticas
Microprocesadores
División: Ingeniería Eléctrica Departamento: Ingeniería Electrónica

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)

main: ; inicio del programa


MOVW R0, #0x1289 ; MOVW solo permite 16 bits
MOVT R1, #0x1211
MOV R1, #0X1239
LDR R4, ptM ; R4 = direccion de M (a donde apunta ptM)
LDR R3, ptC
LDR R2, [R3] ; R2 = contenido donde apunta R3
STR R2, [R4] ; guarda R2 en direccion apuntada por R4
LDRH R5, [R3] ; carga l6 bits en parte baja de R5
MOV R6, #10100001b ; carga usando formato binario

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.

Programa que obtiene el factorial de un numero entre 1 y 8.

Los resultados del programa son los siguientes:

Como observamos el valor a calcular esta almacenado en R1, posteriormente después de ejecutar la
rutina almacenamos el resultado en R0.
Cuestionario.

Para MCU TM4C1294:


a) ¿Cuáles son los modos de direccionamiento Inmediato, Indexado y Relativo al Contador de
Programa
(PC)?
Por medio de MOVE hacemos un direccionamiento inmediato mientras que con LDR realizamos
direccionamiento indexado.
b) Describa la sintaxis y la función que tienen los argumentos/operandos, así como el estado de
los registros y memoria, antes y después de ejecutarse las siguientes instrucciones:
i. La instrucción MOV, que se emplea para mover datos solo entre registros o valores
inmediatos.

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.

También podría gustarte