Если процессор работает в реальном режиме, то доступ возможен по любым адресам. В защищённом режиме всё несколько интереснее. Чтобы процессор смог выполнять программу , регистр CS (в Protected Mode он называется СЕЛЕКТОРОМ) должен указывать на ДЕСКРИПТОР сегмента типа "исполнимый код". Доступ к участку памяти, описываемому дескриптором типа "исполнимый код" возможен только на чтение и исполнение. ЗАПИСЬ В адреса памяти через селектор типа "исполнимый код" приводит к генерации исключения Genral Protection на любом уровне привилегий. Т.е. через CS писать в память нельзя. Другое дело, что один и тот же участок памяти можно отображать разными дескрипторами. Если дескрипторы "кода" и "данных" отображают одно и то же пространство памяти, то писать можно через дескриптор "данных", а данные, естественно, также попадут и в сегмент кода. проще говоря, можно так mov DS:[EAX],100; и нельзя так mov CS:[EAX],100;