Standort: Alexander Foken > Projekte > DOS > Environment freigeben
FreeMyEnv: mov es,cs:[002Ch] ; ES auf's Environment mov ah,49h ; DOS: Free Memory Block in ES int 21h jnc @@FreeOK ; ; Es hat nicht geklappt: ; AX=7 -> Speicherverwaltung zerstört ; AX=9 -> Ungültiger Block - schon freigegeben ? ; @@FreeOK: ; alles klar, weiter geht's
PrefixSeg dw ? ExeStart: ; ggf. DS initialisieren ; mov PrefixSeg,es ; PSP sichern ; ; weitere Initialisierungen FreeMyEnv: mov es,PrefixSeg ; ES auf's PSP, um Environment zu finden mov es,es:[002Ch] ; ES auf's Environment mov ah,49h ; DOS: Free Memory Block in ES int 21h jnc @@FreeOK ; ; Es hat nicht geklappt: ; AX=7 -> Speicherverwaltung zerstört ; AX=9 -> Ungültiger Block - schon freigegeben ? ; @@FreeOK: ; alles klar, weiter geht's
function FreeMyEnv : word; assembler; { 0 = ok, sonst Fehlercode } asm mov es,PrefixSeg { in Unit System definiert und initialisiert } mov es,es:[002Ch] { ES auf's Environment } mov ah,49h { DOS: Free Memory Block in ES } int 21h jc @@ende xor ax,ax @@ende: end;
function FreeMyEnv : word; inline ( $8E/$06/PrefixSeg/ { mov es,PrefixSeg ; in Unit System definiert und initialisiert } $26/$8E/$06/$2C/$00/ { mov es,es:[002Ch] ; ES auf's Environment } $B4/$49/ { mov ah,49h ; DOS: Free Memory Block in ES } $CD/$21/ { int 21h } $72/$02/ { jc @@ende } $31/$C0); { xor ax,ax } { @@ende: }
Copyright © Alexander Foken | 2002-11-10 21:21 |