0% encontró este documento útil (0 votos)
79 vistas91 páginas

Modos de Direccionamiento ARM Cortex

El documento describe los modos de direccionamiento y el conjunto de instrucciones de los microprocesadores y microcontroladores. Explica los diferentes modos de direccionamiento como inmediato, indexado y otros. También describe las categorías y tipos de instrucciones soportadas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
79 vistas91 páginas

Modos de Direccionamiento ARM Cortex

El documento describe los modos de direccionamiento y el conjunto de instrucciones de los microprocesadores y microcontroladores. Explica los diferentes modos de direccionamiento como inmediato, indexado y otros. También describe las categorías y tipos de instrucciones soportadas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL AUTÓNOMA DE MEXICO

FACULTAD DE INGENIERÍA

Microprocesadores y Microcontroladores

III. Modos de direccionamiento y


conjunto de instrucciones
Dr. Saúl de la Rosa Nieves

3 de marzo del 2022

LABORATORIO DE INSTRUMENTACIÓN ELECTRÓNICA DE SISTEMAS ESPACIALES


TEMARIO

Tema Nombre Horas

1 Introducción a los microprocesadores y microcontroladores 1


2 Arquitectura y funcionamiento de un microprocesador y de 3
un microcontrolador
3 Modos de direccionamiento y conjunto de instrucciones 6
4 Lenguaje ensamblador y programa ensamblador 4
5 Programación estructurada en lenguaje ensamblador 10
6 Puertos de entrada/salida 8
7 Programación en lenguaje C 4
8 Interrupciones y resets 4
9 Periféricos 24
TEORIA 64
Prácticas de Laboratorio 32
TOTAL 96

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;

 Todas las instrucciones inician cuando son apuntadas por el


PC y extraídas de memoria (código de operación y operando) ;

 Algunas instrucciones operan directamente en el procesador y


no requieren alcanzar datos de memoria (interacción con
registros)

Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
1.1 Modo de direccionamiento inmediato

 En el modo de direccionamiento inmediato el dato es contenido en la


instrucción;
MOV R0,#100 ; R0=100 , direccionamiento inmediato

Dirección EEPROM
0x00000260
R0 0x 0064
0x00000264 F04F 0064 MOV R0,#100

0x00000268
PC 0x00000264
0x000002C6

 El direccionamiento inmediato se utiliza solo para tomar, cargar o leer


datos;
 La instrucción MOV nunca se utilizara como una instrucción para
almacenar datos en memoria;

Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
1.2 Modo de direccionamiento inmediato indexado

 El dato se encuentra en memoria y un registro contiene un apuntador al dato;

LDR R0, [R1] , R0 = valor apuntado por R1


Dirección EEPROM
0x00000142

0x00000144 6808 LDR R0,[R1]

PC 0x00000146
0x 00000144
0x00000148
Dirección RAM
R0 0x12345678
0x20000000

0x20000004 0x12345678
R1 0x20000004
0x20000008

0x2000000C

 R1 no se modifica por la instrucción


Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
1.2 Modo de direccionamiento inmediato indexado

 El dato se encuentra en memoria y un registro contiene un apuntador al dato;


LDR R0, [R1,#4] ,R0 = valor apuntado por R1+4

Dirección EEPROM
0x00000142

0x00000144

0x00000146 6848 LDR R0,[R1+4]


PC 0x 00000146
0x00000148

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:

1. Modo de direccionamiento inmediato


a) Modo de direccionamiento de desplazamiento inmediato regular
b) Modo de direccionamiento de desplazamiento inmediato pre-indexado
c) Modo de direccionamiento de desplazamiento inmediato post-indexado
d) Modo de direccionamiento de desplazamiento inmediato regular con acceso no
privilegiado
2. Modo de direccionamiento de desplazamiento con registro
3. Modo de direccionamiento relativo del PC
4. Modo de direccionamiento de cargar y almacenamiento a múltiples
registros

Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones

Modo de direccionamiento

