Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [assembler] protected mode unter linux und ggf mix mit C ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.09.2004
    Beiträge
    69

    [assembler] protected mode unter linux und ggf mix mit C ?

    hallo liebe linux freunde und angehende programmierer im low level bereich ^^
    in dem fach IT-systeme behandeln wir gerade assembler und haben auch schonmal ein programm geschreiben, das die interrupts abfragt, ein zeichen von der tastatur liest und es auf dem monitor ausgibt. das programm funktioniert aber leider nur unter DOS (wir programmieren assembler leider nur im DOS mit TASM) ... also ausschlaggebend ist der real mode, der in DOS dominierend ist.
    da ich mich nicht zurückentwickeln möchte sonder explizit mit linux meine lernerfolge erzielen möchte, müsste ich wissen wie man im assembler programm den protected mode angibt und wie ich den assembler code übersetze ^^
    mein IT-system lehrer wieß es nicht (er interresiert sich wenig für betriebssysteme, dafür um so mehr hardware wissen ^^)

    Code:
    code_seg segment
                  mov ah, 08
                  int 21h
                  mov dl, al
                  mov ah, 02
                  int 21h
                  mov ah, 4ch
                  int 21h
    code_seg ends
    end
    was ich möchte ?
    1.
    als es währe nett, wenn sich jemand aufrafft und mir den protectet-mode code darein baut und ein bisschen was dazu erklärt (nicht zu meinem source, sondern zu dem möglichen neuen source ^^)

    2.
    desweiteren weiß ich nicht, welchen assembler ich unter linux brauche um den code zu übersetzen.

    3a.
    kann man den code auch inhochsprachen wie C einbauen .. z.b.:
    das zeichen was in das ah register geladen wird, soll in eine variable von C gelangen und meinetwegen mit printf ausgegeben werden.
    3b.
    muss ich beim compilieren des mixes aus C und assembler beachten (flags/optionen bei gcc )

  2. #2
    Registrierter Benutzer Avatar von r00t043
    Registriert seit
    11.01.2004
    Beiträge
    38
    1.
    In den Protected Mode bist du automatisch drin, das brauchst du ihm nicht sagen, es gehen halt nur ein paar Befehle im protected mode nicht, die du im real mode sonst haettes. "in" und "out" duerften da solche Kannidaten sein.
    Nur dein "int 21h" gibt es nur unter DOS. Das heisst, fuer Linux solltest du es mal mit Systemcalls probieren ( also ueber "int 0x80", nicht dieses "int system( char * )" was so manch ein andere hier fuer einen Systemcall haelt. ).
    2.
    nasm oder gas je nach geschmack.
    3a.
    Ja, hab ich aber schon lange nicht mehr gemacht. Einfach mal Google nach gcc und inline assembler fragen.
    3b.
    Generel keine ( wenn ich mich recht erinnere.

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.09.2004
    Beiträge
    69
    aso, ich dachte assembler ist plattformunabhängig und richtet sich nach den fähigkeiten der hardware. also kann ich auch nochmal nach den interrupts für jedes system (DOS, windows und linux) ausschau halten ?
    gibt es sonst boch dinge, die vom system zu system verschieden sind ?

  4. #4
    Registrierter Benutzer Avatar von r00t043
    Registriert seit
    11.01.2004
    Beiträge
    38
    Assembler ist OS unabhaengig ( Plattformunabhaengig wuerd ich nicht sagen, da du an deine CPU gebunden bist ), solange du keine Systemcalls benutzt. Aber um ein paar Buchstaben auf den Bildschirm zu bringen ist so ein Systemcall natuerlich sehr komfortabel.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •