¿Cuál es la diferencia entre datos y programas en ensamblador? ¿Cómo determinar qué información en la memoria son datos?
No hay diferencia entre datos y programas en lenguaje ensamblador cuando se almacenan en la unidad de memoria. Todos son información binaria.
Si cs:ip apunta a una determinada unidad de memoria, entonces la CPU comenzará la ejecución desde esta unidad, así que aquí está la instrucción (programa).
Si algún método de direccionamiento de memoria apunta a una ubicación y se utiliza como operando, entonces se trata de datos.
De hecho, si nos fijamos únicamente en una unidad de memoria, es imposible distinguir si se trata de datos o de un programa. La única forma es utilizar instrucciones ensambladoras para diferentes interpretaciones al escribir programas.