BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Assembler lernen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Assembler lernen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
phreak phreak ist männlich
Aufsteiger


images/avatars/avatar-202.gif

Dabei seit: 12.10.2002
Beiträge: 42
Herkunft: Nähe Stuttgart

Assembler lernen       Zum Anfang der Seite springen

hallo. Ich wollte mal wissen wie lange man braucht um einigermaßen in Assembler zu coden.Könnt ihr mir weiterhelfen?
13.10.2002 16:04 phreak ist offline E-Mail an phreak senden Beiträge von phreak suchen
Glavis Glavis ist männlich
Zocker


Dabei seit: 29.07.2001
Beiträge: 445
Herkunft: Genpool

      Zum Anfang der Seite springen

So lang bis mans kapiert *fg*
Das kann man nicht so genau sagen,
kommt frauf an,
ob du vorher schon was gecodet hast usw.

__________________

Es gibt nicht Neues, immer bloß zeitgemäß Ausgedrücktes.
Viel Freud. Viel Leid. Irrungen, Wirrungen. Das alte Lied.

13.10.2002 16:21 Glavis ist offline E-Mail an Glavis senden Homepage von Glavis Beiträge von Glavis suchen
phreak phreak ist männlich
Aufsteiger


images/avatars/avatar-202.gif

Dabei seit: 12.10.2002
Beiträge: 42
Herkunft: Nähe Stuttgart

Themenstarter Thema begonnen von phreak
      Zum Anfang der Seite springen

Ich habe bis jetzt ein bischen C/C++, allerlei Arten von Basic und Batch gecodet. Ich bin eben am überlegen ob es sich lohnt Assembler zu lernen. Da ich momentan nicht gerade viel Zeit übrig habe und diese auch zum Teil mit anderen Dingen belagert werden macht man sich doch schon seine Gedanken ob man eine Menge Zeit in etwas investieren soll.
13.10.2002 16:46 phreak ist offline E-Mail an phreak senden Beiträge von phreak suchen
sQuint sQuint ist männlich
BlackBoarder


Dabei seit: 10.10.2001
Beiträge: 1.454

      Zum Anfang der Seite springen

andere Programiersprachen bringen dir bei Assembler fast garnichts, da das ne ganz andere art ist! Kann man nicht mit hochsprachen vergleichen
13.10.2002 18:14 sQuint ist offline E-Mail an sQuint senden Beiträge von sQuint suchen
Andy Andy ist männlich
BlackBoarder


Dabei seit: 21.10.2001
Beiträge: 576

      Zum Anfang der Seite springen

Zitat:
Zitat aus "Schülerwissen":
Aus der englischen Sprache entlehnte prozessorspezifische Programmiersprachen. Bei den Assembler-Sprachen wird jeder binäre Maschinencode durch einen entsprechenden, aus Buchstaben und Ziffern bestehenden Assemblercode definiert. Ein Assembler-Programm ist daher nahezu fast direkt für den Prozessor verständlich, es muss nur noch durch ein entsprechendes Hilfsprogramm quasi Eins zu Eins übersetzt, kompiliert, werden. Eine Programmierung mit Assembler-Befehlen ist jedoch immer noch relativ schwer für den Menschen erlernbar. Da sie sehr prozessornah ist, führt sie meist zu schnellen und effizienten Programmen, eine Übertragung auf andere Prozessoren und Rechnertypen ist allerdings kaum möglich.
Das hab ich in meinem Lexikon gefunden.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
stdin   equ     0
stdout  equ     1
stderr  equ     2

cr      equ     0dh       ; Zeilenruecklauf
lf      equ     0ah       ; Zeilenvorschub


DGROUP  group   _DATA,STACK


_TEXT   segment word public 'CODE'

        assume  cs:_TEXT,ds:DGROUP,ss:STACK

main    proc    far

        mov     ax,DGROUP               ; Datensegment einstellen
        mov     ds,ax

        mov     ah,40h                  ; Funktion: String ausgeben
        mov     bx,stdout               ; Handle fÂr Standard Output einstellen
        mov     cx,msg_len              ; L„nge der Meldung einstellen
        mov     dx,offset msg           ; Offsetadresse der Meldung einstellen
        int     21h                     ; Meldung ausgeben

        mov     ax,4c00h                ; Programm mit Code 0 beenden
        int     21h