4. Modo de direccionamiento de cargar y almacenamiento a múltiples


registros
5. Modo de direccionamiento del registro PUSH y POP
6. Modo de direccionamiento exclusivo de carga y almacenamiento de
registros
7. Modo de direccionamiento inherente

Microcontroladores y Microprocesadores
Conjunto de Instrucciones procesadores ARM

 Thumb-2 permite que una mezcla de instrucciones de 16 bits y 32 bits se ejecute en


un solo estado de funcionamiento.
 Todos los procesadores ARM Cortex-M se basan en la tecnología Thumb-2.
Microcontroladores y Microprocesadores
CONJUNTO DE INSTRUCCIONES EN ARM CORTEX M4

Hay aproximadamente 203 instrucciones en el conjunto de


instrucciones ARM Cortex-M4 sin incluir las instrucciones relacionadas
con FPU.
Todas estas instrucciones se pueden categorizar en 14 grupos basados
en las funciones de esas instrucciones. Estos grupos incluyen:
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

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

CÓDIGO DE INSTRUCCIONES DEL PROCESADOR DE 4 BITS


CICLO LINEA PC CONTENIDO REGISTRO LINEA ACTIVA ACCUMULADOR INSTRUCCIÓN
INSTRUCC ACTIVA DIRECCIO MEMORIA ACTIVO DECODIFICADOR (SALIDA DEL
GCM N MEM PROCESADOR)

A 0 0110 INSTRUCCION 6 ?

CARGAR ACC
B 1 1001 DATOS 6 ?
Con 1001

1 C 2 0000 AC. TEMPORAL 6 ?

D 2 0000 ACUMULADOR 6 1001

A 2 0000 INSTRUCCION 0 10001

B 3 0110 DATOS 0 1001 OR ACC


con 0110
2 C 4 ? AC. TEMPORAL 0 1001

D 4 ? ACUMULADOR 0 1111

Código de máquina Lenguaje


Ensamablador

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

1. El campo de etiquetas- especifica la posición en memoria (opcional)


2. El campo de código de operación- especifica el comando a ejecutar
3. El campo del operando – especifica donde encontrar el dato para
ejecutar la instrucción
4. El campo de comentario – es ignorado por el ensamblador pero
permite al usuario describir el software

Microcontroladores y Microprocesadores
LENGUAJE ENSAMBLADOR ARM CORTEX-M

 Ejemplo:

1. El programa ensamblador traduce el código fuente (lenguaje


ensamblador) a código objeto (lenguaje de máquina)

Microcontroladores y Microprocesadores
LENGUAJE ENSAMBLADOR ARM CORTEX-M

¿Para que aprender ensamblador?

En algún caso especifico se puede requerir optimizar una aplicación en


su máxima velocidad de ejecución o en su mínimo tamaño de memoria.
→ Escribir segmentos de código en lenguaje ensamblador es una
estrategia para alcanzar esta aproximación.

Si podemos analizar el código ensamblador generado por el compilador


de nuestro código en C, podemos entender que es lo que está
realizando nuestro software
→ A partir de este entendimiento podemos evaluar, depurar y optimizar
nuestro sistema.

Microcontroladores y Microprocesadores
NIVELES EN LENGUAJE DE COMPUTADORAS

Lenguaje de Alto Nivel


Este un lenguaje fácil de ser entendido por los seres humanos. Pero no
puede ser entendido por los microcontroladores.
 C / C ++, Visual C ++, Visual [Link], Visual C # y Java.
El lenguaje de alto nivel es independiente de la computadora o de la
máquina, lo que significa que este tipo de lenguaje puede ser entendido
por cualquier computadora con cualquier sistema operativo.
Se necesita un traductor o intérprete para convertir las instrucciones
del lenguaje de alto nivel en las instrucciones de bajo nivel para
permitir que los microcontroladores las entiendan y ejecuten.

Microcontroladores y Microprocesadores
NIVELES EN LENGUAJE DE COMPUTADORAS

Lenguaje de Bajo Nivel


