Архитектура компьютера, где размещен стек?
Везде по разному.
К примеру для современных Windows запуск исполняемого файла приводит к созданию вирт.адресного пространства. Загрузчик запуская исполняемый файл смотрит в системные данные в этом файле(PE-заголовок) и берет от туда необходимые значения. Далее выделяет в этом адресном пространстве область, которую запущенная программа и будет использовать как стек.
В DOS программах по-другому. Если это COM-файл, то выделяется сначала 0x100 байт в качестве Program System Prefix, т.е. спец. область для системных данных. Далее целиком из com в память и только потом выделяет область под стек.
После создания области под стек указатель присвается в указатель стека, к примеру в регистр esp.
В современных системах Linux\Windows\OS X процесс настройки стека похожи. Разве что различия в формате исполняемых файлов и организации адресного пространства. Но поняв один раз под одну из этих систем, то получаешь понимание как это примерно организовано для других.
Реальный режим - это программа под DOS?
Насколько я помню, там при старте программы стек нужно было настраивать самому.
Прям первой инструкцией в программе.
Точное расположение, кажется, зависело от модели памяти.
Вот здесь подробнее: ru.osdev.wikia.com/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D...