Registers, addressing modes, timing, encoding. Registros, modos de direccionamiento, temporización, codificación.
Santi Scagliusi, PhD
R4–R15 are interchangeable. R0–R3 each play a hidden role.R4–R15 son intercambiables. R0–R3 cumplen un papel oculto.
By the time the CPU decodes an opcode, PC already points to the next word.Cuando la CPU decodifica un opcode, PC ya apunta a la siguiente palabra.
LSB is always 0 → instructions live at even addresses, PC advances by 2.El LSB siempre vale 0 → las instrucciones viven en direcciones pares y el PC avanza de 2 en 2.
PUSH decrements first, then writes. POP reads first, then increments.PUSH decrementa y escribe. POP lee y luego incrementa.
LSB locked to 0 → the stack always moves in 2-byte words.LSB siempre 0 → la pila se mueve en palabras de 2 bytes.
SP −= 2
[SP] ← Rn.B
[SP+1] ← 0x00 *
* only on .Bsolo en .B
Rn ← [SP].B
SP += 2 (always)
@SP+ is hardwired to step 2.@SP+ siempre suma 2.
Four arithmetic flags. Four low-power bits. One interrupt master.Cuatro flags aritméticos. Cuatro bits de bajo consumo. Un maestro de interrupciones.
Used as source with the right As, the CPU stops reading the register and injects a fixed value instead.Usados como fuente con el As correcto, la CPU deja de leer el registro y mete un valor fijo en su lugar.
As=00 and As=01 still read R2 — the status register.Con As=00 y As=01, R2 sigue leyendo el registro de estado.
R3 has no other job — every read is a constant.R3 no tiene otro papel — cada lectura es una constante.
Six constants — 0, 1, 2, 4, 8, −1 — that the CPU pulls out of thin air. Next slide: why this matters.Seis constantes — 0, 1, 2, 4, 8, −1 — que la CPU saca de la nada. Siguiente slide: por qué importa.
Same source code. The assembler picks the cheaper encoding.El mismo código fuente. El ensamblador elige la codificación más barata.
A naive immediate mode would carry the literal in a second word.El modo inmediato "ingenuo" llevaría el literal en una segunda palabra.
The "1" is born inside the instruction itself — no extra word, no extra cycle.El "1" nace dentro de la propia instrucción — sin palabra extra, sin ciclo extra.
Registers, ALU and base word are 16 bits wide.Registros, ALU y palabra base son de 16 bits.
Code, RAM and peripherals share one map.Código, RAM y periféricos comparten un solo mapa.
The low byte goes first in memory.El byte bajo se guarda primero en memoria.
Instructions live at even addresses. PC always advances by 2.Las instrucciones viven en direcciones pares. PC avanza de 2 en 2.
Seven ways to tell the MSP430 where the operand lives. Siete formas de decirle al MSP430 dónde está el dato.
Four light up as both. Three are source-only.Cuatro como ambos. Tres sólo como fuente.
No memory. The fastest mode.Sin memoria. El modo más rápido.
The offset travels in the word after the opcode.El offset viaja en la palabra siguiente al opcode.
The assembler turns var into PC + offset.El ensamblador convierte var en PC + offset.
varUsed for memory-mapped peripherals: &P1OUT, &TA0R.Para periféricos mapeados en memoria: &P1OUT, &TA0R.
PC autoincrements past the literal after fetching it.El PC se autoincrementa al leer el literal.
@PC+es @PC+ disfrazado
Dereference. The register itself is unchanged.Dereferencia. El registro no cambia.
After the read, the register steps by 1 (.B) or 2 (.W).Tras la lectura, el registro avanza 1 (.B) o 2 (.W).
Two source bits (As) and one destination bit (Ad) cover everything.Dos bits de fuente (As) y uno de destino (Ad) lo cubren todo.
Destination is a register: Rn.El destino es un registro: Rn.
Destination is indexed memory: X(Rn).El destino es memoria indexada: X(Rn).
The assembler rewrites two of them as a special case of the first. EA = effective address.El ensamblador reescribe dos como un caso especial del primero. EA = dirección efectiva.
EA = R5 + X
EA = PC + X
EA = 0 + X = X
Each click on Next advances one micro-operation: opcode fetch, extension word, address compute, memory access, write-back.Cada clic en Siguiente avanza una micro-operación: fetch, palabra extra, cálculo de dirección, acceso a memoria, escritura.
No new opcodes. The assembler rewrites them using a real instruction + a constant generator.Sin opcodes nuevos. El ensamblador los reescribe con una instrucción real + un generador de constantes.
Every memory access adds a cycle. Stay in registers and pay one.Cada acceso a memoria suma un ciclo. Si te quedas en registros, sólo pagas uno.
1 cycle · 1 wordciclo · 1 palabra
6 cycles · 3 wordsciclos · 3 palabras
2 cycles · taken or notciclos · se tome o no
6 / 5 cyclesciclos
Format I — double-operand. We start here.Formato I — doble operando. Empezamos aquí.
Source uses two bits (As). Destination uses one (Ad).La fuente usa dos bits (As). El destino, uno (Ad).
0 → word (16-bit). 1 → byte (8-bit).0 → palabra (16 bits). 1 → byte (8 bits).
Same encoding idea, less to encode.Misma idea de codificación, menos que codificar.
It accepts every addressing mode.Acepta todos los modos de direccionamiento.
A 10-bit signed offset added to the PC. Always 2 cycles.Un offset de 10 bits con signo sumado al PC. Siempre 2 ciclos.
PCnew = PCold + 2 + offset × 2
Range: −511 to +512 words. Rango: −511 a +512 palabras.
Fetch the opcode. Set up the operand. Commit the result.Captar el opcode. Preparar el operando. Escribir el resultado.
Read the opcode word at PC. PC moves to PC + 2.Leer la palabra de opcode en PC. PC pasa a PC + 2.
Decode fields, fetch extension words, compute the effective address.Decodificar campos, leer palabras extra y calcular la dirección efectiva.
Run the ALU, store the result, update the status flags.Ejecutar la ALU, almacenar el resultado y actualizar las flags.
Everything else in Module 2 is detail on top of these.Todo lo demás del módulo 2 es detalle encima de estas.
PC, SP, Status, Constant Generator. R4–R15 are interchangeable. PC, SP, Estado y Generador de Constantes. R4–R15 son intercambiables.
Register-only takes one cycle. Each memory access adds another. Solo registros: 1 ciclo. Cada acceso a memoria suma otro.
Double-operand, single-operand, conditional jump. All 27 instructions fit here. Doble operando, un operando, salto condicional. Las 27 instrucciones caben aquí.