assem / Ответы по пунктам / 045
.docx-
Описать сегмент при работе с одним сегментом.
Префикс программного сегмента (PSP)
Префикс программного сегмента всегда создаётся при загрузке программы в память и заполняется системой. PSP имеет размер 256 байтов, содержит таблицы и поля данных, используемые системой в процессе выполнения программы. Вслед за PSP располагаются сегменты программы. Сегментные регистры автоматически инициализируются следующим образом: ES и DS указывают на начало PSP(что даёт возможность, сохранив их значение, обращаться затем в программе к PSP), CS - на начало сегмента команд, a SS - на начало сегмента стека. Таким образом, после загрузки программы в память адресуемыми оказываются все сегменты, кроме сегмента данных. Инициализация регистра DS в первых строках,программы позволяет сделать адресуемым и этот сегмент. Образ программы типа .ЕХЕ в памяти имеет вид:
Программа типа .СОМ отличается от программы типа .ЕХЕ тем, что содержит лишь один сегмент, включающий все компоненты программы: код, данные и стек. Структура типичной программы типа .СОМ на языке ассемблера выглядит следующим образом:
title Программа типа .СОМ
cseg segment 'code'
assume CS:cseg, DS: cseg
ORG 100h
start: jmp begin
< определение данных>
begin: push cs
pop ds
<тело программы>
cseg ends
end start
После загрузки программы все сегментные регистры указывают на начало единственного сегмента, т. е. фактически на PSP.