Este tipo de lenguaje está compuesto de código binario o secuencia de
código de máquina, como 01101110.
 El lenguaje de bajo nivel es un lenguaje dependiente de computadora o
máquina, lo que significa que diferentes microcontroladores tienen su
propio idioma y no pueden ser reconocidos por otros
microprocesadores o microcontroladores.
El lenguaje ensamblador es un Lenguaje de Bajo Nivel

Microcontroladores y Microprocesadores
PROCESO PARA EL DESARROLLO DE SOFTWARE

Integrated Developed Enviroment (IDE) para Microcontroladores


Cortex M:
ARM Keil uVision

Code Composer Studio (CCStudio) de Texas Instruments

Los IDE contienen:


Editor
Programa Ensamblador
Compilador
Simulador

Pueden ser utilizados para depurar y bajar el programa al


microcontrolador

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

Instrucción para mover datos sin acceso a memoria

MOV Rd, Op2


 Instrucción que copia el valor de Op2 en Rd.
 Es útil para mover valores de 32 bits de un registro a otro y para inicializar
registros con un valor constante.

MOV {S} Rd, Op2

MOV Rd, #imm16


S - sufijo opcional para habilitar las banderas de condición
{cond} - código opcional de condición
Rd - es el registro destino
Op2 -es un segundo operando flexible, un registro, una constante o un parámetro
especificado por una instrucción.
imm16 - es cualquier valor en el rango entre 0-65535
Microcontroladores y Microprocesadores
Instrucciones para mover datos

Instrucción para mover datos sin acceso a memoria

MOV Rd, Op2


 Instrucción que copia el valor de Op2 en Rd.
 Es útil para mover valores de 32 bits de un registro a otro y para inicializar
registros con un valor constante.

MOV Rd, Op2

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

Para cargar datos de 32 bits sin acceso a memoria

MOVT Rd, #0xD3F4


 Instrucción que copia el valor de 0xD3F4 a la parte superior de Rd.

Rd → D3F4_ _ _ _

MOVW Rd, #0x6E5A


 Instrucción que copia el valor de0x6E5A a la parte inferior de Rd.

Rd → _ _ _ _ 6E5A

Microcontroladores y Microprocesadores
Instrucciones para mover datos

The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors


Third Edition, Joseph Yiu
ARM Ltd., Cambridge, UK

Microcontroladores y Microprocesadores
Sufijos de condiciones

Microcontroladores y Microprocesadores
Instrucciones para mover datos

Instrucciones con acceso a memoria


Instrucción que carga datos desde memoria a un registro

LDR {type} Rt, [ Rn ]

{type} – determina el tamaño de la palabra que se guardara


{cond} - código opcional de condición
Rt - registro destino
Rn - registro en que se basa la dirección de memoria
Offset - offset desde Rn
Rm - es un registro que contiene un valor que se usara como offset

Microcontroladores y Microprocesadores
Instrucciones para mover datos

Instrucciones con acceso a memoria


Instrucción que almacena datos desde un registro a memoria

STR {type} Rt, [ Rn ]

{type} – determina el tamaño de la palabra que se guardará


Rt - registro fuente
Rn - registro en que se basa la dirección de memoria
Offset - offset desde Rn
Rm - es un registro que contiene un valor que se usara como offset

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;

 Las operaciones lógicas en el ARM Cortex toman dos entradas, una de


un registro y la otra de un segundo operador flexible, estas
operaciones son ejecutadas en modo de 32 bits, bit por bit.

Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas

Operaciones lógicas

Operaciones lógicas en Cortex M

A B A&B A|B A^B A&(~B) A|(~B)


Rn 2do operando AND ORR EOR BIC ORN

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

ORR {S} {cond} {Rd}, Rn, Op2

S - sufijo opcional para habilitar las banderas de condición


{cond} - código opcional de condición
Rd - es el registro destino (si es omitido el registro destino es Rn)
Rn - es el registro que tiene al primer operando
Op2 - es el segundo operando flexible

Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas

