Удаление CLI / STI по-прежнему работает из-за различий в операционной среде.
В 16-битной DOS может произойти прерывание, и это прерывание будет первоначально работать в том же стеке. Если вы получили прерывание в середине операции, прерывание может произойти сбой, потому что вы обновили только ss, а не sp.
В Windows и любой другой современной среде каждый поток пользовательского режима получает свой собственный стек. Если ваш поток по какой-либо причине прерывается, его стек и контекст надежно сохраняются - вам не нужно беспокоиться о том, что что-то еще работает в вашем потоке и вашем стеке. cli / sti в этом случае будет защищать от того, от чего вы уже защищены ОС.
Как упоминал Грег, безопасный и поддерживаемый способ обмена стеками в Windows - это CreateFiber / SwitchToFiber. Это имеет побочный эффект изменения всего контекста, так что это не просто переключение стека.
Это действительно поднимает вопрос о том, что вы хотите сделать. Часто переключение стеков происходит с помощью ограниченного пространства стека, которое составляло 64 КБ в 16-разрядной DOS. В Windows у вас есть стек 1 МБ, и вы можете выделить еще больше. Почему вы пытаетесь переключать стеки?