III. Modos de direccionamiento y conjunto de...

86
Microprocesadores y Microcontroladores III. Modos de direccionamiento y conjunto de instrucciones FACULTAD DE INGENIERÍA

Transcript of III. Modos de direccionamiento y conjunto de...

Page 1: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microprocesadores y Microcontroladores

III. Modos de direccionamiento y conjunto de instrucciones

FACULTAD DE INGENIERÍA

Page 2: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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)

Page 3: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

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;

0x00000260

0x00000264

0x00000268

0x000002C6

Dirección EEPROM

R0

PC

MOV R0,#100F04F 0064

0x00000264

0x 0064

Page 4: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

LDR R0,[R1]

Microcontroladores y Microprocesadores

0x00000142

0x00000144

0x00000146

0x00000148

Dirección EEPROM

PC

R0

R1

6808

0x 00000144

0x20000000

0x20000004

0x20000008

0x2000000C

Dirección RAM

0x20000004

0x12345678

0x12345678

Page 5: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

LDR R0,[R1+4]

Microcontroladores y Microprocesadores

INSTRUCCIONES

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

R1 no se modifica por la instrucción

0x00000142

0x00000144

0x00000146

0x00000148

Dirección EEPROM

PC

R0

R1

68480x 00000146

0x20000000

0x20000004

0x20000008

0x2000000C

Dirección RAM

0x20000004

0xF5A7D98E

0xF5A7D98E R1+4

Page 6: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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:

▪ Modo de direccionamiento inmediato

Modo de direccionamiento de desplazamiento inmediato regular

Modo de direccionamiento de desplazamiento inmediato pre-indexado

Modo de direccionamiento de desplazamiento inmediato post-indexado

Modo de direccionamiento de desplazamiento inmediato regular con acceso no

privilegiado

▪ Modo de direccionamiento de desplazamiento con registro

▪ Modo de direccionamiento relativo del PC

▪ Modo de direccionamiento de cargar y almacenamiento a múltiples

registros

Page 7: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 8: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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.

Page 9: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 10: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 11: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

SINTAXIS

Las instrucciones en el Lenguaje Ensamblador tiene 4

campos separados por espacios

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

Etiqueta Opcode Operandos Comentarios

Funcion MOV R0, #100 ; esto pone R0 con 100

BX LR ; esta es la función return

Page 12: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Ejemplo:

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

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

Page 13: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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.

Page 14: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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 Basic.NET, 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.

Page 15: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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

Page 16: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Integrated Developed Enviroment (IDE) para Microcontroladores

Cortex M:

ARM Keil uVision

Code Compouser Studio (CCStudio) de Texas Instruments

Los IDE contienen:

Editor

Programa Ensamblador

Compilador

Simulador

Pueden ser utilizados para depurar y bajar el programa al

microcontrolador

Page 17: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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)

Page 18: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 19: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 20: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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} {cond} Rd, Op2

MOV {cond} Rd, #imm16S - 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

Page 21: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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} {cond} 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

Page 22: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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 →

MOVW Rd, #0x6E5A

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

Rd →

D3F4_ _ _ _

_ _ _ _ 6E5A

Page 23: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

The Definitive Guide to ARM Cortex-M3 and Cortex-M4 ProcessorsThird Edition, Joseph YiuARM Ltd., Cambridge, UK

Page 24: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

SUFIJOS DE CONDICIONES

Page 25: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Instrucciones con acceso a memoria

Instrucción que carga datos desde memoria a un registro

LDR {type} {cond} 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

Page 26: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Instrucciones con acceso a memoria

Instrucción que almacena datos desde un registro a memoria

STR {type} {cond} Rt, [ Rn ]

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

{cond} - código opcional de condición

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

Page 27: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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.

Page 28: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones lógicas

Operaciones lógicas en Cortex M

A

Rn

B2do

operando

A&B

AND

A|B

ORR

A^B

EOR

A&(~B)

BIC

A|(~B)

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

Page 29: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones lógicas

ORROR 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

|

Page 30: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones lógicas

ANDAND 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

|

Page 31: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones lógicas

EORXOR 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

|

Page 32: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 33: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones de desplazamiento

Page 34: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones de desplazamiento

LSRDesplazamiento 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

Page 35: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones de desplazamiento

ASRDesplazamiento 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

Page 36: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones de desplazamiento

LSLDesplazamiento 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)

Page 37: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones aritméticas

SUMADOR

CIN

+ 0 a

0 b

------------

Cout s

abcin

s

cout

Page 38: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones aritméticas

Sumador con acarreo en cascada

abcin

s

cout

Page 39: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Representación de un entero en complemento a 2

4 bits

Page 40: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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.

Page 41: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

INSTRUCCIONES ARITMÉTICAS

Representación de un entero en complemento a 2

4 bits

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

