No son ceros y unos, bueno en realidad lo son para el microprocesador, pero existen unos opcodes (representaciones mnemonicas) que son equivalentes a estos ceros y unos. Todos los programas tienen una representacion en ensamblador ya que el microprocesador es el unico lenguaje que entiende.
Un ejemplo super simple:
mov eax, 1 << establece el valor del registro eax (1 en este caso)
Hay un par de preguntas sobre ensamblador donde podes ver mejor lo que es y te dejo estos tutoriales por si te interesa:
http://win32asm.cjb.net/