Suchroutine fehlerhaft...?
-
Hallo,
habe eine Suchroutine geschrieben, die feststellen soll, ob der BIOS32 Service (_32_) vorhanden ist, die funktioniert auch und sieht wie folgt aus:pushad mov edx, 0x5F32335F mov esi, (0xE0000 - 1) .repete: inc esi mov eax, [esi] cmp eax, edx je near .get_out cmp esi, 0xFFFF0 jbe near .repete jmp near .no_32 .get_out: mov [.location], esi popad ret .no_32 ;Fehlermeldung ret
Weil diese Routine funktioniert habe ich gedacht ich modifiziere sie leicht, um mit ihr auch nach PMID zu suchen (Ja ich habe eine VESA 3 Karte und ich habe auch schonmal mit einem HEX Editor im SPeicher geschaut PMID ist da und an der richtigen Stelle):
pushad mov edx, 0x44494D50 mov esi, (0xC0000 - 1) .repete_p: inc esi mov eax, [esi] cmp eax, edx je near .get_out_p cmp esi, 0xFFFF0 jbe near .repete_p jmp near .no_pmid .get_out_p: mov [.location], esi popad ret .no_pmid ;Fehlermeldung ret
Tja und das funktioniert komischerweise nicht. PMID wird nicht gefunden, der PC Speaker ertönt (und geht erst nach Reset wieder aus), aber das Programm crasht net oder so. Was mache ich falsch? habe auch schonmal versucht den Speicherbereich vorher zu kopieren, sowie es in der VBE 3 Doc steht, aber Fehlanzeige, selbes Resultat.
Könnt ihr mir helfen
-
Du suchst den Bereich von C0000h bis FFFFFh.
Es könnte sein das dort Hartware eingeblendet ist die
bei mov eax, [esi] einen en Absturz verursacht.Oder es ist ein Speicherbereich nicht von der MMU eingeblendet.