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