Anda di halaman 1dari 46

SISTEMAS MICROPROCESADOS

Departamento de Automatizacin y
Control Industrial - DACI

Modos de Direccionamiento

Temario
Modos de Direccionamiento
Set de Instrucciones
Desarrollo y Herramientas

Modos de Direccionamiento
Reflejan cada una de las formas en las que se puede acceder a un
dato

Modos de Direccionamiento

Los registros estn entre


R16-R31
EL nmero entre 0-255

LDI: Load Inmediate


Nota: dato efectivo es el dato con el que finalmente se trabaja (para cargarlo,
guardarlo u operarlo con la ALU), y direccin efectiva a la direccin a la que
finalmente se accede para obtener el dato con el que se trabaja.

Modos de Direccionamiento

LDS - Load Direct from data space


Ejemplo:
lds r2,$FF00

; cargar r3 con el dato del espacio de memoria $FF00

STS - Store Direct to data space


Ejemplo:
sts $FF00,r2

; cargar el espacio de memoria $FF00 con el dato de r2

Modos de Direccionamiento

LD - Load Indirect from data space to Register using Index X (SRAM)


Ejemplo:
clr r27
ldi r26, $60
ld r0,X+
ld r1,X
ldi r26,$63
ld r2,X
ld r3,-X

; limpiar el bit alto de X


; setear la parte baja de X con $60
; cargar r0 con el dato del espacio de memoria $60 (X post incrementado)
; cargar r1 con el dato del espacio de memoria $61
; setear la parte baja de X con $63
; cargar r2 con el dato del espacio de memoria $63
; cargar r3 con el dato del espacio de memoria $62 (X pre decrementado)

ST - Store Indirect From Register to data space using Index X (SRAM)

Modos de Direccionamiento

Modos de Direccionamiento

Modos de Direccionamiento

Ejemplo:
SBI $1C, 0
CBI $1C, 4

; Set bit 0 de $1C


; clear bit 0 de $1C

$1C

Estas instrucciones operan


con los 32 I/O registros mas
bajos

Modos de Direccionamiento

Modos de Direccionamiento

Set de Instrucciones

Temario
Modos de Direccionamiento
Set de Instrucciones
Desarrollo y Herramientas

Set de Instrucciones

Set de Instrucciones
Instrucciones de Transferencia de datos
Instrucciones Aritmeticas y Logicas
Instrucciones de bit
Instrucciones saltos y subrutinas
Otras Instrucciones

Set de Instrucciones

Instrucciones de Transferencia de datos


Son instrucciones que tienen como origen o como destino (o ambos)
un registro del microprocesador, pero que no realizan operaciones
con la ALU, slo transfieren un dato de un sitio a otro.
En este apartado se va a ver:
Carga y almacenamiento de 8 bits
Carga y almacenamiento de 16 bits
Manejo de la pila
Transferencia de registros

Estas instrucciones, junto con las aritmticas, son las ms


frecuentes. Se soportan casi todos los modos de direccionamiento.
Siendo de las ms frecuentes, son las ms rpidas en trminos de
nmero de ciclos de reloj

Set de Instrucciones

Instrucciones de Transferencia de datos

Set de Instrucciones

Instrucciones de Transferencia de datos

Set de Instrucciones

Cuidado!: Los registros de entrada/salida estn mapeados en memoria, y slo


algunos son accesibles a travs de las instrucciones IN/OUT (podemos acceder a
alguno de ellos de dos formas diferentes; en concreto a los 64 primeros, que son las
E/S de la 0x00 a la 0x3F, y que se corresponden con las posiciones de memoria 0x20
a la 0x5F)

Set de Instrucciones

Set de Instrucciones
Instrucciones de Transferencia de datos
Instrucciones Aritmeticas y Logicas
Instrucciones de bit
Instrucciones saltos y subrutinas
Otras Instrucciones

Set de Instrucciones
Instrucciones Aritmeticas y Logicas

Set de Instrucciones
Instrucciones Aritmticas y Lgicas

Set de Instrucciones

Set de Instrucciones
Instrucciones de Transferencia de datos
Instrucciones Aritmeticas y Logicas
Instrucciones de bit
Instrucciones saltos y subrutinas
Otras Instrucciones

Set de Instrucciones
Instrucciones con Bit

Set de Instrucciones
Instrucciones con Bit

Set de Instrucciones

Set de Instrucciones
Instrucciones de Transferencia de datos
Instrucciones Aritmeticas y Logicas
Instrucciones de bit
Instrucciones saltos y subrutinas
Otras Instrucciones

Set de Instrucciones
Saltos y Subrutinas

Set de Instrucciones
Saltos y Subrutinas

Set de Instrucciones
Saltos y Subrutinas

Set de Instrucciones
Saltos y Subrutinas

Set de Instrucciones
Saltos y Subrutinas

Set de Instrucciones

Set de Instrucciones
Instrucciones de Transferencia de datos
Instrucciones Aritmeticas y Logicas
Instrucciones de bit
Instrucciones saltos y subrutinas
Otras Instrucciones

Set de Instrucciones
Otras Instrucciones

Son pseudo-instrucciones, o instrucciones "repetidas

Por ejemplo, SER Rden realidad es un LDI Rd, 0xFF o en TST


en realidad hacemos AND Rd.

Set de Instrucciones
Otras Instrucciones (Control MCU)

Set de Instrucciones

Temario
Modos de Direccionamiento
Set de Instrucciones

Desarrollo y Herramientas

