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