я в общем то тоже не сильно большой спец, но в двух словах это выглядит так, hex-файл это текстовый файл, в нём каждый байт памяти контроллера выглядит как-то так - 4F - к примеру, а каждая буковка это один байт, плюс переводы строк, это два байта (0D 0A), плюс пробелы (байт), в результате 16 килобайтные текстовые файлы вполне себе превращаются в 8 килобайт памяти микропроцессора. Надеюсь понятно объяснил