Modos de Direccionamiento ARM Cortex
Modos de Direccionamiento ARM Cortex
FACULTAD DE INGENIERÍA
Microprocesadores y Microcontroladores
Microcontroladores y Microprocesadores
3. Modos de direccionamiento y conjunto de instrucciones
Objetivo:
Conocer las formas de búsqueda de operandos y el conjunto de
instrucciones de un microprocesador.
Contenido:
3.1 Modos de direccionamiento
3.2 Conjunto de instrucciones de un microprocesador o
microcontrolador
Microcontroladores y Microprocesadores
4. Lenguaje ensamblador y programa ensamblador
Objetivo:
Conocer qué es un lenguaje ensamblador y qué es un ensamblador
para poder desarrollar programas de aplicación.
Contenido:
4.1 Mnemónicos, programa fuente, programa objeto y cargador
4.2 Ensambladores de un paso y de dos pasos
4.2.1 Directivas de un ensamblador
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Modo de direccionamiento
El modo de direccionamiento es el formato que utiliza la
instrucción para especificar la localidad de memoria para leer o
escribir datos;
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
1.1 Modo de direccionamiento inmediato
Dirección EEPROM
0x00000260
R0 0x 0064
0x00000264 F04F 0064 MOV R0,#100
0x00000268
PC 0x00000264
0x000002C6
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
1.2 Modo de direccionamiento inmediato indexado
PC 0x00000146
0x 00000144
0x00000148
Dirección RAM
R0 0x12345678
0x20000000
0x20000004 0x12345678
R1 0x20000004
0x20000008
0x2000000C
Dirección EEPROM
0x00000142
0x00000144
Dirección RAM
R0 0xF5A7D98E
0x20000000
0x20000004
R1 0x20000004
0x20000008 0xF5A7D98E R1+4
0x2000000C
R1 no se modifica por la instrucción
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Modo de direccionamiento
Generalmente hay siete modos de direccionamiento usados en el
lenguaje ensamblador del ARM Cortex-M4 y son:
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Modo de direccionamiento
Microcontroladores y Microprocesadores
Conjunto de Instrucciones procesadores ARM
Microcontroladores y Microprocesadores
CONJUNTO DE INSTRUCCIONES EN ARM CORTEX M4
9. Instrucciones de Saturación
10. Instrucciones relacionadas con la excepción
11. Instrucciones de modo de reposo
12. Instrucciones de Barrera de Memoria
13. Instrucciones Diversas
14. Instrucciones no admitidas
Microcontroladores y Microprocesadores
Lenguaje ensamblador y programa ensamblador
A 0 0110 INSTRUCCION 6 ?
CARGAR ACC
B 1 1001 DATOS 6 ?
Con 1001
D 4 ? ACUMULADOR 0 1111
Microcontroladores y Microprocesadores
LENGUAJE ENSAMBLADOR ARM CORTEX-M
SINTAXIS
Las instrucciones en el Lenguaje Ensamblador tiene 4
campos separados por espacios
Etiqueta Opcode Operandos Comentarios
Funcion MOV R0, #100 ; esto pone R0 con 100
BX LR ; esta es la función return
Microcontroladores y Microprocesadores
LENGUAJE ENSAMBLADOR ARM CORTEX-M
Ejemplo:
Microcontroladores y Microprocesadores
LENGUAJE ENSAMBLADOR ARM CORTEX-M
Microcontroladores y Microprocesadores
NIVELES EN LENGUAJE DE COMPUTADORAS
Microcontroladores y Microprocesadores
NIVELES EN LENGUAJE DE COMPUTADORAS
Microcontroladores y Microprocesadores
PROCESO PARA EL DESARROLLO DE SOFTWARE
Microcontroladores y Microprocesadores
INTEGRATED DEVELOPED ENVIROMENT (IDE)
Editor
Permite crear código fuente o lenguaje ensamblador
El código fuente contiene un conjunto especifico de comandos en forma leíble
para un humano.
Programa Ensamblador
Un programa utilitario que traduce sentencias del lenguaje ensamblador
al código de máquina o código objeto
A partir de la mayoría de los códigos de fuente se genera una
traducción uno a uno a código de máquina es decir una línea de
ensamblador se traduce a una instrucción en código de máquina (al
contrario que en los lenguajes de alto nivel donde una declaración
genera mucho código de máquina)
Microcontroladores y Microprocesadores
INTEGRATED DEVELOPED ENVIROMENT (IDE)
Compilador
En caso de que se programe en un lenguaje de alto nivel el compilador
traduce a lenguaje de máquina
Simulador
El IDE permite simular el programa y depurarlo
Carga de programa
El IDE permite cargar al programa a la memoria del microcontrolador y
depurarlo
Microcontroladores y Microprocesadores
INTEGRATED DEVELOPED ENVIROMENT (IDE)
Microcontroladores y Microprocesadores
CONJUNTO DE INSTRUCCIONES EN ARM CORTEX M4
14 grupos de instrucciones:
1. Instrucciones para mover datos
2. Instrucciones Aritméticas
3. Instrucciones de lógica
4. Instrucciones para cambiar y girar
5. Instrucciones de conversión de datos
6. Instrucciones de procesamiento de campo de bits
7. Instrucciones de comparación y prueba
8. Instrucciones de Control de Flujo del Programa
9. Instrucciones de Saturación
10. Instrucciones relacionadas con la excepción
11. Instrucciones de modo de reposo
12. Instrucciones de Barrera de Memoria
13. Instrucciones Diversas
14. Instrucciones no admitidas
Microcontroladores y Microprocesadores
Instrucciones para mover datos
Op2 puede ser una constante de 32 bits, donde X , Y son dígitos hexadecimales,
producidos mediante el corrimiento de un valor de 8 bits no signado hacia la izquierda con
las siguientes formas:
0x00XY00XY
0xXY00XY00
0xXYXYXYXY
Microcontroladores y Microprocesadores
Instrucciones para mover datos
Rd → D3F4_ _ _ _
Rd → _ _ _ _ 6E5A
Microcontroladores y Microprocesadores
Instrucciones para mover datos
Microcontroladores y Microprocesadores
Sufijos de condiciones
Microcontroladores y Microprocesadores
Instrucciones para mover datos
Microcontroladores y Microprocesadores
Instrucciones para mover datos
Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas
Operaciones lógicas
Se cuenta con operaciones lógicas y de corrimiento para combinar
información, extraer información y para realizar pruebas;
Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas
Operaciones lógicas
0 0 0 0 0 0 1
0 1 0 1 1 0 0
1 0 0 1 1 1 1
1 1 1 1 0 0 1
Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas
Operaciones lógicas
ORR
OR lógico de 32 bits
Sintaxis
Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas
Operaciones lógicas
AND
AND lógico de 32 bits
Sintaxis
Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas
Operaciones lógicas
EOR
XOR lógico de 32 bits
Sintaxis
Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar
Operaciones de desplazamiento
31 29 ……………………… ………… .. 1 0 C
0 0 0 1 1 0 0 0 0 1 0
Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar
Operaciones de desplazamiento
Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar
Operaciones de desplazamiento
LSR
Desplazamiento de 32 bits a la derecha
Sintaxis
LSR {S} {cond} Rd Rm Rs
LSR {S} {cond} Rd Rm #n
Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar
Operaciones de desplazamiento
ASR
Desplazamiento Aritmético de 32 bits a la derecha
Sintaxis
Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar
Operaciones de desplazamiento
LSL
Desplazamiento lógico de 32 bits a la izquierda
Sintaxis
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Operaciones aritméticas
SUMADOR
CIN
+ 0 a
0 b
------------
Cout s
a s
b
cin cout
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Operaciones aritméticas
Sumador con acarreo en cascada
a s
b
cin cout
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Complemento a 2
Simplifican la operación de sustracción y las manipulaciones lógicas;
Para un número positivo N en base 2 con parte entera de m dígitos:
Ejemplo:
El complemento de 2 de (101100)2
→ 26 - (101100)2 =
Bit de signo
Valor decimal
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
a) 𝑴 + 𝟐𝒎 − 𝑵 ≥ 𝟐𝒎 𝒔𝒊 𝑴 ≥ 𝑵
b) 𝑴 + 𝟐𝒎 − 𝑵 < 𝟐𝒎 𝒔𝒊 𝑴 < 𝑵
En este caso la respuesta es negativa e igual a –(N-M)
Este caso se detecta por la ausencia del acarreo final.
El número negativo esta en complemento.
La respuesta se obtiene sacando un segundo complemento y agregando un
signo negativo:
𝒎
− 𝟐 − 𝑴+𝟐 −𝑵 𝒎 =− 𝑵−𝑴
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
1010100
+ 0111100
------------
acarreo final → 1 0010000
Resultado → 10000
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
1000100
+ 0101100
------------
No hay acarreo final → 1110000
Resultado → -10000
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
SOBREFLUJO
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
SOBREFLUJO
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Operaciones aritméticas
En las operaciones aritméticas en el ARM Cortex, el valor de 32 bits se
puede especificar por la constante #im12 o generado por el operando
flexible <op2>. Cuando Rd esta ausente , el resultado se ponen Rn.
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Operaciones aritméticas
Multiplicación
14
x 11
----------
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Operaciones aritméticas
Multiplicación
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Operaciones aritméticas
Multiplicación
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Operaciones aritméticas
Multiplicación
MUL – Multiplicación
MULA – Multiplicación con acumulador
MLS - Multiplicación con substracción
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Operaciones aritméticas
Multiplicación
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
UDIV
División no signada de 32 bits
Sintaxis
Rd = Rn/ Rm
Si Rn no es divisible por Rm, el resultado se redondea a cero.
Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
SDIV
División signada de 32 bits
Sintaxis
Rd = Rn/ Rm
Si Rn no es divisible por Rm, el resultado se redondea a cero.
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Operaciones aritméticas
La sustracción y la adición trabajan con valores signados y no
signados;
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Bandera - acarreo – “carry”, C
En una operación de 8 bits no signados, el bit “carry”, C, es validado cuando
se pasa de 255 a 0 durante la adición.
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Bits de condición
Los bits de condición contienen el estatus de la operación aritmética previa;
Microcontroladores y Microprocesadores
Sufijos de código de condición
Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Comparación y prueba
Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Comparación y prueba
Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Comparación
CMP
compara 32 bits
Sintaxis
Operación ► Rn – Op2
Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Prueba
TST
Prueba con operación AND de 32 bits
Sintaxis
Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Comparación
TEQ
Prueba con operación xor 32 bits
Sintaxis
Microcontroladores y Microprocesadores
Instrucciones de control de flujo de programa
Estas instrucciones se usan para controlar los flujos y ejecuciones del programa
con ciertas condiciones o sin ninguna condición;
1. Saltos incondicionales
2. Saltos condicionales
3. Compa y salta
4. Tabla de saltos (TBB, TBH)
5. Ejecuciones condicionales (If-Then o IT)
Microcontroladores y Microprocesadores
Instrucciones de control de flujo de programa
Sintaxis
{cond} - condición opcional
Microcontroladores y Microprocesadores
Instrucciones de control de flujo de programa
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Bits de condición
Los bits de condición contienen el estatus de la operación aritmética previa;
Sustracción no
Suma no signada
signada
R= A + B R= A - B
C=1 C=0
C Techo C Piso
R = 42 94 967 295
Ó R= 0
C=0 R= FFFF FFFF C=1
Correcto Correcto
Fin Fin
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
𝑽 = 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏 | 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏
𝑽 = 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏 | 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏
Microcontroladores y Microprocesadores
Instrucciones Aritméticas
Bits de condición
Los bits de condición contienen el estatus de la operación aritmética previa;
Sustracción
Suma signada
signada
R= A + B R= A - B
V=1 V=1
V error V error
R =2147483647
Ó
R= 2147483647
V=0 R= 0x7FFF FFFF V=0
N=0 N=0
N N
N=1 R = - 2147483648
N=1 R = - 2147483648
Ó Ó
R= 0x 8000 0000 R= 0x 8000 0000
Memoria de programa
Programa principal
.
BL Sub Rutina 3.
. Rutina 3
Dirección Sub
Instrucciones
Direcciones .
CP
LR= R14 =Dir +1 Sub Rutina 1
.
.
.
Sub Rutina 2
.
.
Sub Rutina 3
BX LR
RL= R14 =Dir +1
Microcontroladores y Microprocesadores
Instrucciones de control de flujo de programa
Subrutinas
Subrutinas - Son subprogramas a los que se envían desde un
programa principal y pueden o no regresar valores al programa
principal;
Microcontroladores y Microprocesadores
Directivas del ensamblador
Microcontroladores y Microprocesadores
Directivas del ensamblador
.global –
Permite ligar entre archivos, con ella una etiqueta en un archivo se
hace accesible a otro archivo.
Si tenemos un objeto global (función o variable) podemos agregarle
la directiva .global en donde el objeto esta definido y este podrá dar
acceso desde otro objeto.
En un programa en CCS se debe tener una función “main” que sea global
.global main
Microcontroladores y Microprocesadores
Directivas del ensamblador
.data –
Las líneas que siguen conforman la sección .data , la cual contiene
las tablas de datos o las variables pre inicializadas, se guardan en SRAM
Microcontroladores y Microprocesadores
Directivas del ensamblador
Microcontroladores y Microprocesadores
Directivas del ensamblador
main
; el código va aquí
.end
Microcontroladores y Microprocesadores
Directivas del ensamblador
DIRECTIVAS DEL ENSAMBLADOR
.field –
Inicializa un campo múltiple de bits de memoria dentro de una sola palabra (32 bits);
Asocia base numerica a expresión alfanumerica
Sintaxis: Se podria usar cualquier nombre
Para apuntadores
etiqueta .field valor, tamaño en bits
Donde:
valor - es un parámetro obligatorio; es una expresión que se evalúa y se coloca en el campo,
el valor debe ser absoluto.
Microcontroladores y Microprocesadores
Directivas del ensamblador
Así que por ejemplo, para acceder a las variables y a las E/S de los puertos
necesitamos definir un puntero constante utilizando la directiva .field de 32
bits.
Microcontroladores y Microprocesadores
Directivas del ensamblador
El valor debe ser una expresión bien definida, es decir, todos los símbolos de
la expresión deben ser definidos previamente.
Microcontroladores y Microprocesadores