Program Segment Prefix (с англ. — «Префикс программного сегмента», сокращённо PSP) — структура данных, которая используется в операционных системах семейства DOS и CP/M для сохранения состояния компьютерных программ.
PSP в DOS имеет следующую структуру:
PSP (Zero-Page или Base Page) в CP/M-86
PSP наиболее часто используется для получения аргументов из командной строки программой под DOS, например, команда «foo.exe -a -f» исполнит (запустит) файл foo.exe с аргументами '-a' и '-f'.
Сегментный адрес PSP будет занесён в регистр DS в момент исполнения программы. Также он может быть позже определён через использование прерывания № 21h подфункции № 62h. Это прерывание возвратит адрес PSP в регистр BX.[1]
Кроме этого, в .COM-программах можно обратиться непосредственно к PSP только при помощи смещений в списке выше. 00h указывает на начало PSP, FFh указывает на конец, и т. д. Например, следующий код отображает аргументы командной строки:
org 100h; int 21h подфункция 9 требует '$' для завершения строкиxor bx, bxmov bl, [80h]mov byte [bx + 81h], '$'; вывод строкиmov ah, 9mov dx, 81hint 21h; завершениеmov ax, 4C00hint 21hПримечания
- ↑INT 21,62 - Get PSP address (DOS 3.x). Архивировано из оригинала 26 апреля 2012 года.
Ссылки
- Accessing Command Line Arguments (База знаний Microsoft)