Сегментация программирования на ассемблере - PullRequest
1 голос
/ 27 февраля 2020

На языке ассемблера, когда мы объявляем как ds: data, cs: code, es: extra, ss: stack и аналогично. Я немного запутался, что эти сегменты создаются в оперативной памяти или в памяти жесткого диска.

1 Ответ

1 голос
/ 27 февраля 2020

Для вашей программы она всегда находится в оперативной памяти. Если он работает на "голом" оборудовании, это также верно для аппаратного обеспечения.

Но, если программа работает под типичной современной ОС, вы не знаете, переносятся ли некоторые данные на диск и когда. Возможно, что при попытке доступа ваша программа будет остановлена, а затем возобновлена, когда ОС вернет данные в ОЗУ. Подробнее см. Paging .

И вам следует позаботиться о том, кто и как «создает» сегменты. Если вы используете x86 в реальном режиме, то память должна быть выделена, а данные помещены в первую очередь в адресном пространстве 1 МБ. Только тогда вы можете загрузить адрес сегмента в регистр сегмента и объявить, для чего он используется.

...