main    endp

_TEXT   ends


_DATA   segment word public 'DATA'

msg     db      cr,lf,'Hello World!',cr,lf
msg_len equ     $-msg

_DATA   ends


STACK   segment para stack 'STACK'

        db      256 dup (?)

STACK   ends

        end     main
Hier noch ein kleines Beispiel zu einem Quellcode, was der genau bewirkt weiß ich nicht smile

cYa Lupus

---
Edit: Ah doch, das ist wohl so eine Art "Hallo Welt" Programm.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Andy: 13.10.2002 18:57.

13.10.2002 18:54 Andy ist offline Beiträge von Andy suchen
phreak phreak ist männlich
Aufsteiger


images/avatars/avatar-202.gif

Dabei seit: 12.10.2002
Beiträge: 42
Herkunft: Nähe Stuttgart

Themenstarter Thema begonnen von phreak
      Zum Anfang der Seite springen

Ein bischen was habe ich schon mit Assembler zu tun gehabt, allerdings auf keiner x86er Architektur. Ich habe in meiner Ausbildung mit 8088 Prozessoren (glaube ich) zu tun gehabt und mich haben die Möglichkeiten einfach so fasziniert das ich das jetzt lernen möchte. Da aber x86er Programmierung doch was anderes ist dachte ich mir ich frag erst mal rum wie schwer so was ist. Wie lange habt ihr gebraucht bis ihr einigermaßen die Sprache beherrscht habt?
13.10.2002 19:05 phreak ist offline E-Mail an phreak senden Beiträge von phreak suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

ich habe da auf meiner HP einige kommentierte Quelltexte sowohl von Konsolmode wie auch "normalen" GUI Programmen veröffentlicht...
www.cdw.de.vu
unter Downloadz schauen

hab schon ne Menge Zeug in ASM geschrieben...(was nicht online ist *g*)
Die größte schwierigkeit ist die schlechte Dokumentierung von Windows, das heißt, was unter 2000 lauffähig ist, muss noch lange nicht unter 98 laufen, aber wenn man ein wenig aufpasst, geht das schon...
ansonsten:
http://spiff.tripnet.se/~iczelion/tutorials.html
http://spiff.tripnet.se/~iczelion/
es gibt da allerlei beispiele und Programme
oder
http://board.win32asmcommunity.net/index...aba76dc866b72bb

schauen

PS: bin momentan an einem MP3 Player dran:
http://bb.ups-site.de/thread.php?threadid=7818&sid=

unter:
www.movsd.com/masm.htm
gibts eine umgebung dazu... mit MASM kannst du teilweise Hochsprachenelemente verwenden... für ressourceneditieren ziehe ich VC++ 6.0 vor...
bei interesse kann ich mal irgendeinen Codeschnipsel als beispiel schreiben...
13.10.2002 19:08 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

