Autor Thema: compelieren mit msvc 6.0  (Gelesen 3078 mal)

nameac

  • Beiträge: 71
    • Profil anzeigen
Gespeichert
« am: 15. December 2005, 15:53 »
hallo,

ohne fehler mit msvc 6.0 compeliert aber beim ausführen der exe datei fehler beim zugriff auf die speicherstelle 0xffffffff in win2k


int main(int argc, char* argv[])
{

      __asm{
                MOV AH,08H
INT 21H //<-debug verweist auf diese stelle
MOV DL,AL                
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
     }

return 0;
}

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 15. December 2005, 16:01 »
Windows läuft im Protected Mode, da ist es nicht möglich, so einfach Realmode Interrupts aufzurufen.

nameac

  • Beiträge: 71
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 15. December 2005, 20:22 »
und warum kann ich es mit masm compelieren und dann die exe starten

nameac

  • Beiträge: 71
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. December 2005, 20:24 »
wie würde denn ein passender realmode interupt aussehen?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 16. December 2005, 09:30 »
Zitat von: nameac
und warum kann ich es mit masm compelieren und dann die exe starten

wenn du es als real mode programm assembliert hast, dann ist es ein real mode programm für dos, das auch unter windows lauffähigist.
wenn du es als protected mode programm assembliert hast, ist es immer noch assemblierbar, weil es interrupts auch im protected mode gibt. lauffähig ist es nicht, weil es der interrupt 21h im protected mode unter windows eine andere bedeutung hat.

Zitat von: nameac
wie würde denn ein passender realmode interupt aussehen?

es gibt keinen. es herrscht eine trennung zwischen real mode und protected mode.
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen