* Operaciones aritméticas y lógicas: Agregar, restar, multiplicar, dividir, comparar (mayor que, menos que, igual a), lógico y, o, no, etc.
* Movimiento de datos: Datos de movimiento entre registros (memoria interna de la CPU), ubicaciones de memoria y dispositivos de entrada/salida. Esto incluye cargar datos de la memoria en un registro, almacenar datos de un registro a la memoria y transferir datos entre registros.
* flujo de control: Cambiar el orden en el que se ejecutan las instrucciones. Esto incluye:
* Jump/Branch: Cambiar el puntero de instrucciones a una dirección diferente en la memoria, permitiendo la ejecución condicional (declaraciones if-then-else) y bucles.
* Llamada/retorno: Llamar a las subrutinas (funciones) y volver al punto de la llamada.
* entrada/salida (I/o): Comunicarse con dispositivos externos como teclados, ratones, pantallas, discos duros e interfaces de red.
* Control del sistema: Instrucciones relacionadas con la administración de la CPU en sí, como el manejo de interrupciones (señales que indican eventos que requieren atención inmediata) y cambiando los modos de CPU (por ejemplo, cambiar entre el usuario y el modo del núcleo).
Estas instrucciones básicas se combinan para crear operaciones y programas más complejos. Es importante tener en cuenta que las instrucciones * específicas * varían significativamente entre diferentes arquitecturas de CPU (X86, ARM, RISC-V, etc.). Cada arquitectura tiene su propia arquitectura de conjunto de instrucciones (ISA), definiendo las instrucciones que comprende. Si bien las categorías de instrucciones son similares, los códigos de operación exactos (representaciones binarias de las instrucciones) y sus funcionalidades difieren.
Los programadores rara vez trabajan directamente con el código de la máquina. En cambio, usan lenguajes de programación de nivel superior (como C ++, Java, Python) que luego se compilan o interpretan en el código de la máquina que la CPU puede ejecutar. Los ensambladores traducen el lenguaje de ensamblaje (una representación legible por humanos del código de la máquina) en el código de la máquina.