Operaciones lógicas

AND
AND lógico de 32 bits

 Sintaxis

AND {S} {cond} {Rd}, Rn, Op2

S - sufijo opcional para habilitar las banderas de condición


{cond} - código opcional de condición
Rd - es el registro destino (si es omitido el registro destino es Rn)
Rn - es el registro que tiene al primer operando
Op2 - es el segundo operando flexible

Microcontroladores y Microprocesadores
Instrucciones de operaciones lógicas

Operaciones lógicas

EOR
XOR lógico de 32 bits

 Sintaxis

EOR {S} {cond} {Rd}, Rn, Op2

S - sufijo opcional para habilitar las banderas de condición


{cond} - código opcional de condición
Rd - es el registro destino (si es omitido el registro destino es Rn)
Rn - es el registro que tiene al primer operando
Op2 - es el segundo operando flexible

Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar

Operaciones de desplazamiento

Logical Shift Right → LSR 1 ≤ n ≤ 32

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

S - es un sufijo opcional, si se especifica las banderas de condición del código se actualizan


{cond} - condición opcional (ver tabla 3.2)
Rd - es el registro destino
Rm - es el registro que tiene el valor que será desplazado
Rs - es el registro que tiene la longitud del desplazamiento a aplicar a Rm (solo 0 a 255)
n - es la longitud de desplazamiento

Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar

Operaciones de desplazamiento

ASR
Desplazamiento Aritmético de 32 bits a la derecha

 Sintaxis

ASR {S} {cond} Rd Rm Rs


ASR {S} {cond} Rd Rm #n

S - es un sufijo opcional, si se especifica las banderas de condición del código se actualizan


{cond} - condición opcional (ver tabla 3.2)
Rd - es el registro destino
Rm - es el registro que tiene el valor que será desplazado
Rs - es el registro que tiene la longitud del desplazamiento a aplicar a Rm (solo 0 a 255)
n - es la longitud de desplazamiento

Microcontroladores y Microprocesadores
Instrucciones para cambiar y girar

Operaciones de desplazamiento

LSL
Desplazamiento lógico de 32 bits a la izquierda

 Sintaxis

LSL {S} {cond} Rd Rm Rs


LSL {S} {cond} Rd Rm #n

S - es un sufijo opcional, si se especifica las banderas de condición del código se actualizan


{cond} - condición opcional (ver tabla 3.2)
Rd - es el registro destino
Rm - es el registro que tiene el valor que será desplazado
Rs - es el registro que tiene la longitud del desplazamiento a aplicar a Rm (solo 0 a 255)
n - es la longitud de desplazamiento ( 0 a 31)

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

Representación de un entero en complemento a 2


4 bits

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:

El complemento de 2 de N → 2m – N , para N≠0


0 , para N=0

Ejemplo:
El complemento de 2 de (101100)2

→ 26 - (101100)2 =

(1000000 – 101100)2 = 010100

Se observa que el complemento de 2 puede ser formado dejando sin


cambio todos los ceros menos significativos y el primer digito menos
significativo diferente de cero, y luego remplazar los unos por ceros y
ceros por unos.
Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Representación de un entero en complemento a 2


4 bits

Rango -2m-1 hasta 2m-1 – 1


Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Representación con complemento 2

𝑩 = 𝒃𝑵−𝟏 𝒃𝑵−𝟐 … . . 𝒃𝟏 𝒃𝟎 𝒅𝒐𝒏𝒅𝒆 𝒃𝒊 ∈ 𝟎, 𝟏

Bit de signo
Valor decimal

𝑫 𝑩 = −𝒃𝑵−𝟏 𝟐𝑵−𝟏 + 𝒃𝑵−𝟐 𝟐𝑵−𝟐 … . 𝒃𝟏 𝟐𝟏 + 𝒃𝟎 𝟐𝟎

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Sustracción de dos números positivos (M-N) en base 2:

 El complemento de 2 de N → 2m_ N, para N≠0


0, para N=0

