Ahora no se de ningún libro, sin embargo te puedo explicar, más o menos, el proceso. Espero que alguien me corrija si me equivoco.
En el mundo de la informática, existe un tipo de software que se encarga de traducir el código fuente de un programa (lo que tu has escrito) a código ensamblador (lenguaje de programación de más bajo nivel). Este tipo de software son los llamados compiladores.
Para cada lenguaje de programación necesitamos un compilador diferente, o almenos, un compilador que reconozca dicho lenguaje de programación. Por otro lado, tenemos los procesadores. Cada procesador puede reconocer un tipo ensamblador u otro. En general, se habla de ensamblador en general, sin embargo, dependiendo del procesador el lenguaje ensamblador tendrá varias diferencias. No es lo mismo el lenguaje ensamblador de un procesador intel, que de un fujitsu. Cada compilador, a parte de reconocer el lenguaje de programación de alto nivel (lo que tu has escrito) debe ser capaz de traducir dicho lenguaje a el lenguaje ensamblador correspondiente al procesador.
Una vez hecho esto, el procesador será capaz de reconocer dicho lenguaje ensamblador. Así pues, cuando el procesador reconozca una instrucción, esta será traducida a sus correspondientes 1 y 0. El procesador puede realizar esta traducción ya que el lenguaje ensamblador es bastante más limitado (o sinácticamente/semánticamente menos complejo) que un lenguaje de alto nivel.
Espero que te haya quedado claro. Y si alguien detecta algún error, que lo comente.
P.D.: Se que eres nuevo por aquí. Bienvenido! Espero que estés a gusto! Por otro lado, intenta fijarte un poco más cuando escribas e intenta hacer menos faltas. Así nos entenderemos mejor todos. Aquí, somos un poco más quisquillosos que en otros sitios con este tema. Pero no te preocupes
