hi,
The art of assembly:
http://webster.cs.ucr.edu/
The art of assembly ist ein ziemlich bekanntes Buch zum Thema, frei verfuegbar, und _sehr_ umfangreich
Solltest du das jemals durch haben, brauchst du wahrscheinlich kein 2tes Buch zum Thema mehr
Und vor allem gibt es auf der Webseite auch einiges zum Thema assembly unter Linux.
Aber kannst du schon C? Weil imho ist es leichter erst C zu lernen, und dann assembly, aber das ist natuerlich Geschmacksache, wahrscheinlich wird es auch Leute geben die das Gegenteil behaupten.
Welche Programme brauche ich dazu?
Unter Linux wird meistens gas (GNU Assembler) benutzt, der im uebrigen Teil der gcc suite ist. Es gibt aber noch wesentlich mehr (z.B. nasm), das haengt vor allem auch davon ab, welchen Stil du programmieren moechtest, gas benutzt naemlich eine andere Syntax als die meisten anderen Assembler.
Einfach mal in das Thema einlesen...
edit:
Ahja, mir war der Name der gas Syntax entfallen. Der gas benutzt die AT&T Syntax, wohingegen die meisten anderen Assembler die Intel Syntax benutzen.
Die inline assembly Stellen im Linux Kernel werden aber z.B. mit dem gas geschrieben, und sind deswegen in der AT&T Syntax. Welche du davon erstmal lernen willst ist also auch von der Platform abhaengig auf der du schreiben willst, und wofuer du es spaeter benutzen willst.
edit2:
Ich bin mir grad nicht mehr sicher ob fuer den Linux Kernel tatsaechlich gas zum Uebersetzen benutzt wird, es kann sein dass das immer noch as86 ist, aber das weiss ich nicht, und ist auch nur ein Detail am Rande. Es ist jedenfalls AT&T Syntax
Viel Spass damit,
bytepool