a) 𝑴 + 𝟐𝒎 − 𝑵 ≥ 𝟐𝒎 𝒔𝒊 𝑴 ≥ 𝑵

En este caso la respuesta es positiva y se descarta el acarreo dado por 2m

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

Sustracción con complemento a 2


Sustracción de dos números positivos (M-N) en base 2:

 Se suma el minuendo M al complemento de 2 del sustraendo N


 Se inspeccionan si ocurre un “acarreo” final en los datos obtenidos en
el Paso 1

 Si ocurre un “acarreo” final, se debe descartar y se toma el resultado


 Si no ocurre un “acarreo” final, se toma el complemento del número
obtenido en el paso 1 y se coloca un número negativo al frente

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Ejemplo usando complemento de 2 para sustraer M-N:


M = 1010100
N = 1000100

1010100
+ 0111100
------------
acarreo final → 1 0010000

Resultado → 10000

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Ejemplo usando complemento de 2 para sustraer M-N:


M = 1000100
N = 1010100

1000100
+ 0101100
------------
No hay acarreo final → 1110000

Se obtiene complemento de 2 → 0010000

Resultado → -10000

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Se puede ignorar al acarreo

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Se puede ignorar al acarreo

Cuando se tiene dos números negativos


siempre se tendrá acarreo

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

SOBREFLUJO

Sobreflujo: el bit de signo no concuerda con las entradas

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

SOBREFLUJO

Sobreflujo: el bit de signo no concuerda con las entradas

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Resumen operación de números con complemento a 2

 Rango -2m-1 hasta 2m-1 – 1

 Se representa un número negativo mediante el complemento a 2 del


número

 Regla de desbordamiento: si dos números con el mismo signo se


suman, existe un sobre flujo si el resultado tiene un signo opuesto

 Para substraer B de A, toma el complemento de 2 de B y se suma aA

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

Usan operandos de 32 bits y producen 32 bits de resultados;


Estas tres instrucciones de multiplicación solo salvan los 32 últimos bits
del resultado;
Se pueden usar con números signados o no signados;
No se generan banderas de sobre flujo;
Si el sufijo S se agrega, entonces los bits Z y N son validados de acuerdo
al resultado.

Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones
Operaciones aritméticas
Multiplicación

Usan operandos de 32 bits y producen 64 bits de resultados;


Los registros RdLo y RdHi contienen los bits menos significativos y más
significativos respectivamente de los 64 bits de resultados
Estas instrucciones no activan banderas de condición;

Microcontroladores y Microprocesadores
Modos de direccionamiento y conjunto de instrucciones

UDIV
División no signada de 32 bits

 Sintaxis

{cond} - condición opcional (ver tabla 3.2)


Rd - es el registro destino
Rn - es el registro que tiene al valor a dividir
Rm - es el registro que tiene al divisor

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

{cond} - condición opcional (ver tabla 3.2)


Rd - es el registro destino
Rn - es el registro que tiene al valor a dividir
Rm - es el registro que tiene al divisor

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;

 Como diseñadores, nosotros debemos conocer previamente si


tenemos números signados o no signados;

 El procesador no puede decir desde el binario cual tipo de número es,


por lo tanto valida las banderas C y V;

 Nuestro trabajo como programadores es ver a la bandera C si los


valores son no signados y ver a V si los valores son 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.

 El bit de “carry”, C, es limpiado cuando pasa de 0 a 255 en la substracción;

 El bit de “carry”, C, es validado después de una adición no signada cuando el


resultado es incorrecto;

 El bit de “carry”, C, es limpiado después de una sustracción no signada


cuando el resultado es incorrecto;

Microcontroladores y Microprocesadores
Instrucciones Aritméticas

Bandera – sobreflujo – “overload ”, V

 En la suma y adición de valores signados en complemento a dos se utilizan las


mismas instrucción

 La única diferencia es que el bit “carry”, C, no representa un error cuando se


suma o resta los números signados en complemento a dos;

 Para identificar errores se calcula un nuevo bit llamado “overflow”, V; validado