(bezieht sich auf phreaks letzten post):
also, ich hab auch schon C++ gemacht (hab sogar einige sachen geschrieben - OpenGl zeug und einen Persogenerator(auf meiner HP zu bewundern *g*)
Dazu noch muss ich in der schule Pascal machen (hab Info/Mathe als hauptfach) und VBS kenn ich auch schon... nur macht ASM süchtig, du kommst nicht mehr los ... ich mache das schon seit nem Jahr richtig (vorher nur codeschnipsel in C++/Pascal eingebaut smile )
Du kreigst verdammt kleine und meist schnelle (wenn du kein Mist baust *g*) Programme. Zum vergleich hab ich mal ne rechenoperation mit VC++6.0, lcc (auch c++ compiler), Pascal,Freepacal, ASM und VBS geschrieben...
VC++ : 12 Sec
lcc: 10 sec
pascal 16 (da DOS)
freepascal 14
ASM:6 Sec
ASM mit MMX 2 Sec *g*
VBS: 20 (MINUTEN!!!)




PS:das was LUPUS vorgestellt hat, ist zwar richtig, aber das ist ein DOS progamm, in winAsm must du dich nicht mit datensegmenten rumschlagen, hier ein helloWorld programm (für win):

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
;-----HEADER--------
.386 ;Prozessorfamilie
.model flat,stdcall
OPTION CASEMAP: NONE
;-------------------------

;-------Includes-------
include \masm32\include\windows.inc ;wir möchten mit windows arbeiten
include \masm32\include\kernel32.inc ;den Kernel 
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc ;und user32 nutzen wir für dialogboxen usw
includelib \masm32\lib\user32.lib
;-------------------------

;------Variablen------
.DATA
        mbTitel        DB  "Title",0 ;wie bei c/c++ muss ein String mit 0 terminiert werden
        mbMsg          DB  "Hello, World",0
                  
        
;-----CODE----------
.CODE

Start:
    invoke MessageBox,0,offset mbMsg,offset mbTitel,MB_OK ;winapi für DialogBox aufrufen

   Exit:
            invoke  ExitProcess,0 ;0 heißt das programm wurde Fehlerfrei beendet 
 END Start
;-------------------------


in ASM ziehe ich es persönlich vor direkt mit WinApis (Application Programming Interface von Windows) zu arbeiten (das tut jede Programmiersprache, nur wird das ganze bis zum geht nicht mehr verschleiert)... das gibt die absolute kontrole, als Referenz benutze ich dem VC++6.0 beiligende Hilfe (aber es gibt die auch im netz), die einzige schwirigkeit ist manchmal die schlechte dokumentation von win, manche sachen gehn unter win2000 und unter win98 bewirkt dieser befehl nichts (hatte ich schon ein mal) und Microsschrott nimmt dazu ja keine Stellung... aber das kann man ja auch mit Bugs in den bibliotheken anderer Sprachen vergleichen (und es gibt VIELE in VB\Delphi) so dass es fast nicht ins gewicht fällt... Ansonsten bekommst unter ASM erst das richtige verständniss für alle Abläufe (besonders Zeiger und so, jetzt kann ich die mir bildlich vorstellen)
und das Wissen nutzt dir auf jedenfall in anderen Sprachen...
PPS:ach ja, noch eine gute, deutsche Seite:
www.deinmeister.de

Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von CDW: 13.10.2002 19:53.

13.10.2002 19:16 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
phreak phreak ist männlich
Aufsteiger


images/avatars/avatar-202.gif

Dabei seit: 12.10.2002
Beiträge: 42
Herkunft: Nähe Stuttgart

Themenstarter Thema begonnen von phreak
      Zum Anfang der Seite springen

Vielen Dank für die Links CDW_. Die sind wirklich sehr hilfreich. Wie lange programmierst du schon? Ich frage nur aus reiner Neugier.
Ich habe deinen MP3 Player begutachtet.Hast du alles in Assembler geschrieben???
Deine Website tut allerdings nicht bei mir. Irgendwie passiert nichts wenn ich auf das Menü klicke. Woran könnte das liegen? Ich habe JavaScript aktiviert. Naja, vielleicht finde ich noch den Fehler.Wäre ja schade um die website Augenzwinkern

PS Nochmals vielen Dank für die Links. Die werden mich bestimmt weiterbringen.

PSS Kannst du irgendwelche Literatur über Assemblerprogrammierung empfehlen?
13.10.2002 20:02 phreak ist offline E-Mail an phreak senden Beiträge von phreak suchen
HeaD HeaD ist männlich
Hoffnungsloser Sozialfall in Behandlung bei Styx


images/avatars/avatar-2266.gif

Dabei seit: 31.08.2001
Beiträge: 4.142
Herkunft: Mama

      Zum Anfang der Seite springen

Ich würde aber nur Assembler lernen, wenn es "nötig" ist. Wenn man Treiber, Betriebssysteme oder sowas schreibt, ist es warscheinlich besser.

Aber wenn man einen MP3Player oder ähnliches Programmieren will, ist es fraglich ob sich der Herrmann lohnt da ASM zu lernen..

Ich hab mal damit angefangen und ich finds echt ätzend. Zwar irgendwie cool, aber unheimlich anstrengend und umständlich (im gegensatzt zu "klick an play"-C oder sowas *g*)

__________________

13.10.2002 21:48 HeaD ist offline E-Mail an HeaD senden Homepage von HeaD Beiträge von HeaD suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

zu meiner seite: basiert ja eigentlich alles auf Java-Script (je ein eigenes für NC 4.x,NC 6.0 und IE), muss ich mal alles rausschmeißen, hier ist ein direktlink zu downloads:
http://www.cdw.de.vu/downloads.htm
@phreak, ja, ist alles in ASM geschrieben, etwa 1000 Zeilen Code (ist aber normal bei solchen projekten, hatte schon größere in Pascal geschrieben), wie erwähnt, programmiere ich fast seit nem Jahr, die erste Anwendung (shutdown => Quelltext offen) hab ich etwa nach 2 Monaten geschrieben, der Anfang ist sicherlich schwer, aber dann geht das schon
@head: der anwendungsbereich ist noch viel größer... du hast sicherlich recht, große Projekte damit zu schreiben ist umständlich (eimal auf www.Dreamer-Zone.tk
schauen, das ist ein professioneller Musikmaker komplett in ASM)... Aber ich hab schon einige Sachen geschrieben/gesehen, die man nur schwer mit C/c++ realisieren kann (man kann, aber der Quellcode ist dann so unübersichtlich...). Z.Bein Exe-Packer/Verschlüsseler, ein Exe-Joiner (ein tool, womit man zwei programme verschmelzen kann)
oder was ich noch hab, ein MsgBoxCreator, damit kann man seine eingenen WinMeldungen gestalten (jaja, banal, ich weiß, eigentlich in jeder Sprache umsetzbar smile ) UND man kann sie dann als Standalone-exe speichern (nicht mehr so ganz banal *g*).

Ich bin kein Gegner der Hochsprachen (höchstens von VB *ggg*), nur weiß ein Programmierer nachher oft gar nicht, was hinter den ganzen Klassen&Objekten steckt, die Programme in Delphi & VB sind teilweise wahre Ressourcenfresser und C++ ist auch nicht ohne...(und über JAVA rede ich gar net, das ist ein Monstrum). Und bis jetzt nutzen nur die wenigsten Compiler die Befehlssätze von .486 aus, ich will da gar nicht MMX/SSE erwähnen...
Ansonsten zum Aufwand: mit MASM Sysntax hält dieser sich in Grenzen (man kann IF/WHILE usw benutzen). Jede Sprache hat ihre Nachteile, versuch mal mit JAVA eine Textdatei nach bestimtem String zu scannen großes Grinsen , nur ist asm bis jetzt das mächtigste, was es gibt... ich hab schon von einigen gehört "was willst du mit ASM, das ist doch voll alt (!!!*g*!!!), das stribt bald aus, Java hat Zukunft, das ist plattformübergreifend)
Der Aufwand am Anfang ist mit den Möglichkeiten später zu vergleichen - lernst du VBS, ist es ganz einfach, aber du kannst später kaum was damit machen, lenst du c++ ist es schwer, doch später mächtig...

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von CDW: 14.10.2002 15:05.

14.10.2002 14:50 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
phreak phreak ist männlich
Aufsteiger


images/avatars/avatar-202.gif

Dabei seit: 12.10.2002
Beiträge: 42
Herkunft: Nähe Stuttgart

Themenstarter Thema begonnen von phreak
@ Cdw_       Zum Anfang der Seite springen

Vielen Dank für den Direktlink auf deine Downloadseite.

Kannst du (oder irgend jemand anderes) mir sagen was ich alles zum Assemblercoden brauche und mir gute Programme nennen?
Währe echt nett. Vielen Dank im voraus

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von phreak: 14.10.2002 16:19.

14.10.2002 16:19 phreak ist offline E-Mail an phreak senden Beiträge von phreak suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

ok, du lädst dir hier MASM32 runter:
http://www.movsd.com/
Damit bist du schon mal gut versorgt, da sind nähmlich viele Beipiele (EXAMPLES), Referenzen (API, Prozessorbefehle)
Damit hab ich ein halbes Jahr programmiert...
Es gibt zwar noch FASM/NASM aber die haben nicht so eine große bibliothek zur winprogrammierung (mit FASM macht man eher so Zeugs wie bootloader usw, jedenfalls ist MASM am besten zu lesen)
unter:
http://radasm.sonshinesoftware.com
gibts einen netten Editor mit Syntaxhighligting usw, vergelichbar mit VC++ Umgebung, ist gut, wenn du größere projecte machst, auf jedenfall ist die Syntaxhervorhebung nützlich...
unter:
http://spiff.tripnet.se/~iczelion/tutorials.html
bekommst du gute tutorials(vom meister iczelion persönlich *g*) sowie unmengen von Quellcodes und beispielen...
unter:
http://www.robsite.de/tutorials.php?tut=assembly
sowie:
www.deinmeister.de
gibts einige gute Tuts auf Deutsch... du kannst dir auch für den Anfang DOS antun, weil man da nicht so viel Overhead mit GUI(Grafical User Interface) und den WinNachrichten hat, außerdem bekommt man ein besseres gefühl dafür... zumindes sollte man erstmal bei Konsolmodeprogrammen bleiben.... Kannst du schon eine andere programmiersprache?
Oder schon unter Win direkt gecodet?
Ich überleg mir auch, einen win32 Einführungstut zu schreiben (wenn da nicht die verdammten Klausuren wären *g*)
PS: und unter:
http://board.win32asmcommunity.net
findest du meistens immer eine Antwort auf deine ASM fragen... ich schau da schon sein nem halben Jahr vorbei, brauchte noch nie eine Frage zu posten großes Grinsen
Und zusätzlich hab ich mir ein buch gekauft:
Assembler Ge-Packt von J.Rohde, ISBN 3-8266-0786
14,95 Euro, das ist ne Superreferenz

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von CDW: 14.10.2002 19:29.

14.10.2002 19:20 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
phreak phreak ist männlich
Aufsteiger


images/avatars/avatar-202.gif

Dabei seit: 12.10.2002
Beiträge: 42
Herkunft: Nähe Stuttgart

Themenstarter Thema begonnen von phreak
@ Cdw_       Zum Anfang der Seite springen

Vielen Dank für die Infos und Links. Ich hab mir die Progs runtergeladen, hatte aber bisher noch keine grossartige Zeit um mir die genauer anzuschauen.

Die Tuts hab ich mal so grob überflogen, scheint wirklich sehr interessant und tiefgehend zu sein.

Kennst du noch andere Bücher über Assembler??
16.10.2002 20:13 phreak ist offline E-Mail an phreak senden Beiträge von phreak suchen
CDW CDW ist männlich
eine Simulation


Dabei seit: 12.10.2002
Beiträge: 1.329
Herkunft: CreateRemoteThread

      Zum Anfang der Seite springen

sorry, damit sind meine Quellen erschöpft... vielleicht haben aber andere noch Tipps....
16.10.2002 21:40 CDW ist offline E-Mail an CDW senden Homepage von CDW Beiträge von CDW suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

      Zum Anfang der Seite springen

Ich finde, daß Assembler eigentlich leichter zu lernen ist als eine Hochsprache (vorausgesetzt man will Windows Programmierung machen, für Linux kann ich nicht sprechen). Was nur blöd ist, wenn man auf DOS Programmieren möchte. Diese Interrupts und Segmentregister können einen ganz schön nerven. Und bis man das auswendig kann, dauert es auch lange.

Der Befehlssatz ist im Gegensatz zu Hochsprachen sehr eingeschränkt, da der Prozessor nur Grundlegende Befehle ausführen kann (Kopieren von Speicherbereichen, einfache arithmetische Operationen, etc...).
Man sollte schon grundlegende Kenntnisse von anderen Programmiersprachen mitbringen wie z.B. die Nachrichtenverarbeitung von Windows. Dann behaupte ich mal, das Du in ca. 1-3 Wochen richtig mit ASM loslegen kannst. Die WinAPI kann (und muß) man ja benutzen, was viele Dinge wesentlich einfacher macht.

Eigentlich brauchst Du nur eine Befehlsreferenz (die von CDW benutze ich auch, und die ist wirklich gut) und ein paar Grundlagen, die Du Dir von oben beschriebenen Links aneignen kannst.

Auf jeden Fall viel Spaß mit Assembler...
19.10.2002 16:20 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Assembler lernen

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH