Brauche einen Rat bzg. assembler.

So, solangsam bin ich am verzweifeln.Hab mir nen schönes asm Buch gekauft dachte mir so fängst mal an.Wo es dann von der Theorie zur Praxis Übergang viel mir echt die Kinnlade runter.Entweder is das Buch scheisse oder ich raff das einfach nicht.Es wird gar nicht drauf eingegangen warum ich welchen Register nach welchen mov.Dann habs das 16 bit Programmieren sein gelassen und bin zu 32 bit und Win32 übergegangen.Dann fängt der an mit tasm32 und dann masm32 dann sagt der benutz die addr Funktion statt offset ach dann nimm lieber invoke statt call für die win-api boar das bringt mich alles vollkommen durcheinander.

Nun würde ich mal gerne wissen wie man am besten anfangen soll kann ich 16.bit gleich sein lassen und zu 32 bit übergehen oder ist das von nöten.Was wäre besser tasm32 oder masm32?
In dem Buch stehen riesen Listings die meiner Meinung nach nicht gut erklärt sind.Habe mich auch lange nach Büchern umgeschaut die habe alle schlechte Kritik bekommen.Nun weiß ich nicht so richtig wie ich weiter machen soll.Vielleicht kann mir da jemand nen kleinen Rat geben.
 
Ich geb dir einen guten Rat:
Schreib doch mal verständliche Sätze!

Nornagest
 
Ich schließ mich mit einem weiteren Ratschlag an:

Lerne und vor allem verstehe erst mal die Grundlagen, also 16Bit-Programmierung.
Google ein bisschen nach Beispielen und arbeite sie durch, dann kommt die Erkenntnis von ganz allein. Assembler ist superhardwarenah und nicht über Nacht gelernt und gefestigt.
Ganz nebenbei - ich gehe mal davon aus, dass Du x86-Assembler meinst, oder? Es gibt für jeden Chip einen eigene, ganz spezifische Assemblerart...
 
Lese das Buch nocheinmal von vorne und überspringe nichts und falls du etwas nicht verstehst( dann hilft google gerne ;) ), dann mach da solange weiter bis dus hinbekommen hast. Die meisten Programmierbücher und ihr Inhaltsaufbau haben einen Sinn ...
 
Ich würde auch vorerst mit der 16-Bit-Programmierung anfangen, denn ASM + WinAPI ist schon ziemlich schwer, wenn man die Grundlagen noch nicht verstanden hat. Das mit den Registern ist eigentlich leicht erklärt:
Jeder der vier Allzweckregister(AX, BX, CX und DX) hat eine bestimmte Aufgabe. Natürlich darfst du sie auch benutzen, um einfach Werte darin abzulegen:

AX: Spezielle Funktion bei Arithmetischen Befehlen, wie der Multiplikation & Division. Um z.B. 4000 mit dem Wert in BX zu multiplizieren, schiebst du die 4000 in AX:
Code:
mov ax, 4000
mul bx
Der mul-Befehl verwendet standartmäßig das AX-Register. Bei einer WORD-Multiplikation liegt das Ergebnis dann im Registerpaar DX:AX.

Bei einer Byte-Multiplikation(also Werte bis 2^8 ) muss der Faktor in AL liegen. Das Ergebnis liegt dann in AX.

Mit BX kann man als Index direkt auf den Speicher zugreifen, um z.B. Strings zu bearbeiten.
Code:
name db "Horst",0
mov bx, offset name       ;bx zeigt auf den Anfang von name(ne Variable)         
mov [bx],"a"              ;schreibt ein a an die Stelle, wo bx hinzeigt
inc bx                  ;wandert eine Speicherstelle weiter. So kann man
                       ; zeichenweise Strings im Speicher bearbeiten etc.
[] benutzt man, wenn auf den Wert der Speicherzelle zugegriffen werden soll, auf die der entsprechende Indexregister zeigt. Beispielsweise enthält BX nach der Anweisung
mov bx, offset name
die Adresse, an der name beginnt. Mit [bx] greift man auf den Wert zu, der an dieser Speicherzelle gespeichert ist. In diesem Fall wäre es H.

Das CX-Register benutzt man z.B. in Verbindung mit loop, um Schleifen zu realisieren:
Code:
mov cx, 10
schleife:
....
loop schleife
Der loop-Befehl verwendet dabei standartmäßig das CX Register, und vermindert dessen Wert um eins, wenn ein Schleifendurchgang erfolgt ist. Es wird solange zum Label schleife gesprungen, bis CX den Wert 0 aufweist.

Und DX wird in Verbindung mit dem AX-Register bei der Word-Multiplikation eingesetzt. Der High-Teil befindet sich dann in DX und der Low-Teil in AX
 
Da ich neben bei noch C-Programmierung mache und das alles weit aus schneller begriffen habe, habe ich vielleicht zu schnell zu viel erwartet was das erlernen von Assembler angeht.Ich denke ich sollte mit etwas mehr geduld an die Sache gehen dann wird das schon was.Aber trotzdem thx.
 
Hey Mnemonix,

wenn ich mir deine Anleitung so durchlese, muss ich sagen, dass du hast echt das Talent solche Zusammenhänge einfach und anschaulich zu beschreiben.

Da ich selbst das Thema Assembler interessant finde und wenig gute Quellen kenne (insbesonders deutsche), ist es schön, mal so klare, einfache Sätze zu lesen.
Ich finde es von Vorteil, wenn jemand man solche Zusammenhänge gliedert, wie du es getan hast.

Kurzes Beispiel, kurze Erklärung, gefolgt vom nächsten Beispiel.

Einfach und übersichtlich.

Schon mal drüber nachgedacht, ein Tutorial zu schreiben?

Viele Grüsse

root
 
Zurück
Oben