Wie sind bestimmte Funktionen aufgebaut?



  • Hallo,

    http://www.henkessoft.de/OS_Dev/OS_Dev1.htm <-- Dort beim ersten Beispiel da steht ja z.b. folgendes:

    mov ah, 0x0E
    int 0x10
    

    Ich denke mal diese Funktion wird vom BIOS bereitgestellt oder ?

    Gibt es eine möglichkeit zu sehen wie die Funktion von "innen" aussieht ?



  • Bassmaster schrieb:

    Hallo,

    http://www.henkessoft.de/OS_Dev/OS_Dev1.htm <-- Dort beim ersten Beispiel da steht ja z.b. folgendes:

    mov ah, 0x0E
    int 0x10
    

    Ich denke mal diese Funktion wird vom BIOS bereitgestellt oder ?

    Gibt es eine möglichkeit zu sehen wie die Funktion von "innen" aussieht ?

    Ja, das sollte möglich sein.
    Mit int 0x10 wird ein Interrupt ausgelöst. Weil wir uns im Real-Mode befinden, wird die Sprungadresse aus der IVT herausgesucht. (http://www.lowlevel.eu/wiki/IVT). Dort müsste man also die Sprungadresse auslesen können, an der sich der Code des BIOS befindet.



  • Aber wie funktioniert das dann mit dem auslesen ?

    In IDA Pro z.b. könnte ich ja die Kernel.bin auslesen aber wie soll ich die IVT auslesen ?

    Oder geht es auch wenn ich ein 16Bit Programm schreibe welches ich dann als exe oder com ausführen/debuggen kann ? Wobei ich ja dann im Protected Mode wäre und die IDT auslesen müsste. Wo ich aber immer noch nicht weiter bin da ich in IDA ja z.b. auch nur den Code sehe wie soll zum ersten Kilobyte des Arbeitsspeicher kommen ?



  • Ich hab es selbst noch nicht ausprobiert, aber ich würde ein 16-bit-Programm schreiben, dass die IVT einliest, dort die Sprungadresse raussucht, und dann den code ausdruckt/in eine Datei schreibt, der sich an der Adresse befindet. Diesen kann man dann mit einem Disassembler in Assemblercode umwandeln.
    Soweit die Theorie - obs in der Praxis funktioniert, weiß ich nicht.

    Wobei ich ja dann im Protected Mode wäre und die IDT auslesen müsste.

    Nein. Im Protected Mode funktionieren die BIOS-Interrupts nicht mehr. In der IDT wirst Du diese Sprungadressen also auch nicht finden.


  • Mod

    Mit bochs debugger kannst du den Einzelschrittmodus ausführen.

    Du kannst auch das BIOS auslesen, z.B. mit dd.
    http://o-o-s.de/?p=910


Log in to reply