Я вижу, что ты совсем запутался. :-)
Во-первых, код - это данные, это просто данные, которые имеют особое значение для процессора [1].
Во-вторых, "биты" - это уровни заряда, движущиеся, как водопроводная вода, по проводам логики. Обратите внимание, что уровень заряда (напряжение) не является действительным электроном, движущимся вокруг: хотя электроны действительно двигаются, они движутся довольно медленно по сравнению с изменением напряжения.
ОЗУ означает память с произвольным доступом, а D в DRAM означает "динамический", потому что без обновления он не длится долго. Современные чипы имеют внутреннюю логику обновления, которая считывает все биты и записывает их обратно, что приводит к перезарядке магазина. Почти все ОЗУ хранят биты как два уровня заряда, например, потенциал 0 вольт для логической 0 и потенциал 1,5 вольт для логической 1. Возможно, хотя и не совсем, иметь многозначные биты, поэтому 0 .. 0,1 вольт для 0, 0,9 .. 1,1 вольт на 1, 1,9 .. 2,1 вольт для 2 и 2,9 .. 3,1 вольта на 3, для ячейки, хранящей 2 бита (двоичные цифры) данных.
Фактические напряжения, используемые в логике (память или иное), не важны, но, конечно, каждый конец компонентов, соединяющих провода, должен согласовывать их. Если вы посмотрите на электронные таблицы данных, вы найдете утверждение о напряжениях, которые чип интерпретирует как каждый логический уровень. Обычная логика TTL при напряжении 5 вольт (номинальное) была между 0 и 0,5 В - это логическая 0, а от 3,5 до 5,1 В - логическая 1.
Когда место в памяти записывается, электроника устанавливается таким образом, чтобы все, что там было, было перезаписано - будь то 0 или 1. Иногда эта логика работает "неправильным" образом: "естественным" значением является логика 1, а значение, которое должно быть принудительно установлено, равно 0. В любом случае, это все в микросхеме DRAM: все остальное считает, что память - это место, которое можно записывать и переписывать столько и так часто, как это необходимо. Если вам интересно, что случилось со "старыми" данными, заряд отправляется на землю, и это является одной из причин того, что чипы потребляют энергию.
Когда процессор извлекает код из памяти, он отправляется через последовательность этапов: они служат для ускорения работы процессора. Многие современные процессоры также микропрограммированы: внутренняя логика запускает несколько "инструкций" от одной входящей, и эти внутренние инструкции находятся на более низком уровне. Чтобы понять все это правильно, вам нужно понять внутренности процессора, и x86 - не то место, с которого нужно начинать! Что-то проще было бы Rockwell 6502 (Acorn BBC / C = 64 и др.). Более того, люди написали эмуляторы, чтобы вы могли очень легко играть во все виды игр.
При загрузке большая часть процессора будет удерживаться в состоянии сброса, пока вся внешняя логика не установится в стабильное состояние. Затем он либо загрузит значение в указатель инструкций и извлечет инструкции из этой точки, либо загрузит значение из фиксированной точки в памяти в указатель инструкций, а затем извлечет инструкции из этой точки. Последнее называется косвенной адресацией.
BIOS на ПК - это код, который процессор x86 запускает при загрузке. Когда-то это также использовалось во время исполнения ОС. При загрузке задача состоит в том, чтобы перевести все оборудование в хорошее (а не только стабильное) состояние, настроить таблицу с описанием оборудования, которое ОС будет использовать позже, найти загрузочный диск и, в случае успеха, загрузить первый сектор с диска в RAM и прыгайте в нее, ожидая, что этот сектор будет содержать загрузочный код.
Реальные ПК сложнее, чем это, и EFI тоже усложняет ситуацию, поэтому я настоятельно рекомендую начать с 8-битных микросхем, поскольку они проще как внутри, так и уже.
НТН
[1] Некоторые процессоры отличают микросхемы памяти, используемые для кода, от чипов, используемых для данных, который называется "Гарвардская" архитектура памяти. Тем не менее, "код это данные" все еще верно даже тогда.