Page 42: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Representación con complemento 2

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

Bit de signo

Valor decimal

𝑫 𝑩 = −𝒃𝑵−𝟏𝟐𝑵−𝟏 + 𝒃𝑵−𝟐𝟐

𝑵−𝟐… . 𝒃𝟏 𝟐𝟏 + 𝒃𝟎𝟐

𝟎

Page 43: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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:

− 𝟐𝒎 − 𝑴+ 𝟐𝒎 −𝑵 = − 𝑵−𝑴

Page 44: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 45: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Ejemplo usando complemento de 2 para sustraer M-N:

M = 1010100

N = 1000100

1010100+ 0111100

------------acarreo final → 1 0010000

Resultado → 10000

Page 46: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 47: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Se puede ignorar al acarreo

Page 48: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Se puede ignorar al acarreo

Cuando se tiene dos números negativos

siempre se tendrá acarreo

Page 49: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

SOBREFLUJO

Sobreflujo: el bit de signo no concuerda con las entradas

Page 50: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

SOBRE FLUJO

Sobreflujo: el bit de signo no concuerda con las entradas

Page 51: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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 a A

Page 52: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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.

Page 53: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones aritméticas

Multiplicación

14

x 11

----------

Page 54: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones aritméticas

Multiplicación

Page 55: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Operaciones aritméticas

Multiplicación

Page 56: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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.

Page 57: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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;

Page 58: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

UDIVDivisió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.

Page 59: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

MODOS DE DIRECCIONAMIENTO Y CONJUNTO DE INSTRUCCIONES

SDIVDivisió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.

Page 60: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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.

Page 61: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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;

Page 62: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 63: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

Page 64: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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

de instrucciones –pág. 91

Page 65: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

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)

Page 66: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Comparación y prueba

Instrucción Función Bander

as

CMP Rn,

Operando

Compara el valor de Rn con Operando

(sustracción Rn-operando). Actualiza los

banderas de condiciones con elresultado, pero no se escribe el resultado

en Rn.

N,Z,C,V

TST Rn,

Operando

Realice una operación AND bit a bit con

el valor de Rn y el valor del Operando. El

resultado no se escribe en Rn.

N,Z,C,V

TEQ Rn,

Operando

Realice una operación XOR bit a bit con

el valor de Rn y el valor del Operando. El

resultado no se escribe en Rn.

N,Z,C,V

Page 67: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

Comparación

CMPcompara 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

Page 68: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

INSTRUCCIONES DE COMPARACIÓN Y PRUEBA

Prueba

TSTPrueba 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

Page 69: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

INSTRUCCIONES DE COMPARACIÓN Y PRUEBA

Comparación

TEQPrueba 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

Page 70: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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. Compara y salta

4. Tabla de saltos (TBB, TBH)

5. Ejecuciones condicionales (If-Then o IT)

Page 71: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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

Page 72: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

INSTRUCCIONES DE CONTROL DE FLUJO DE PROGRAMA

Page 73: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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;

Suma no

signada

Fin

R= A + B

C

R = 42 94 967 295

Ó

R= FFFF FFFF

C=1 Techo

C=0Correcto

Sustracción no

signada

Fin

R= A - B

C

R= 0

C=0 Piso

C=1Correcto

Page 74: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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:

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

Page 75: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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;

Suma signada

Fin

R= A + B

V

V=1error

V=0

N

N=1

N=0

bajo

Sustracción

signada

Fin

R= A - B

V

R= 2147483647

V=1 error

V=0

N

N=1

N=0

bajo

R =2147483647

Ó

R= 0x7FFF FFFF

R = - 2147483648

Ó

R= 0x 8000 0000

R = - 2147483648

Ó

R= 0x 8000 0000

Page 76: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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;

Page 77: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

ESTRUCTURA FOR - LOOP

Page 78: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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;

Page 79: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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

Page 80: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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

Page 81: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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

Page 82: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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 ; se usara instrucciones thumb

.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

Page 83: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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);

Sintaxis:

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;

Page 84: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

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

Page 85: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

DIRECTIVAS DEL ENSAMBLADOR

DIRECTIVAS DEL ENSAMBLADOR .equ –

Da el nombre de un símbolo a un valor constante;

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 0x20 al símbolo LEDS

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

Page 86: III. Modos de direccionamiento y conjunto de instruccionesprofesores.fi-b.unam.mx/vicflo/Microprocesadores...lenguaje ensamblador del ARM Cortex-M4 y son: ... SINTAXIS Las instrucciones

Microcontroladores y Microprocesadores

MODOS DE DIRECCIONAMIENTO Y CONJUNTO DE INSTRUCCIONES

PSEUDOINSTRUCCIÓN

Es una instrucción para el programa ensamblador, esto es, que solo se

ejecuta en el momento de ensamblar, además de no generar código.