Autor Thema: dos interrupts problem  (Gelesen 4424 mal)

-eC-

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« am: 03. November 2005, 20:48 »
hi,

ich hatte mir vorgenommen, als ich diese seite gesehen habe, auch ein os zu schreiben, aber jetzt habe ich ein problem, ich habe mir das buch "Assembler Programmierung" aus dem franzis verlag bestellt, um dann festzustellen, das es verdammt klein ist, und nebenbei dos interupts benutzt, und genau das ist mein problem, weil ich debian habe.
das erste programm funktionierte nicht, nach längerem googeln, habe ich dann dasselbe nur für lnx gefunden, wo der interrupt 21 durch 0x80 ersetzt war, aber wie sieht das mit den anderen interrupts aus? ich kann ja nicht mit sonem buch lernen, hat das überhaupt nen sinn, oder soll ich mir ein ganz anderes kaufen? vllt. 'das assemblerbuch'?

mfg ec

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #1 am: 03. November 2005, 21:06 »
Tja dieses Buch beschäftigt sich halt mir der Assemblerprogrammierung unter DOS. Kaufe dir Das Assembler Buch von Addison-Wesley. Dort wird eine Masse beschrieben, auch was für ein OS schreiben notwendig ist. Dieses Buch geht nicht auf Programme für ein spezielles OS schreiben ein, sondern erklährt die CPU Befehle, Register, Speicherverwaltung etc. Also genau das was man für eine OS-Entwicklung brauch. Also ich kann es dir nur empfehlen. Und was die interrupts betrifft. Die sind OS abhängig. Nur die BIOS-Interrupts kannst du nutzen, weil die nicht OS abhängig sind. Schaue mal hier: http://www.tu-chemnitz.de/informatik/HomePages/RA/lehre/mop/dos_stuff dort werden die BIOS-Interrupts erklährt.
In the Future everyone will need OS-64!!!

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #2 am: 03. November 2005, 21:16 »
Du könntest dir den DOS-Emulator DOS-Box installieren und somit eine Fake-Umgebung generieren. Es gibt auch noch FreeDOS, welches du auf der HD oder in nem x86-Emulator (BOCHS, QEMU - brauchst du sowieso fürs OS-Dev) installieren könntest. Soviel zu Emulation.
Ansonsten wirst du wohl Pech gehabt haben und dir ein anderes Buch/Tutorial suchen müssen. Eine gute Quelle ist die Robsite.

DOS-Box: http://dosbox.sf.net
FreeDOS: http://www.freedos.org
BOCHS: http://bochs.sf.net
Qemu: http://packages.debian.org/unstable/misc/qemu
Robsite: http://www.robsite.de

mfg, jeb

-eC-

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 03. November 2005, 21:27 »
ok, danke, ich habe zwar befürchtet, adas ich nen neues buch brauche, aber wenn ich es dann richtig lernen kann, ist es mir das geld wert :-)
ca 1000 seiten ist zwar ne menge, aber immer nur c ist auch nicht so toll.
zu der fake umgebung: also, ich wollte das schon richtig machen, ich hab zur not paralel zu debian und pc-bsd noch windows xperiment am laufen, weil ich das für die schule brauche, da hätte ich das ja machen können mit den dos interrupts, aber ich versuche so wenig wie mögliuch mit windows zu machen.... naja, vielen dank für eure hilfe!!!!

mfg ec

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 03. November 2005, 21:46 »
Linux verwendet Interrupt 0x80, hier gibts ne ganz gute übersicht über Linux Systemcalls: http://www.lxhp.in-berlin.de/lhpsyscal.html
Unter Linux ist Assemblerprogrammierung auch wesentlich angenehmer als unter Windows/DOS.

Für den OS rate ich dir aber ab, BIOS Interrupts zu nutzen, ich würde dir empfehlen deine Treiber selbst zu schreiben, da BIOS Interrupts u.a. im Protected Mode nicht funktionieren und meißt auch nicht so sehr gute Lösungen sind. Im Bootloader muss man sie natürlich benutzen, aber sobald du im Protected Mode bist, brauchst du sie eigentlich nicht mehr, ausser für spezielle Sachen wie VESA.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 am: 04. November 2005, 07:38 »
Zitat von: SSJ7Gohan
Unter Linux ist Assemblerprogrammierung auch wesentlich angenehmer als unter Windows/DOS.
Hä? Das finde ich überhaupt nicht so.

Zitat von: SSJ7Gohan
Für den OS rate ich dir aber ab, BIOS Interrupts zu nutzen, ich würde dir empfehlen deine Treiber selbst zu schreiben, da BIOS Interrupts u.a. im Protected Mode nicht funktionieren und meißt auch nicht so sehr gute Lösungen sind. Im Bootloader muss man sie natürlich benutzen, aber sobald du im Protected Mode bist, brauchst du sie eigentlich nicht mehr, ausser für spezielle Sachen wie VESA.
Da hast du natürlich recht. Aber wie du schon sagtest im Bootloader bzw. Bootsrap braucht man diese. Deswegen fürde ich schon mal reinschauen wie diese funktioniere. Tja, und danach halt Ports etc.
In the Future everyone will need OS-64!!!

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 04. November 2005, 11:19 »
Naja, das ist natürlich Ansichssache, aber mir ist es dann doch lieber, die Linux Systemcalls zu benutzen, als die Winapi zu nutzen. Zu DOS macht das ganze natürlich keinen großen Unterschied, aber da finde ich doch die meist POSIX ähnlichen Systemcalls besser.

 

Einloggen