Programszegmens előtag

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2018. március 29-én felülvizsgált verziótól ; az ellenőrzések 8 szerkesztést igényelnek .

A programszegmens előtag (  angolul  -  „Programszegmens előtag”, rövidítve PSP ) egy adatstruktúra, amelyet a DOS és a CP / M család operációs rendszereiben használnak a számítógépes programok állapotának mentésére .

A DOS-ban a PSP felépítése a következő:

Offset Méret Tartalom
00-01 2 bájt (kód) INT 20 kilépési kódot tartalmaz CP/M stílusban (a kompatibilitás érdekében)
02-03 gépi szó (2 bájt) Közvetlenül a programhoz lefoglalt memória utáni szegmens
04 byte fenntartott
05-09 5 bájt (kód) CALL FAR kódot tartalmaz a CP/M stílusú DOS függvények hívásához (a kompatibilitás érdekében)
0A-0D dword (4 bájt) Az előző program terminate kezelőjének címe (előző INT 22)
0E-11 kard Az előző program töréskezelő címe (előző INT 23)
12-15 kard Az előző program kritikus hibakezelőjének címe (előző INT 24)
16-17 gépszó A hívási folyamat PSP szegmense (általában a command.com  belső)
18-2B 20 bájt hu:Job File Table (belső)
2C-2D gépszó Környezeti változó szegmens
2E-31 kard SS:SP belépéskor az utolsó híváshoz INT 21 (belső)
32-33 gépszó a megnyitott fájlok maximális száma (belső - lásd alább)
34-37 kard A kézi bevitelek címe (belső - lásd alább)
38-4F 24 bájt fenntartott
50-52 3 bájt (kód) DOS hívása (mindig tartalmazza az INT 21 + RETF kódot)
53-5B 9 bájt fenntartott
5C-6B 16 bájt Zárt szintű FCB 1
6C-7F 20 bájt Zárt FCB szint (felülírva, ha az FCB 1 nyitva van)
80 1 bájt A karakterek száma a parancssorban
81-FF 127 bájt Parancssor ( 0Dh befejeződik )

PSP (Zero-Page vagy Base Page) CP/M-86-ban

Offset Méret Tartalom
00-02 3 bájt Kódcsoport hossza bájtban
03-04 gépszó Kódcsoport szegmens címe
05 Byte Model 8080 flag - akkor állítsa be, ha a program egy szegmensben van
06-08 gépszó Adatcsoport hossza bájtban
09-0A gépszó Adatcsoport szegmens címe
0B Byte fenntartott
0C-11 További csoportleíró - formátum, mint az adatcsoportnál
12-17 Veremcsoportleíró – ugyanaz a formátum, mint az adatcsoport
18-1D Csoportleíró X1 - adatcsoport formátuma
1E-23 Csoportleíró X2 - adatcsoport formátuma
24-29 Csoportleíró X3 - adatcsoport formátuma
2A-2F Csoportleíró X4 - adatcsoport formátuma
30-4F fenntartott
ötven Byte Lemez, amelyről a programot betöltötték (CP/M 3)
51-52 gépszó Az első FCB jelszavának címe (CP/M 3)
53 Byte Az első FCB jelszavának hossza (CP/M 3)
54-55 gépszó A második FCB jelszavának címe (CP/M 3)
56 Byte A második FCB jelszavának hossza (CP/M 3)
57-5B bájtok fenntartott
5C-6B Alapértelmezett FCB 1
6C-7F FCB 2 alapértelmezett (felülírva, ha a CB 1 nyitva van)
80 Byte A karakterek száma a parancssorban
81-FF bájtok Parancs sor

A PSP-t leggyakrabban arra használják, hogy argumentumokat fogadjanak a DOS-programok parancssorából, például a "foo.exe -a -f" parancs végrehajtja (futtatja) a foo.exe fájlt a '-a' és a ' argumentumokkal. -f'.

A PSP szegmenscíme a program végrehajtása során kerül be a DS regiszterbe. Később is definiálható a #62h alfunkció #21h megszakításával . Ez a megszakítás visszaadja a PSP címét a BX regiszterbe. [egy]

Ezenkívül a .COM programokban csak a fenti listában található eltolásokkal érheti el közvetlenül a PSP-t. A 00h a PSP elejét, az FFh a végét és így tovább. Például a következő kód megjeleníti a parancssori argumentumokat:

org 100h _ ; Az int 21h 9. alfüggvényéhez '$' szükséges a karakterlánc lezárásához xor bx , bx mov bl , [ 80 h ] mov byte [ bx + 81h ] , ' $ ' ; vonal kimenet mov ah , 9 mov dx , 81 óra int 21h _ ; befejezése mov ax , 4C00h _ int 21h _

Jegyzetek

  1. INT 21.62 - PSP-cím beszerzése (DOS 3.x) (lefelé irányuló kapcsolat) . Archiválva az eredetiből 2012. április 26-án. 

Linkek