cuando se pasa de 127 a -128 durante la adición.

 El bit “overflow”, V, es validado cuando el resultado de una operación de


adición o substracción signada es incorrecto.

-32+64=32 V= 0  96+64= -96 V=1 X


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;

Bit Nombre Validado si después de adición o


sustracción
N Negativo Resultado es negativo
Z Cero Resultado es cero
V Sobre flujo Sobre flujo signado
C Acarreo Sobre flujo no signado

Microcontroladores y Microprocesadores
Sufijos de código de condición

Sufijos de código de condición, utilizados opcionalmente para la ejecución de


instrucciones –pág. 91

Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba

Comparación y prueba

 Estas instrucciones se utilizan para hacer comparaciones entre


registros o entre un registro y un dato inmediatos;

 El resultado de la comparación se utiliza para actualizar los bits de


condición en el registro de estado, pero el resultado no se guarda;

 Las instrucciones de prueba de bits se utilizan para realizar la


comprobación bit a bit;

 El procesador ARM Cortex-M4 contiene dos instrucciones de


comparación y dos instrucciones de prueba de bits:
 Comparar (CMP)
 Comparar negativos (CMN)
 Prueba AND bit a bit (TST)
 Prueba XOR bit a bit (TEQ)

Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba

Comparación y prueba

Instrucción Función Bander


as
CMP Rn, Compara el valor de Rn con Operando N,Z,C,V
Operando (sustracción Rn-operando). Actualiza los banderas
de condiciones con el resultado, pero no se
escribe el resultado en Rn.
TST Rn, Realice una operación AND bit a bit con el valor N,Z,C,V
Operando de Rn y el valor del Operando. El resultado no se
escribe en Rn.
TEQ Rn, Realice una operación XOR bit a bit con el valor N,Z,C,V
Operando de Rn y el valor del Operando. El resultado no se
escribe en Rn.

Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Comparación

CMP
compara 32 bits

 Sintaxis

CMP {cond} Rn, Op2


{cond} - código opcional de condición
NO HAY REGISTRO DESTINO
Rn - es el registro que tiene al primer operando
Op2 - es el segundo operando flexible

Operación ► Rn – Op2

Afecta banderas N,Z,V,C

Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Prueba

TST
Prueba con operación AND de 32 bits

 Sintaxis

TST {cond} Rn, Op2


{cond} - código opcional de condición
NO HAY REGISTRO DESTINO
Rn - es el registro que tiene al primer operando
Op2 - es el segundo operando flexible

Operación ► Rn & Op2

Afecta banderas N,Z,V,C

Microcontroladores y Microprocesadores
Instrucciones de comparación y prueba
Comparación

TEQ
Prueba con operación xor 32 bits

 Sintaxis

TEQ {cond} Rn, Op2


{cond} - código opcional de condición
NO HAY REGISTRO DESTINO
Rn - es el registro que tiene al primer operando
Op2 - es el segundo operando flexible

Operación ► Rn xor Op2

Afecta banderas N,Z,V,C

Microcontroladores y Microprocesadores
Instrucciones de control de flujo de programa

 El procesador Cortex-M4 proporciona 10 instrucciones de control y salto de


programa;

 Estas instrucciones se usan para controlar los flujos y ejecuciones del programa
con ciertas condiciones o sin ninguna condición;

 Estas instrucciones proporcionan una capacidad de control inteligente para


Microcontroladores;

 Estas instrucciones se pueden dividir en cinco grupos de acuerdo a sus


funciones:

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

B {cond} etiqueta ; salto a etiqueta

BX {cond} Rm ;salto indirecto a una localidad especificada por Rm

BL {cond} etiqueta ; salto a la subrutina ubicada en etiqueta

BLX {cond} Rm ;salto indirecto a la subrutina con localidad


especificada por Rm

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

Bandera – sobreflujo – “overload ”, V

 Se valida después de una suma signada R = X + M si:

𝑽 = 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏 | 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏

 Se valida después de una sustracción signada R = X - M si:

