Он передает в ах начало сегмента ДАННЫ.
Да.
A PSP после этого где Будет находиться?
Если COM, то cs:0, а если EXE, то ds:0, где ds -- то, что было на момент запуска программы. Командой
mov ds,ax
вы это значение перезаписываете. Если вам нужен PSP, то можете сохранить куда-нибудь начальное значение ds. Но можно не сохранять: DOS предоставляет какой-то системный вызов (гуглите), возвращающий адрес сегмента с PSP.
Это все происходит наш физическом уровень? Унас жертва только 2 сегмента, доступные программа.
Не распарсила... Программа может обратится куда угодно, в любое место памяти. Она не ограничена двумя сегментами. Значение, записываемые в сегментные регистры, со стороны процессора и системы никак не ограничиваются. Сегменты могут перекрываться. Фактически, сегменты нужны для того, чтобы можно было работать с памятью, большей 64 кб (16-битный регистр больше адресовать не может, FFFF = 64 кб). За счёт сегментного регистра получаем дополнительные биты, точнее адрес
![$a:b$ $a:b$](https://dxdy-01.korotkov.co.uk/f/4/c/e/4cef9a83fd38885e46bd6dd4c7bfaa7182.png)
означает
![$a\cdot 2^4+b$ $a\cdot 2^4+b$](https://dxdy-03.korotkov.co.uk/f/a/b/0/ab088f0dc7b38363540c61a0330a1c2e82.png)
.
(Замечание)
На совсем древних x86-процессорах использовалась 20-битная адресная шина, так что
![$a\cdot 2^4+b$ $a\cdot 2^4+b$](https://dxdy-03.korotkov.co.uk/f/a/b/0/ab088f0dc7b38363540c61a0330a1c2e82.png)
бралось по модулю
![$2^{20}$ $2^{20}$](https://dxdy-02.korotkov.co.uk/f/1/1/3/1131f55f436cf2a4c5c922210975643982.png)
. Но уже в 286 разрядность адресной шины увеличилась так, что переполнения не стало. Так что максимально адресуемый адрес в реальном режиме -- это
![$\mathrm{FFFF}_{16}:\mathrm{FFFF}_{16}=(2^{16}-1)\cdot 2^4+(2^{16}-1)$ $\mathrm{FFFF}_{16}:\mathrm{FFFF}_{16}=(2^{16}-1)\cdot 2^4+(2^{16}-1)$](https://dxdy-02.korotkov.co.uk/f/d/2/0/d2034b56a887d7b0270a19209a12f8be82.png)
.