¿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.