Программист когда ложится спать, ставит на тумбочку рядом с кроватью два стакана - один с водой - на тот случай, если ему захочется пить и пустой, на тот случай, если пить ему не захочется. NULL это отсутствие стакана на тумбочке. Сущность NULL например часто встречается в базах данных:
Флажок 44 Объект был создан в БД, но пользователь его еще не видел и не клацал по нему - т.е. тип не определен.
Флажок 46 Помечен пользователем как true
Флажок 48 Помечен пользователем как false
Явно видно что в данном случае переменная типа boolean может иметь три значения. Сущность NULL виртуальная и к реальному железу отношения ни какого не имеющая. В электронике либо высокий уровень напряжения (логическая 1) либо низкий (логический 0) - третьего не дано. Откуда же NULL должен будет взяться в ассемблере который работает с железом напрямую?