Module 3Módulo 3

Addressing modesModos de direccionamiento

Seven ways to tell the MSP430 where the operand lives. Siete formas de decirle al MSP430 dónde está el dato.

Santi Scagliusi, PhD

Seven modes.Siete modos.

Four can be source or destination. Three are source only.Cuatro pueden ser fuente o destino. Tres sólo fuente.

Source & destinationFuente y destino
Source onlySólo fuente
Pick a mode to see how it locates the operand.Pulsa un modo para ver cómo localiza el operando.
Register modeModo registro 1 / 7
MOV.W R4, R6
1 cycle1 ciclo · 1 word1 palabra · for counters and intermediate values inside the CPUpara contadores y valores temporales dentro de la CPU
CPU
R4 1234 src
R5 -- --
R6 -- --1234 dst
R7 -- --
EA
= R4
MAB
MDB
PROGRAM · 1 wordPROGRAMA · 1 word
0xC1004406
DATADATOS
0x2400-- --
0x2402-- --
0x2404-- --
0x2406-- --
0x2408-- --
0x240A-- --
Indexed modeModo indexado 2 / 7
MOV.W 6(R5), R6
3 cycles3 ciclos · 2 words2 palabras · for struct fields and array elementspara campos de struct y elementos de array
CPU
R4 -- --
R5 2400 base
R6 -- --CDAB dst
R7 -- --
Instr +1 wordInstr +1 word 0x0006
EA
R5 + 6 = 0x2406
MAB
0x2406
MDB
CDAB
PROGRAM · 2 wordsPROGRAMA · 2 words
0xC1004516
0xC1020006
DATADATOS
0x2400-- --
0x2402-- --
0x2404-- --
0x2406CDAB
0x2408-- --
0x240A-- --
Symbolic modeModo simbólico 3 / 7
MOV.W var, R6
3 cycles3 ciclos · 2 words2 palabras · for global variables you refer to by namepara variables globales a las que te refieres por nombre
CPU
R4 -- --
PC C100 base
R6 -- --CDAB dst
R7 -- --
Instr +1 · from assemblerInstr +1 · del ensamblador var − PC
EA
PC + X = 0x2406
MAB
0x2406
MDB
CDAB
PROGRAM · 2 wordsPROGRAMA · 2 words
0xC1004016
0xC102var − PC
DATADATOS
0x2400-- --
0x2402-- --
0x2404-- --
varCDAB
0x2408-- --
0x240A-- --
Absolute modeModo absoluto 4 / 7
MOV.W &P1OUT, R6
3 cycles3 ciclos · 2 words2 palabras · for memory-mapped peripherals like P1OUT or TA0Rpara periféricos mapeados en memoria, tipo P1OUT o TA0R
CPU
R4 -- --
R5 -- --
R6 -- --0004 dst
R7 -- --
Instr +1 word · the addressInstr +1 word · la dirección 0x0202
EA
= 0x0202
MAB
0x0202
MDB
0004
PROGRAM · 2 wordsPROGRAMA · 2 words
0xC1004216
0xC1020202
PERIPHERALSPERIFÉRICOS
0x01FC-- --
0x01FE-- --
0x0200-- --
P1OUT0004
0x0204-- --
0x0206-- --
Immediate modeModo inmediato 5 / 7
MOV.W #0x4321, R6
2 cycles2 ciclos · 2 words2 palabras · for constants that live inside the instructionpara constantes que viven dentro de la instrucción
CPU
R4 -- --
PC C102 @PC+
PC → 0xC104
R6 -- --4321 dst
R7 -- --
Instr +1 word · the literalInstr +1 word · el literal 0x4321
EA
= PC = 0xC102
MAB
0xC102
MDB
4321
PROGRAM · 2 wordsPROGRAMA · 2 words
0xC1004036
0xC1024321
DATADATOS
0x2400-- --
0x2402-- --
0x2404-- --
0x2406-- --
0x2408-- --
0x240A-- --
Indirect modeModo indirecto 6 / 7
MOV.W @R5, R6
2 cycles2 ciclos · 1 word1 palabra · for dereferencing a pointer, like *p in Cpara leer a través de un puntero, como *p en C
CPU
R4 -- --
R5 2400 ptr
R6 -- --CDAB dst
R7 -- --
EA
= R5 = 0x2400
MAB
0x2400
MDB
CDAB
PROGRAM · 1 wordPROGRAMA · 1 word
0xC1004526
DATADATOS
0x2400CDAB
0x2402-- --
0x2404-- --
0x2406-- --
0x2408-- --
0x240A-- --
Indirect auto-incIndirecto auto-inc 7 / 7
MOV.W @R5+, R6
2 cycles2 ciclos · 1 word1 palabra · for walking arrays and strings element by elementpara recorrer arrays y strings elemento a elemento
CPU
R4 -- --
R5 2400 ptr
R5 → 0x2402
R6 -- --CDAB dst
R7 -- --
EA
= R5 = 0x2400
MAB
0x2400
MDB
CDAB
PROGRAM · 1 wordPROGRAMA · 1 word
0xC1004536
DATADATOS
0x2400CDAB
0x2402-- --
0x2404-- --
0x2406-- --
0x2408-- --
0x240A-- --

As and Ad pick the addressing mode.As y Ad eligen el modo de direccionamiento.

The source field is two bits (four modes); the destination, one bit (two).El campo de fuente son dos bits (cuatro modos); el de destino, uno (dos).

As · source · 2 bitsfuente · 2 bits
00 RegisterRegistro Rn
01 IndexedIndexado X(Rn)
10 IndirectIndirecto @Rn
11 AutoincrementAutoincremento @Rn+
Ad · destination · 1 bitdestino · 1 bit
0 RegisterRegistro Rn
1 IndexedIndexado X(Rn)

No indirect or autoincrement destination. Use 0(Rn) to store indirectly.El destino no admite indirecto ni autoincremento. Usa 0(Rn) para escribir indirectamente.

Same code, different registerMismo código, otro registro
01 + PC → SymbolicSimbólico label 01 + R2 → AbsoluteAbsoluto &ADDR 11 + PC → ImmediateInmediato #N

Seven modes, one mechanism.Siete modos, un mecanismo.

Every mode just computes an effective address. The cost is the number of memory accesses.Cada modo solo calcula una dirección efectiva. El coste es el número de accesos a memoria.

Start Module 4: Instructions, Formats & TimingComenzar Módulo 4: Instrucciones, formatos y timing arrow_forward