23. februar 2003 - 09:23Der er
42 kommentarer og 1 løsning
Programmering på pc uden system
Jeg kunne godt tænke mig at rode lidt med programmering på det absolut basale nievau. Dvs. jeg gerne vil prøve at lave et lille program, der køres som et system, når jeg booter på en af mine harddiske. Til at starte med vil jeg bare have noget almindeligt tekst output, men god grafik er helt klart målet.
Mine spørgsmål er som følger: 1) Skal jeg bruge assambler eller kan jeg godt bruge C++?
2) Hvordan får jeg bios til at starte mit program, når der bootes på min ekstra disk?
Det burde godt kunne laves i C++ forudsat at din C++ compiler enten kan generere BIOS kald (int 10h hvis jeg husker rigtigt - det er 10+ år siden) eller hvis den supporterer inline assembler (hvilket de fleste gør).
Der er en boot sekvens og BIOS loader noget kode fra et bestemt sted (første sektor hvis jeg husker rigtigt) på disk og kører det. Den kode skal så foretage det videre fornødne.
Et kritisk spørgsmål er om og hvis ja hvornår du vil switche fra real til protected mode.
Hmmm...hvis det skal startes fra en disk, så ligger der jo allerede et system, som kan håndtere disken, som f.eks. DOS...........hmmm....hvad med at lave det så det virker som en virus, altså at selve programmet ligger i BIOS?
I princippet burde det være muligt at lave mode 13h direkte fra bootsektoren.
Husk backup inden du går igang..! (lige efter boot sektoren ligger fat/partitions tabellen - og det er lidt træls at miste den på den forkerte harddisk)
arne> Protected mode? soreno> Jeg bruger en anden harddisk end min system disk, så der burde da hverken ligge et system der i forvejen eller kunne komme komplikationer imellem mit program og systemet på den anden disk?
>>soreno Jeg har ikke forstand på at skrive i boot sektoren. Jeg holder mig bare laaaaaaangt fra det, for som du selv siger så kan det gå grulig galt! Jeg vidste bare at Borrisholt havde lavet et eksempel som emileej måske kunne bruge! :)
Jeg troede at du ville bruge f.eks. hdd2 til at eksperimentere med.. Men derfor kan man stadig komme til at angive det forkerte drev når man bestemmer hvilket drev der skal skrives på.
Jeg ville også bruge en harddisk, men da i sagde "farligt" og "pas på" kom jeg til at kigge på mine disketter og tænkte at jeg ville ligge fordigtigt ud :)
Jeg kan ikke huske hvordan du switcher. Få fat på en hardcore x86 bog for at se sådan noget. Bemærk du switcher ikke bare til protected mode - du skal have sat noget op inden du kan gøre det.
Real mode er simpelt, så start med det.
I protected mode kan du protecte memory så man ikke kan overskrive det ved et uheld.
I real mode har du et segmenteret address space med 64 KB segmenter.
I protected mode har du et flat 32 bit address space.
Det skulle undre mig meget hvis ikke du får brug for tasm.. Men jeg ved faktisk ikke om man kan købe det endnu - eller om det er frigivet til fri afbenyttelse ?
Jam. så kan jeg vel lige så godt starte med at spørge hvilken compiler C++ der giver mig det bedste redsultat - jeg får jo alligevel ikke brug for VC++'s inderface nu...
Jeg legede på et tidspunkt med bootsektoren - til det benyttede jeg DOS's debug. Men det er langt fra optimalt hvis man vil længere end "hello world". Det er derimod gratis..
Øhm... Hvilket århundrede er turbo c fra? Følgende fejl får jeg: Turbo C Version 2.01 Copyright (c) 1987, 1988 Borland International copyboot.cpp: Error copyboot.cpp 24: Declaration syntax error Error copyboot.cpp 28: Expression syntax in function writebootsector Error copyboot.cpp 29: Undefined symbol 'result' in function writebootsector *** 3 errors in Compile ***
Available memory 386708
I følgende linier: void writebootsector(char *buffer, int drive=_floppy);//linie 24
Du havde slet ikke glæde af nogle af svarene/kommentarene ?
Jeg husker at jeg fik meget ud af denne tråd :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.