Он передает в ах начало сегмента ДАННЫ.
Да.
A PSP после этого где Будет находиться?
Если COM, то cs:0, а если EXE, то ds:0, где ds -- то, что было на момент запуска программы. Командой
mov ds,ax
вы это значение перезаписываете. Если вам нужен PSP, то можете сохранить куда-нибудь начальное значение ds. Но можно не сохранять: DOS предоставляет какой-то системный вызов (гуглите), возвращающий адрес сегмента с PSP.
Это все происходит наш физическом уровень? Унас жертва только 2 сегмента, доступные программа.
Не распарсила... Программа может обратится куда угодно, в любое место памяти. Она не ограничена двумя сегментами. Значение, записываемые в сегментные регистры, со стороны процессора и системы никак не ограничиваются. Сегменты могут перекрываться. Фактически, сегменты нужны для того, чтобы можно было работать с памятью, большей 64 кб (16-битный регистр больше адресовать не может, FFFF = 64 кб). За счёт сегментного регистра получаем дополнительные биты, точнее адрес
означает
.
(Замечание)
На совсем древних x86-процессорах использовалась 20-битная адресная шина, так что
бралось по модулю
. Но уже в 286 разрядность адресной шины увеличилась так, что переполнения не стало. Так что максимально адресуемый адрес в реальном режиме -- это
.