Это на самом деле довольно просто - процессор загружает инструкции и выполняет их, большинство этих инструкций вращаются вокруг загрузки значений в регистры или ячейки памяти, а затем манипулируют этими значениями. Определенные диапазоны памяти отведены для связи с периферийными устройствами, подключенными к машине, такими как экран или жесткий диск.
Во времена Apple] [и Commodore 64 вы могли поместить значение непосредственно в ячейку памяти, и это напрямую изменило бы пиксель на экране - эти дни давно прошли, они отвлечены от вас ( программист) несколькими уровнями кода, такими как драйверы и операционная система.
Вы можете узнать о такого рода вещах, или ассемблере (которым я большой поклонник), или вентилях AND / NAND на аппаратном уровне, но знание такого рода вещей не поможет вам написать код веб-приложение в ASP.NET MVC или напишите быстрый и грязный скрипт на Python или Powershell.
Существует множество ресурсов, разбросанных по сети, которые дадут вам представление о том, как работает процессор и остальное оборудование, но если вы хотите выйти из строя и пачкаться, я, честно говоря, думаю, что вы должны купить один из этих старых машины с eBay или где-то еще, и изучите его специфический вид ассемблера (я понимаю, что есть также много программируемых контроллеров PIC, которые также могут быть полезны для изучения). Подбор более старой машины устранит программные абстракции и облегчит изучение. Вы учитесь намного лучше, когда получаете мгновенное удовлетворение, например, заставляете спрайты перемещаться по экрану или генерируете звуки, непосредственно переключая динамик (или используя контроллер PIC для управления маленьким роботом). На этих старых машинах схемы для Apple] [материнской платы помещались примерно на лист бумаги формата А2, который был сложен на оборотной стороне одного из руководств Apple, - мне не хотелось бы представлять, как они выглядят в наши дни.