Desarrollo y Herramientas
LENGUAJE ENSAMBLADOR
Lenguaje de bajo nivel (muy cercano al cdigo mquina)
Dependiente del microprocesador y del programa ensamblador
(algunos fabricantes deensambladores utilizan lenguajes
distintos a los propuestos por el fabricante del uP)
CODIGO FUENTE
Admite instrucciones, directivas para el ensamblado y expresiones
Lenguaje

Desarrollo y Herramientas
ETIQUETAS
Referencias simblicas que facilitan la programacin
Pueden referirse a direcciones o a datos (pero siempre son
constantes)
DIRECTIVAS
Instrucciones dadas al ensamblador para que opere de una
determinada forma NO pertenecen al juego de instrucciones
del uP.

Desarrollo y Herramientas

Directivas de Ensamblador
Son comando del programa que genera cdigo objeto y que se
encuentran mezclados en el fichero fuente con las instrucciones del
Uc.
.CSEG
.DSEG
.DB

Code Segment
Data Segment
Define Byte

Ejemplo:
.DB 0, 255, 0b01011101, -128, 0xAA, $45
.DW Define word en el programa de memoria
Ejemplo:
.DW 0, 0xFFFF, -32768, 65535

Desarrollo y Herramientas

Directivas de Ensamblador
.BYTE

Reserva bytes a una variable reservada en SRAM

Label: .BYTE expresin


Var1: .BYTE 1
Tabla: .BYTE 10
.DEF Asigna un nombre simblico a un registro
.DEF symbol= register
.DEF temp = R16

Desarrollo y Herramientas
.EQU
.EQU
.EQU

Simbolo igual a la expresin


label= expresin
aux=2

.ORG Establece el origen de una direccion


.ORG expresin
.ORG 0x15
.INCLUDE Puede incluir librerias
.INCLUDE "m164pdef.inc"

Lenguaje Ensamblador
El lenguaje ensamblador consiste basicamente en cuatro campos:
[ etiqueta: ] mnemonico [operandos] [; comentario]

Desarrollo y Herramientas
MACRO-ENSAMBLADORES
Son ensambladores que permiten la definicin de macros
(similares a los #define de C) Facilitan la estructuracin y
escritura del cdigo

Estructura Bsica de un Programa


.nolist
.include
.list
;==========================================================
; Declaraciones
.def temp=16
;==========================================================
; Inicio de Programa
rjmp Init
; Primera Linea ejecutada
;==========================================================
Init:
ldi temp,0bxxxxxxxx ; Setear como entrada o salidas el puerto B
out DDRB,temp
ldi temp,0bxxxxxxxx ; Setear como entrada o salidas el puerto D
out DDRD,temp
ldi temp,0bxxxxxxxx ; Setear como Pull-ups para las entradas del puertoB
out PortB,temp
; Inicilaizar estados de los puertos
ldi temp,0bxxxxxxxx ; Setear como Pull-ups para las entradas del puertoD
out PortD,temp
; Inicilaizar estados de los puertos
;==============================================================
; Cuerpo Programa Principal
Inicio:
<Aqui se escribe el programa Principal>
rjmp Inicio
; Lazo infinito
;==============================================================
; Tablas

Desarrollo y Herramientas
COMPILADOR
Programa que transforma un cdigo fuente en un cdigo objeto
Un ensamblador es un compilador, ya que transforma cdigo
fuente (lenguaje ensamblador), en cdigo objeto (cdigo
mquina).
Los compiladores suelen trabajar
en varios pasos, transformando el
cdigo fuente (C, C++,...) en
lenguaje
ensamblador,
ensamblando cada mdulo, y
enlanzando despus los mdulos
con bibliotecas, para generar un
ejecutable.

Desarrollo y Herramientas

Desarrollo y Herramientas
EJERCICIO: Realizar una suma y guardarda en memoria SRAM ($300)
1.
2.
3.
4.
5.
6.
7.
8.

Cargar el valor 25 en hexadecimal al registro r16


Cargar el valor 34 en hexadecimal al registro r17
Cargar el valor 00110001 al registro r18
Sumar r16 + r17 y almacenarlo en r16
Sumar r16 + r18 y almacenarlo en r16
Cargar el valor 11 en decimal al registro r17
Sumar r16 + r17 y almacenarlo en r16
Guardar el valor de r16 en el espacio de memoria SRAM 0x300

Desarrollo y Herramientas
SOLUCIN: Realizar una suma y guardarda en memoria SRAM ($300)
.include "m164pdef.inc"
.equ SUM = 0x300
; localizacion SRAM $300 para SUM
.org 0x00
; empieza direccion 0x00
rjmp inicio
inicio:
ldi r16,0x25
; cargar r16 con 0x25
ldi r17,0x34
; cargar r17 con 0x34
ldi r18,0b00110001 ; cargar r18 con 0x31
add r16,r17
; sumar r17 a r16 se almacena en r16
add r16,r18
; sumar r18 a r16 se almacena en r16
ldi r17, 11
; cargar r17 con 0x0B
add r16,r17
; sumar r17 a r16 se almacena en r16
sts SUM,r16
; guardar r16 en SUM (0x300)
saltar:
rjmp saltar

; lazo infinito

Bibliografa
1. Muhammad Ali Mazidi (2011). The avr
microcontroller and embedded system.
2. Yago Torroja & Jorge Portilla, Curso de
Microcontroladores, Escuela Tcnica
Superior de Ingenieros Industriales,
Universidad Politcnica de Madrid

SISTEMAS MICROPROCESADOS

Departamento de Automatizacin y
Control Industrial - DACI
Marco Herrera
marco.herrera@epn.edu.ec

Anda mungkin juga menyukai