¿Cómo distingue una computadora entre datos e instrucciones?

Vi unvídeo en una PC de 8 bits alimentando un programa, manualmente, usando interruptores de física.

El programa alimentado fue:

MAIN:
    0000 0001 0100     # 0 = LDA [4]
    0001 0010 0101     # 1 = ADD [5]
    0010 0101 0000     # 2 = OUT
    0011 1111 0000     # 3 = HLT

DATA:
    0100 00001110      # 4 = #14
    0101 00011100      # 5 = #28

Lo que quiero saber es cómo la computadora, si lo hace, distingue entre Datos e Instrucciones, porque no hay indicadores que dividan los datos de las instrucciones.

0001 0001 0010 puede interpretarse como:

1 = LDA [2]

o:

1 = #10

Es porque mientras se ejecuta el programa, las direcciones se tratan como instrucciones. pero debido al HLT, el programa deja de ejecutar las direcciones de memoria como si fueran instrucciones y deja direcciones más altas; y luego LDA / ADD / SUB etc. tratan todas las ubicaciones en la memoria como valores binarios.

En ese caso, sería:

0000 0010 0000 se interpretará como:

0 = ADD #32

y no

0 = ADD [ ADD [ ADD [ ADD ...]]]

** Mientras escribía esta pregunta me di cuenta de cosas nuevas a medida que avanzaba

mejor ejemplo:

Si la detención no estuviera allí, el programa funcionaría bien, pero luego continuaría con los datos e interpretaría como:

0010 0000 1110      # 4 = NOP [14]
0101 0001 1100      # 5 = LDA [12]

Si es así, la computadora se bloqueará 1: porque NOP recibe un operando, y 2: porque las direcciones de memoria 12 y 14 no están definidas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta