Как известно, МП исполняет только ту программу, которая загружена в электронную (оперативную) память. Память состоит из ячеек, каждая ячейка имеет свой уникальный номер или адрес. Программист присваивает адресу имя, а программа-транслятор заменяет имя на двоичный код. Разрядность шины адреса (ША) МП определяет допустимое количество (пространство) адресов.
МП поддерживает только память, разбитую на блоки (сегменты). Создавая программу, программист организует - определяет - начало и конец ее сегментов и назначение ячеек памяти в них. В реальном режиме работы МП размер сегмента не превышает 64 кбайт. Для получения исполняемой программы в ехе-формате, необходимо определить 3 следующих главных сегмента, а при необходимости – 1 дополнительный:
1. Сегмент кодов. Содержит ячейки памяти, хранящие исполняемую программу (всю совокупность команд в машинных кодах). Первый байт первой команды находится в первой ячейке сегмента и т.д.
2. Сегмент данных. Содержит ячейки с данными программы: константами и рабочими областями, зарезервированными для записи в них программой, данных, вводимых, например, с клавиатуры, а также для вычисляемых программой результатов. Данные, обрабатываемые в МП, часто называют операндами, т.к. над ними выполняется закодированная в команде операция.
3. Сегмент стека. Содержит ячейки, запись и считывание которых выполняется по особому алгоритму, отличному от других сегментов. Используется для временного хранения команд (кодов), данных и промежуточных результатов.
4. Дополнительный сегмент. Содержит ячейки для хранения данных и результатов, дополнительных к сегменту данных.
Сегменты размещаются в памяти в том порядке, в каком они были определены программистом. Программист присваивает сегменту имя, а транслятор заменяет имя двоичным кодом.