assembler unter linux ohne protectd mode ? ggf mix aus asm und 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_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 ^^)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 )
-
Hi.
Um die Grundlagen zu lernen ist es IMHO unerheblich, auf welchem System das geschieht. DOS scheint mir der Einfachheit halber geeignet... Aber egal...
Zu 1.
Der Code ist genauso wie er jetzt ist auch im PM mit DPMI (DOS Protected Mode Interface) lauffaehig.
Wie du mit DPMI in den PM wechselst, entnimmst du am besten den DPMI-Spezifikationen...
Zum ProtectedMode, DPMI uvm. ist diese Seite unbedingt lesenswert - ist in den FAQ verlinkt:
C/C++ Forum :: FAQ - Assembler :: OSDev Links / Hardware => http://www.fh-zwickau.de/doc/prmo/start.htmUnter Linux ist dieser Code nicht lauffaehig, da er DOS-Funktionsaufrufe verwendet.
Ein Tutorial zum Programmieren unter Linux gibt es auch in den FAQ:
C/C++ Forum :: FAQ - Assembler :: ASM TUTORIALS => http://www.cce-elmshorn.de/lug/linux/assemb.htmZu 2:
Schau dich mal in den FAQ um:
C/C++ Forum :: FAQ - Assembler :: Freeware Assembler
Gehen beide, wobei ich den NASM verwenden wuerde - AT&T-Syntax ist IMHO irgendwo... naja, umstaendlich.Zu 3:
Tjo, und nun darfst du mal raten, wo du Informationen zu diesem Thema finden koenntest...
-
jo ich danke, jetz hab ich ne menge zu lesen ^^