PROGRAM SEGMEN PREFIX



The Segmen Program Prefix (PSP) adalah struktur data yang digunakan dalam DOS sistem untuk menyimpan keadaan suatu program yang . Ini mirip dengan halaman Nol di CP / M sistem operasi.
The PSP memiliki struktur sebagai berikut:
 (* = Tidak terdokumentasi)
Mengimbangi
Ukuran
ISI

0000H
2 byte
int 20h

0002h
2 byte
segmen alamat, akhir blok alokasi

0004h
1 byte
pendiam, biasanya 0

0005h
5 byte
FAR panggilan ke operator fungsi MSDOS (int 21h)

000Ah
4 byte
pemutusan sebelumnya handler interupsi vektor (int 22h)

000Eh
4 byte
sebelumnya isi ctrl-C vektor interupsi (int 23h)

0012h
4 byte
prev. kesalahan kritis handler interupsi vektor (int 24h)

0016h
22 byte
disediakan untuk DOS


* 2 byte
(16) orang tua proses 'PSP


* 20 byte
(18) "menangani table" yang digunakan untuk pengalihan file

002Ch
2 byte
segmen alamat blok lingkungan program

002Eh
34 byte
reserved, DOS area kerja


* 4 byte
(2E) menyimpan pointer stack proses panggilan ketika beralih ke tumpukan internal yang DOS.



* (32) DOS 3.x max membuka file


* 2 byte
(3A) ukuran tabel menangani | fungsi-fungsi ini di sini


* 4 byte
(3C) menangani tabel alamat | namun alamat yang dilaporkan bervariasi

0050h
3 byte
int 21h, RETF instruksi

0053h
2 byte
reserved - tidak terpakai?

0055h
7 byte
reserved, atau FCB # 1 ekstensi

005Ch
16 byte
standar Berkas belum dibuka Kontrol Blok # 1

006Ch
16 byte
standar belum dibuka FCB # 2 (overlay jika FCB # 1 dibuka)

0080h
1 byte
Parameter panjang (jumlah karakter dimasukkan setelah nama file)

0081h
...
parameter

00FFh
128 byte
perintah ekor dan default Disk area transfer (DTA)



1.    Segmen pertama dari memori availible adalah di segmen (paragraf) bentuk. Misalnya, 1000h akan respresent 64k.
2.    Offset 2Taw berisi alamat segmen lingkungan.
3.    Program tidak boleh mengubah bagian dari 5ch PSP bawah offset.
PSP yang paling sering digunakan untuk mendapatkan argumen baris perintah dari program DOS, misalnya perintah "FOO.EXE / A F /" mengeksekusi FOO.EXE dengan argumen '/ A' dan '/ F'.
Alamat segmen PSP dilewatkan dalam register DS saat program dijalankan. Hal ini juga dapat ditentukan kemudian dengan menggunakan 51H fungsi Int 21h Int 62h atau 21h fungsi. Entah fungsi akan mengembalikan alamat PSP dalam register BX.
Atau, dalam COM. program dimuat pada offset 100H , seseorang dapat mengatasi PSP langsung hanya dengan menggunakan offset yang tercantum di atas. Offset 000h poin ke awal, PSP 0FFH poin sampai akhir, dll.
lokasi 80h .. FFh digunakan untuk DTA default. Sebagian besar informasi di PSP adalah penggunaan sedikit program MS-DOS yang modern bahasa assembly. Dimakamkan di PSP, bagaimanapun, adalah beberapa permata yang worth mengetahui tentang. Hanya untuk kelengkapan, namun, kami akan melihat di semua bidang di PSP. Kolom pertama di PSP berisi 20h int instruksi. Int 20h merupakan mekanisme usang digunakan untuk mengakhiri eksekusi program. Kembali pada hari-hari awal DOS v1.0, program anda akan mengeksekusi jmp ke lokasi ini dalam rangka untuk mengakhiri. Saat ini, tentu saja, kita memiliki DOS 4CH fungsi yang jauh lebih mudah (dan lebih aman) daripada melompat ke lokasi nol di PSP.
Bagian ketiga adalah yang pertama dari banyak "lubang" yang tersisa di PSP oleh Microsoft. Mengapa mereka di sini adalah menebak siapa pun. Bidang keempat adalah panggilan ke operator fungsi DOS. Tujuan dari ini (sekarang usang) DOS mekanisme panggilan adalah untuk memungkinkan beberapa kompatibilitas tambahan CP/M-80 program. Untuk program DOS modern, sama sekali tidak ada perlu khawatir tentang bidang ini. Tiga berikutnya bidang yang digunakan untuk menyimpan alamat khusus selama pelaksanaan program. Bidang ini mengandung default menghentikan vektor, vektor istirahat, dan vektor kesalahan kritis handler. Ini adalah nilai-nilai biasanya disimpan dalam vektor interupsi untuk 22h int , int 23h , dan 24h int.
Dengan menyimpan salinan dari nilai-nilai dalam vektor untuk menyela tersebut, Anda dapat mengubah vektor sehingga mereka menunjuk ke kode Anda sendiri. Ketika program Anda berakhir, DOS mengembalikan tiga vektor dari ketiga bidang di PSP. Untuk rincian lebih lanjut tentang vektor interupsi, silakan berkonsultasi manual DOS referensi teknis.
Bidang kedelapan dalam catatan PSP adalah bidang lain pendiam, saat ini tidak tersedia untuk digunakan oleh program Anda. Bidang kesembilan merupakan permata yang nyata. Ini alamat daerah lingkungan string. Ini adalah pointer dua-byte yang berisi alamat segmen dari tempat penyimpanan lingkungan. Senar lingkungan selalu dimulai dengan offset nol dalam segmen ini. Daerah String Lingkungan terdiri dari urutan nol-dihentikan string. Ia menggunakan format berikut: string1 string2 0 0 0 string3 ... 0 0 0 stringn Artinya, bidang lingkungan hidup terdiri dari daftar nol string dihentikan, daftar itu sendiri yang diakhiri oleh serangkaian panjang nol (yaitu, semua dengan sendirinya, atau dua nol nol berturut-turut, namun Anda ingin melihat itu). String (biasanya) ditempatkan di bidang lingkungan hidup melalui perintah DOS seperti PATH, SET, dll Secara umum, string di bidang lingkungan hidup mengambil bentuk.
Cara lain untuk mendapatkan alamat PSP, di DOS 5.0 dan kemudian, adalah untuk membuat panggilan DOS. Jika Anda memuat ah dengan 51H dan melaksanakan 21h int instruksi, MS-DOS akan mengembalikan alamat segmen PSP saat ini di bx mendaftar. Ada banyak hal-hal rumit yang dapat Anda lakukan dengan data di PSP. Panduan Programmer Peter Norton untuk PC IBM daftar semua macam trik

0 Response to "PROGRAM SEGMEN PREFIX"

Post a Comment