Manual de Prácticas
Microprocesadores y Microcontroladores
Aplicación de la plataforma de desarrollo
N.° de práctica: 03
Nombre completo del alumno Firma
nombre
N.° de brigada: Fecha de elaboración Grupo:
Manual de Prácticas
Microprocesadores y Microcontroladores
Objetivos de aprendizaje.
Implementar y verificar la sintaxis de un programa en lenguaje ensamblador utilizando el software y Tarjeta
de Desarrollo.
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
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.
Material y equipo.
a) Documentos: Set de instrucciones del core ARM M4
M4, spnu118o ARM Assembly Language Tools
v15.12.0.LTS User’s Guide.
b) Tarjeta de desarrollo y ambiente IDE CCS.
Actividad Previa.
Para el MCU TM4C1294:
a) ¿Cuántos registros en total? ¿Cuáles son de propósito general?, ¿Cuál es la función de los Registros SP,
LR, PC? (Del manual del TM4C C, revisar tema 2.3.3 Register Map y 2.3.4 Register Descriptions)
Descriptions
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
17).
c) Considere que el inicio de Memoria RAM es la localidad 0x2000.0200.. Realice un bosquejo del mapa
de memoria con el valor de direcciones y su contenido para las siguientes declaraciones con
c directivas.
Explique la función de cada directiva y argumentos. (Revise el documento spnu118o,
spnu118o tema 2).
Responda: ¿En qué región de memoria se declaran los símbolos posterior a declarar la directiva .data?
.data ; Estos datos se colocan en memoria RAM
count .word 0xFF2233 ;
i .byte 0x10 ;
.byte 0x20 ;
.byte 0x30 ;
.byte 0xAA ;
j .word 0x80
msg .string "hola mundo" ;
.bss M, 4
.byte 0xAA ;
d) Explique la sintaxis de la directiva .field; también indique en qué región de memoria (RAM o ROM) se
coloca el símbolo que se declara con esta directiva.
Manual de Prácticas
Microprocesadores y Microcontroladores
ptC .field count,32
e) Indique el tipo de direccionamiento que se emplea en las siguientes instrucciones. Inicie un nuevo
proyecto en CCS. Desde la sesión de depuración, use la ventana Core Registers para escribir un valor
en el registro R3. Indique el valor que contiene cada re
registro
gistro al finalizar el programa.
; 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
Para MCU TM4C1294:
f) ¿Cuáles son los modos de direccionamiento (de operando) Inmediato, de Registro, y de operando
referenciado a Memoria? (ver 4.6.3 Operand Field del documento spnu118o,, o bien consultar el libro
de Valvano)
g) 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 (consultar Set de
Instrucciones):
i) La instrucción MOV, que se emplea para mover datos solo entre registros o valores inmediatos.
inmediatos
¿Qué otros tipos de instrucción MOV existen en el set de instrucciones que se pueden emplear?
ii) La instrucción LDR, que se emplea para cargar en un registro, un dato que está en memoria.
memoria
iii) La instrucción STR, que se emplea para almacenar en memoria un dato.
h) Para las instrucciones anteriores, que significa:
1. que no tenga sufijo, 2. tenga sufijo B, 3. tenga sufijo H
i) Describa el uso de las siguientes instrucciones lógicas: AND, ORR, EOR, BIC, ORN.
j) Describa el uso de las siguientes instrucciones de desplazamiento: LSR, ASR, LSL, ROR, RRX.
k) ¿A qué operación aritmética corresponde un desplazamiento: a) a la derecha, b) a la izquierda?
l) ¿Qué instrucciones se usan para hacer operaciones no signadas y signadas de suma y resta?
m) ¿Cómo reserva en memoria volátil una localidad de: 1 byte, 2 bytes, 4 bytes?
Manual de Prácticas
Microprocesadores y Microcontroladores
n) ¿Con cuál directiva se obtiene la dirección de una localidad reservada en RAM?
RAM
o) ¿Cómo se obtiene un dato que está en memoria RAM? Escriba las instrucciones necesarias y explique.
ex
p) Crear un proyecto nuevo para el programa del Anexo 1 y compilarlo.
Desarrollo.
i. Analice el empleo
mpleo de directivas de reserva de datos, lectura y escritura de datos en memoria.
ii. Empleando la sesión de depuración ejecute cada instrucción y analice el resultado.
iii. Localice
calice los símbolos declarados en la ventana Memory Browser y también identifique su valor de
dirección y el valor que contienen las celdas de memoria.
.global main
.text ; Inicia sección de programa principal
; Estos
stos punteros son valores constantes colocados
s 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
iv. Describa el comportamiento de cada directiva e instrucción empleados:
a) Inicialización
nicialización de datos en memoria RAM,
b) operaciones realizadas,
c) estado de los registros antes y después de ejecutarse.
5. Conclusiones.
De cada estudiante y de carácter obligatorio en el informe co
correspondiente.
6. Bibliografía.
Manual de Prácticas
Microprocesadores y Microcontroladores
Anexo 1
.data ; Estos datos se colocan en memoria RAM
count .word 0xFF2233 ;
i .byte 0x10 ;
.byte 0x20 ;
.byte 0x30 ;
.byte 0xAA ;
j .word 0x80
msg .string "hola mundo" ;
.bss M, 4
.byte 0xAA ;
.global main
.text ; Inicia sección de programa principal
; Estos
stos punteros son valores constantes colocados en ROM
ptM .field M,32 ; ptM = dirección de (símbolo) M (campo de 32 bits,
, definida antes)
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