Module 4Módulo 4

The Art of AssemblyEl Arte del Ensamblador

From C structures to raw machine code. Mastering directives, control flow, and data arrangement. De estructuras en C a código máquina. Dominando directivas, flujo de control y organización de datos.

Santi Scagliusi, PhD

Anatomy of a LineAnatomía de una Línea

Hover parts to explorePasa el ratón para explorar
RESET: mov.w #WDTHOLD, &WDTCTL ; Stop watchdog
Hover over the code above...Pasa el ratón sobre el código...

Directives: The OrganizerDirectivas: El Organizador

Directives start with a dot (.). They don't create machine code; they tell the assembler where to put things. Las directivas comienzan con un punto (.). No generan código máquina; le dicen al ensamblador dónde colocar las cosas.

  • .text Executable Code -> FRAMCódigo ejecutable -> FRAM
  • .data / .bss Variables -> RAMVariables -> RAM
  • .intvec Interrupt Vectors -> End of FRAMVectores de interrupción -> Final de FRAM
Memory MapMapa de Memoria
0xFF80 Vectors (.intvec)0xFF80 Vectores (.intvec)
FRAM (.text)
RAM (.data / .bss)

Translation: C to AssemblyTraducción: C a Ensamblador

Matrices in Linear MemoryMatrices en Memoria Lineal

Memory is 1D. Matrices are 2D. We flatten them row by row. La memoria es 1D. Las matrices son 2D. Las aplanamos fila por fila.
Addr = Base + (Row × Width + Col) × SizeDir = Base + (Fila × Ancho + Col) × Tamaño

Logical View (3x4 Matrix)Vista Lógica (Matriz 3x4)

int table[3][4]
0
0
Offset CalculationCálculo del Desplazamiento
Row (i) * Width (4)Fila (i) * Ancho (4) 0 * 4 = 0
+ Col (j) + 0
IndexÍndice 0
x 2 bytes (int) Offset: 0Desplazamiento: 0
Physical MemoryMemoria Física

The Stack: LIFO StorageLa Pila: Almacenamiento LIFO

The Stack is a temporary storage area in RAM. It grows downwards (from high address to low address). La Pila es un área de almacenamiento temporal en RAM. Crece hacia abajo (de direcciones altas a direcciones bajas).

Used for: Se utiliza para:

  • Saving registers (PUSH R4)Guardar registros (PUSH R4)
  • Local variablesVariables locales
  • Return Addresses during CALLDirecciones de retorno durante CALL
Stack Pointer (R1) 0x2400

PUSH: SP -= 2, then Write.   POP: Read, then SP += 2.
CALL: Pushes return address (PC) then jumps.
PUSH: SP -= 2, luego escribe.   POP: Lee, luego SP += 2.
CALL: Apila la dirección de retorno (PC) y salta.

RAM SegmentSegmento RAM
High Addresses (Top)Direcciones Altas (Tope)

Calling Convention CheatsheetResumen de Convención de Llamada

R12 Arg 1
R13 Arg 2
R14 Arg 3
R15 Arg 4
Stack Arg 5+
R12 Return ValVal. Retorno