Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: nameac am 15. December 2005, 15:53

Titel: compelieren mit msvc 6.0
Beitrag von: nameac 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;
}
Titel: compelieren mit msvc 6.0
Beitrag von: SSJ7Gohan am 15. December 2005, 16:01
Windows läuft im Protected Mode, da ist es nicht möglich, so einfach Realmode Interrupts aufzurufen.
Titel: compelieren mit msvc 6.0
Beitrag von: nameac am 15. December 2005, 20:22
und warum kann ich es mit masm compelieren und dann die exe starten
Titel: compelieren mit msvc 6.0
Beitrag von: nameac am 15. December 2005, 20:24
wie würde denn ein passender realmode interupt aussehen?
Titel: compelieren mit msvc 6.0
Beitrag von: Jidder 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.