programm beim booten ausführen



  • ich möchte ein assemblerprogramm das ich unter windows geschrieben habe nun vor dem windowsstart ausgeben...gibt es da irgendwelche möglichkeiten...wenn ja dann wie.

    ich stelle mir das so vor das vor dem "windows wird geladen" auf dem schwarzen bildschirm dann hallo oder so steht.



  • Schreib dein Programm in die ersten 512 Bytes der ersten Festplatte deines Computers. Das Bios Lädt das Programm und startet es.

    Also Warnung: Danach bootet dein PC nicht mehr und alle Partitionen sind gelöscht.



  • geht das auch auf die freundliche tour (meine nicht dich sondern ohne schäden etc.?

    zum beispiel per diskette?



  • Ja. Du kannst das Programm auch auf die ersten 512 Bytes der Diskette speichern. Dazu kannst du das Programm Rawwrite benutzten. Das Bios lädt dein Programm an die Addresse 0x7C00. Die Addressierung in deinem Programm muss dementsprechend sein. Außerdem darf es keine .EXE oder .COM Datei sein, sondern muss eine Flat-Binary sein, also darf nur den reinen Maschienen Code enthalten.



  • ProgChild schrieb:

    Außerdem darf es keine .EXE oder .COM Datei sein, sondern muss eine Flat-Binary sein, also darf nur den reinen Maschienen Code enthalten.

    Eine .com-Datei ist "Flat-Binary". 😃 Steht AFAIK fuer "Copy Of Memory" und genau das ist es irgendwo auch: Ein Dump des 64kByte Programm-/Datensegments.
    Sogar eine allgemein DOS-konforme .com-Datei (zB. die mit TASM erstellten Dinger) eignet sich wunderbar als bootloader, solange darin kein DOS-Systemaufruf oder dergleichen vorkommt.


  • Mod

    ich hatte immer angenommen, dass .com kurz für command steht, schliesslich stammt das ja noch aus ur-cp/m zeiten (oder ist sogar noch älter). damals gab es keine andere art ausführbarer dateien.



  • Nach meinem Wissen unterscheiden BIN und COM sich nur durch den nicht vorhandenen Stack bei der BIN.



  • Jo, .com-Dateien haben an sich auch keinen Stack - der wird lediglich von DOS beim Start automatisch eingerichtet.



  • ProgChild schrieb:

    Also Warnung: Danach bootet dein PC nicht mehr und alle Partitionen sind gelöscht.

    Aber wenn ich einen bootloader installiere passiert das doch auch nciht, wie kriegen die das dann hin ohne alle Partitionen zu löschen?



  • kann man das programm neben windows booten lassen? zb mit bootmanager dann auswählen....



  • hotblack schrieb:

    ProgChild schrieb:

    Also Warnung: Danach bootet dein PC nicht mehr und alle Partitionen sind gelöscht.

    Aber wenn ich einen bootloader installiere passiert das doch auch nciht, wie kriegen die das dann hin ohne alle Partitionen zu löschen?

    Du musst halt die Partitionstabelle, welche irgendwo am Ende der 512 Byte steht, in deinen neuen Bootloader mitreinkopieren. Dann musst du aber immernoch zB den ursprünglichen Bootloader in den 2ten Sektor schieben und den danach ausführen...

    *.com Dateien haben doch auch eine Header, oder nicht?

    Was willst du damit denn machen? Vllt gibts ja ne bessere Lösung...



  • bluecode schrieb:

    *.com Dateien haben doch auch eine Header, oder nicht?

    Zwischendurch ist man in Win9x-Zeiten aus irgendwelchen Gruenden mal dazu uebergegangen, .exe-Dateien einfach in .com umzubenennen (zB. edit.com - ist auch heute in Wirklichkeit eine umbenannte .exe-Datei). Die hatten natuerlich einen header, aber richtige .com-Dateien enthalten wirklich nur direkt den Programm-Code und konstante Daten. Keine Header, keine sonstigen Resourcen - die Programmausfuehrung beginnt am ersten Byte der Datei.


Anmelden zum Antworten