El lenguaje ensamblador es un lenguaje de programación a muy bajo nivel, pero legible por humanos. Generalmente cada instrucción en ensamblador corresponde a una instrucción en código máquina, en ocasiones, hay instrucciones en ensamblado (macros) que representan dos o mas instrucciones de código máquina (pero no suele ser lo normal).

Tipos de instrucciones:

  • Transferencia de datos: registros->memoria, memoria->registros, entrada/salida
  • Operaciones aritmético-lógicas (procesadas por la ALU): suma, resta, multiplicación, división, AND, OR, XOR, NOT, desplazamiento de bits, SET, RESET…
  • Operaciones de control de flujo: saltos condicional/incondicional, llamadas a funciones, retorno de funciones

En casi todos los procesadores suele haber dos registros muy importantes: PC (Program Counter) y SP (Stack Pointer) El primer registro se encarga de almacenar la dirección de memória de la instrucción que se va a ejecutar, mientras que el segundo registro se encarga de guardar la dirección de la pila.

Modos de direccionamiento:

El modo de direccionamiento indica la forma en que se llega al operando de una instrucción, los más usados son:

  • Implícito o Inherente: La instrucción no requiere operandos. Ejemplo: NOP Operación: NOP

  • Inmediato: El operando sigue al código de operación. (Para indicar este modo de direccionamiento se suele anteponer un numeral (#) al operando) Ejemplo: LDA #$15 Operación: LDA Operando: $15 (15 en hexadecimal)

  • Absoluto: La dirección del operando se indica a continuación del código de operación. Ejemplo: STA $6885 Operación: STA Operando: Valor contenido en la dirección de memoria $6885.

  • Indexado: La dirección del operando se indica a continuación del código de operación, expresada en forma de DIRECCION,REGISTRO_INDICE, estos valores se suman. Ejemplo: LDA $4000,X Operación: LDA Operando: Valor contenido en la dirección de memoria $4000 más el contenido del registro índice X.
  • Relativo: El operando es un valor, que debe sumarse a un registro base (usualmente el PC). Ejemplo: BRA $08 (Siendo PC: 9950) Operación: BRA Operando: Valor que debe sumarse al PC para llegar a la dirección destino, cabe aclarar que de por sí la instrucción BRA suma 1 a este valor. Es decir, en este mismo ejemplo, el programa saltaría a $9950+$01+$08