𝑽 = 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏 | 𝑿𝟑𝟏 & 𝑴𝟑𝟏 & 𝑹𝟑𝟏

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

Fin bajo bajo


Fin
Microcontroladores y Microprocesadores
SUBRUTINA

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;

 Se define una subrutina dando un nombre en el campo de etiqueta que


sigue a una instrucción la cual ejecutara el efecto de salto deseado;

 La instrucción BL ETIQUETA envía a la subrutina que se encuentra a


partir de la dirección determinada por ETIQUETA

 La dirección de retorno se guarda en el registro LR es decir R14 ;


 La dirección de retorno es la localidad de instrucción inmediata
después de la instrucción BL;

 AL final de la subrutina la instrucción BX LR, recupera la dirección de


regreso desde el registro LR , regresando el programa a el lugar desde
el cual la subrutina fue llamada, específicamente una instrucción
después;
Microcontroladores y Microprocesadores
Estructura FOR - loop

Microcontroladores y Microprocesadores
Directivas del ensamblador

DIRECTIVAS DEL ENSAMBLADOR

 Se utilizan para asistir y controlar el proceso del ensamblador;


 Las directivas no son parte del conjunto de instrucciones;
 Las directivas cambian la forma en la que el código es ensamblado;
 El primer lote define en donde y como los objetos ( código y variables)
son ubicados en memoria;

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

Si se necesita se puede utilizar un nombre alias mediante la substitución de


símbolos
.asg “main”, XXXXXX

Microcontroladores y Microprocesadores
Directivas del ensamblador

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

DIRECTIVAS DEL ENSAMBLADOR


 .text –
Indica que sigue el código del programa;

Y que a las secciones de código producidos por el compilador C, o por secciones de


código asociadas con la librería C (con .text esta sección de código se puede llamar
desde C);

La sección .text es la sección presente por preconfiguración. Por lo tanto, al principio


de un ensamblaje, el ensamblador ensambla código en la sección .text a menos que
utilice un .data o directiva .sect para especificar una sección diferente.

Si no se usa ninguna de las directivas de las secciones, el ensamblador ensambla


todo en la sección .text.

Se gurda en FLASH ROM

Microcontroladores y Microprocesadores
Directivas del ensamblador

Estructura básica de un programa en lenguaje ensamblador

.global main ; hace a main accesible desde afuera de este archivo

.thumb Segundo conjunto de ; se usara instrucciones thumb


instrucciones

.data ; ubica localidad de memoria SRAM

; las variables se ponen aquí

.text ; ubica localidad de memoria en flash

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.

tamaño en bits- es un parámetro opcional; se especifica un número de 1 a 32, que es el


número de bits en el campo. El tamaño predeterminado es de 32 bits. Si especifica un valor
que no puede caber en el tamaño en bits, el ensamblador trunca el valor y emite una
advertencia.

Por ejemplo, .field 3,1 causas el ensamblador para truncar el valor 3 a 1;

Microcontroladores y Microprocesadores
Directivas del ensamblador

DIRECTIVAS DEL ENSAMBLADOR


 .field –
Si se utiliza una etiqueta, señala al byte que contiene el campo
especificado.

En CCS no se acepta la sintaxis:


LDR R#, =etiqueta

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.

etiqueta .field valor, 32

Microcontroladores y Microprocesadores
Directivas del ensamblador

DIRECTIVAS DEL ENSAMBLADOR


 .equ –
Da el nombre de un símbolo a un valor constante;
Para operandos
simbolo .equ valor

El símbolo es una etiqueta que debe aparecer en el campo de etiqueta;

El valor debe ser una expresión bien definida, es decir, todos los símbolos de
la expresión deben ser definidos previamente.

LEDS .EQU 0x03 ; se asigna el valor 0x03 al símbolo LEDS


LEDS2 .EQU 0X00 ; se asigna el valor 0x00 al símbolo LEDS2

Microcontroladores y Microprocesadores

También podría gustarte