Todos los microprocesadores internamente tienen un conjunto de registros. La mayoría son de propósito general y se usan para operaciones aritméticas (+, -) o lógicas (AND, OR, XOR) y otros propósitos. Sin embargo, hay un registro dedicado llamado contador de programas o PC (que no debe confundirse con el PC de su escritorio).
Cuando un microprocesador se enciende, la PC se carga con un valor fijo, a menudo 0. La PC es un puntero a la memoria del programa, es decir, si la PC es 0, entonces se obtienen y ejecutan las instrucciones de la dirección 0. La PC se incrementa. Asumiré una arquitectura de microprocesador de 16 bits (dos bytes), con una memoria direccionable por bytes, por lo que la PC se incrementa en dos cada vez. Así que las instrucciones se ejecutan en secuencia, 0, 2, 4, 6, 8, etc.
Este orden secuencial se divide en dos casos: una instrucción de bifurcación (a veces llamada salto) y una llamada de subrutina. Una instrucción de bifurcación contiene la dirección de la siguiente instrucción que se ejecutará. Entonces, si la instrucción en la dirección de memoria 8 era BRA 100, la siguiente instrucción que se buscaría saldría de la ubicación de memoria 100. La siguiente instrucción después de eso provendría de la ubicación 102, etc.
Las instrucciones de bifurcación pueden ser incondicionales o condicionales. El ejemplo que acabamos de dar fue una rama incondicional, siempre se toma. También puede tener ramas condicionales, que dependen de alguna condición, como que un registro particular sea cero. Si el registro tuviera un valor inicial y se redujera repetidamente en algún punto antes de la instrucción de bifurcación condicional, esto formaría un bucle.
Una llamada de subrutina también va a otra ubicación, pero cuando el código allí (la subrutina) finaliza, ejecuta una instrucción de retorno y regresa a la instrucción que sigue a la llamada de subrutina.
40 CALL 80 (subroutine call)
42 (comes back here after subroutine executes RET instruction)
.
.
.
80 (first instruction of subroutine)
.
. (more instructions)
.
88 RET (will go back to address 42)
Por lo general, hay un área especial en la memoria llamada "pila" que mantiene un registro de la dirección a la que la subrutina regresa.