Posted By: online (online) on 'CZprogram'
Title: Re: Preruseni pod WIN/DPMI
Date: Mon May 12 12:24:49 1997
> Hi !
>
> Potreboval bych poradit, jak napsat pod Windows nebo obecne v protected
> modu kod v Pascalu (ASM) vyuzivajici DOSovsky preruseni (konkretne mi de o
> INT
> 13). Odkazy na Intr() neberu. Konkretne potrebuju sluzby zapsani/nacteni
> sektoru.
>
> A dal bych moooc potreboval zjistit jak ve Windows precist fyzicky pamet
> (napriklad 10 bajtu od nejake adresy) bez toho, aby mi to hodilo GPF.
>
> D~y'k
> Dzemen.
>
Zdarec Dzemene !!!
Proc to sem pises, kdyz jsem ti rikal, ze ti to napisu.....
No, ale napisu ti alespon, jak se to dela:
existuje sluzba DPMI, ktera simuluje DOSovy preruseni, no napsal bych to
asi takhle:
mov ax,300h
mov bl,13h ;cislo preruseni, ktery se bude simulovat
xor cx,cx
;zde se bude plnit tabulka prenasenych registru do simulace
mov ax,ds ;tu tabulku MUSIS mit v datasegmentu !!!!
mov es,ax
mov edi,offset tabulka ;offset na tu tabulku
int 31h ;zavolani jadra DPMI
;nasledujici definice umistis do datasegmentu:
tabulka:
dd ? ;registr EDI
dd ? ;registr ESI
dd ? ;registr EBP
dd 0 ;reserved.... ;-)
dd ? ;registr EBX
dd ? ;registr EDX
dd ? ;registr ECX
dd ? ;registr EAX
dd ? ;registr EFLAGS
dw ? ;registr ES
dw ? ;registr DS
dw ? ;registr FS
dw ? ;registr GS
dw ? ;registr IP (ale je to ignorovano !)
dw ? ;registr CS ( -//- )
dw ? ;registr SP
dw ? ;registr SS
;do teto tabulky ulozis hodnoty registru, ktere chces prislusnemu preruseni
;poslat a po vykonani si muzes z teto opet precist zmenene hodnoty
;upozorneni !!!!!: pokud pouzijes nejakou sluzbu, ktera pouziva nejaky pametovy
;buffer, musis mu ho naalokovat (ovsem musis mu naalokovat REALnou pamet !!)
;zde ti napisu, jak se alokuje realna p[amet, protoze bys urcite zase otravoval
mov ax,100h
mov bx,pocet paragrafu
int 31h
;fce vraci : CY=1 >>chyba
IF CY=0 >>AX=real.mode segmentova adresa pocatku alok. bloku
DX=selector (protected mode segment...:-) ) toho
alokovaneho bloku
Doufam, ze ti to uz staci a ze jsem nikde neudelal chybu.
Tel.: +420-35-611-81-62 (outside CZ) X
(035)611-81-62 (in CZ) x x
x x
E-mail: online@hermes.zcu.cz xxx x
online@students.zcu.cz xxxxxx x
vsiman@freenet.hut.fi xxxxxxxxx x OnLine (TM)