Определить доступные участки базовой памяти можно анализируя структуры MCB (Memory Control Blocks), а в дополнительной памяти через DPMI-сервис (DOS PM Interface).
Под DOS вообще программы обычно компилируются так, чтобы захватывать всю базовую память выше их местоположения. MCB для твоей программы вроде бы находится в параграфе (16-ти байтах) перед PSP программы. Уверенно не говорю, потому что под DOS уже очень давно не программирую.
Через int 15h надо карту памяти получать. DPMI хоста может и не быть. А если он всё-же есть - он хукает int 15h и правит результаты в соответствии с занятой им памятью.