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)