message написано прямо в функции печати, то очевидный ответ на это: "не надо так делать". Хочешь напечатать сообщение -- передавай адрес строки с сообщением как параметр функции. ошибка появится если скопируешь и вставишь message db 'Flex OS' после первого message
string message = "hello";
string message = "world";
cout << message << ' ' << message;message, а как-то более осмысленно, например banner_message, а другую строку -- по-другому, в соответствии тому, какую функцию она несёт? так значение cs в этой формуле это не логический адрес, а так же значение из регистра т.е. cs 48FE?
в интернете представлена такая формула в ином виде CS * 16+ IP это не одно и то же?
Если считать по ней получится 48FFF
cs:0019 -- правильный ответ. Но возможно имеется в виду адрес к которому обращается текущая инструкция, [#prog_3#a]. Чему равен этот логический адрес написано наверху в окне кода -- ds:0000, в физический адрес он транслируется ровно так же: ds * 10h + 0 = 48ed0h объясните поподробней про формулу подсчета физического адреса

10h - это константа или откуда это значение?
ip - это из окна регистров?
Как получилось значение 48ff9?
48feh * 10h + 19h = 48fe0h + 19h = 48ff9h решил количество "жизней" в игре накинуть ? :) Эх ты. Мамкин ревес-инженер.
Об этом можно только догадываться. Может только завершённые контексты? Моя теория: сначала хотел swapcontext, потом придумал Thread::active, потом решил скедулировать когда !Thread::active, а потом понял, что всё равно функция потока должна для этого отработать до конца, а тогда можно и без swapcontext обойтись, короче, в виду отсутствия чёткой идеи реализация поплыла в процессе изготовления.