Français
Bücher & Tutoriels

Assembler Kurs - Kleines Assembler ABC

 
Kurs: Kleines Assembler ABC.
cela ici soll aucun komplette Anleitung son, um Assembler trop erlernen.
mais es sollte einem Profan-User gestatten, erste Assemblerprogämmchen trop erstellen.

Zunächst einmal: Pour Assembler nécessaire on aucun grosse Anzahl de Befehlen, avec 10 Befehlen (en tout gibt es sur 90) ist on déjà bien bedient, alles autre ist unnütz, weil qui MASM32 Assembler High-Level-Syntax (.tandis que / .endw / .si / .endif usw.) soutenu. et en ist einem Profan-User déjà cela meiste bekannt.

dans Assembler gibt es Register, ce sont Speicherbereiche, qui 4 Byte (Long-Int) grand sommes. quelques Register dürfen facultativement aussi seulement 1 ou bien 2 Bytes grand son.
cet Register appeler eax, ebx, ecx, edx, edi et esi. ensuite gibt es encore ebp, cela vous mais erstmal ausser huit laisser devrait.
et il y a encore esp, c'est aussi erstmal tabou pour vous. Zudem benutzt Assembler esp comme Stackpointer.

cet Register peut aussi comme Integer ou bien Byte vorkommen.
comme Integer appeler vous ensuite ax, bx, cx, dx, di et si.

comme Byte, là gibt es einmal cela HiByte et cela LoByte, dans diesem Format appeler vous ensuite ah et al, bh et bl, ch et cl et encore dh et dl. Edi et esi peut seulement comme Long-Int ou bien Integer benutzt volonté.

Es dürfen toujours seulement deux Register avec qui selben Byte-Taille zusammen benutzt volonté !!!

qui devoir eines Registers:
un Register peux une numéro zwischenspeichern et qui Assembler rechnet chez einigen Befehlen avec den Werten einiger Register aktualisiert cet selbstständig. qui Register sommes alors zum Sauver et zum le calcul là.
Variablen gibt es naturellement aussi.



ici un paire Beipspiele:
KompilierenMarqueSéparation
Werte     dd 0,0,4,6,874,414425  ;6 Long-Ints
Zahlen    dw 45,263,4663         ;6 Integer
dw 364,67,3
Nochmehr  db 4,5,1,90,34         ;5 Bytes
Text      db Hallo,0           ;Und ein 6 bytes langer String (immer mit Nullbyte !!!)/pre>

venons wir zum ersten et wichtigsten Befehl: mov.
Mov steht pour Move et est verschiebe. il peut avec cela payons dans un Register Déplacer ou bien une Registerwert dans un d'autre Register kopieren. qui linke Wert ist cela but, qui rechte Wert ist qui source.
KompilierenMarqueSéparation
Ajouter addiert deux Werte miteinander et écrit den neuen Wert dans cela linke Register:
KompilierenMarqueSéparation
Sous subtrahiert deux Werte et écrit den neuen Wert dans cela linke Register:
KompilierenMarqueSéparation
Mul multipliziert deux Werte et écrit den neuen Wert pour eax. chez einer Multiplikation dürfen seulement eax et edx verwendet volonté.
veux on vorzeichenbehaftete payons multiplizieren, ensuite doit anstatt dem mul cela imul verwendet volonté. mul ist dans qui Ausführung mais plus rapide..
KompilierenMarqueSéparation
Div dividiert deux payons. à qui Division sommes trois Register daran beteiligt, eax, edx et un Register ihrer l'élection. edx doit zéro son !
KompilierenMarqueSéparation
So maintenant peut wir Schonmal le calcul.

quelquefois désirer wir uns mais encore plus Register. qui gibts mais pas. mais nous pouvons den Stack comme Registerablage mißbrauchen.

avec push poser wir une variable ou bien un Register sur dem Stack ab.
KompilierenMarqueSéparation
avec pop peut wir la valeur wieder de Stack runternehmen. cela doit mais dans umgekehrter Reihenfolge passer.
KompilierenMarqueSéparation
Stellt euch den Stack comme un Stapel avec Briefen avant. si je trois Briefe daraufpacke, ensuite doit je qui beiden obersten wieder débarrasser, um à den ersten qui trois Briefe trop gelangen.

Jmp gleicht Profans Goto et wird pour Schleifen et Sprünge benutzt.
KompilierenMarqueSéparation
Lea ist ähnlich comment mov. seulement übergibt lea pas la valeur einer Variablen ou bien eines Registers, mais den aiguille sur qui Variable/Register.
KompilierenMarqueSéparation
Ups, qui eckigen Klammern bedeuten, cela pas qui Registerinhalt transfert wird, mais qui le contenu, sur den cela Register zeigt.

Invoke ist eigentlich ne...aucune richtiger Befehl, mais aussi déjà High-Level-Syntax. invoke startet une API ou bien une Dll-Funktion. Übergeben volonté alle nötigen paramètre.
KompilierenMarqueSéparation
si qui API une Rückgabewert übergibt, steht il pour dem Aufruf im Register eax.
addr speicherbereich übergibt den aiguille sur une Variablenspeicher, ist mais seulement chez invoke gestattet.
Ebensogut hätte on écrivons peut:
KompilierenMarqueSéparation
So, cela wären qui versprochenen 10 Befehle
mais comment peut wir maintenant Register et Variablen comparer et Bedingungen et Verzweigungen programmieren ?
entier simple, den reste peut wir avec High-Level-Syntax faire. Ähnlich comment dans Profan...

.tandis que et .endw ist cela Assemblergegenstück trop Profans Tandis que et Endwhile.
KompilierenMarqueSéparation
.pause et .continue gibt es aussi, genauso comment dans Profan.

Pour Bedingungen et Verzweigungen gibt es .si, .elsif, .d'autre et .endif.
et cela funktioniert so comment dans Profan
KompilierenMarqueSéparation
cela == ist incidemment cela Gleichzeichen.Weitere Vergleichsoperatoren sommes:
KompilierenMarqueSéparation
devoir plusieurs Bedingungen abgefragt volonté, ensuite sommes chaque Bedingungen dans Klammen trop mettons, z.B. .si (eax==0) && (ebx>=0).

un Synonym pour Profans whileloop gibt es également.cela allez mittels einer .repeat / .until Boucle:
KompilierenMarqueSéparation
une .repeat / .until Boucle peux également mittels .pause sortir de, et mittels .continue récente gestartet volonté.

So, ici endet unser Assembler Crashkurs.
je hab wirklich alles Unnötige weggelassen. et somit dem User qui Possibilité gegeben, de Grund sur anzufangen.
il y a encore viele viele Befehle plus, mais qui meisten sommes wirklich par konfortablen High-Level Befehle ersetzt worden.
un gute Auflistung aller Befehle gibt es ici: [...]  (aussi im Anhang zum Runterladen)

j'ai ici aussi puis verzichtet, irgendwelche Optimierungen vorzunehmen (xor eax,eax anstatt mov eax,0), seulement weil es un paire Taktzyklen plus rapide ist. Assembler ist wirklich so sauschnell et qui neuen Prozessoren travailler si bien, cela solche Optimierungen à peine encore quoi hermachen.

Es lohnt sich , cela komplette MASM32 paquet (Freeware) runterzuladen.

Moderation:

qui einfachste Possibilité Inline-Assembler dans seinen Programmen trop verwenden, ist dans nativen Funktionen: [...] 

Beispiel:
KompilierenMarqueSéparation

147 kB
Hochgeladen:22.08.2005
Downloadcounter605
Download
 
24.06.2004  
 



Zum Buch


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

7.624 Views

Untitledvor 0 min.
Member 640534330.01.2022
Sven Bader16.09.2021
p.specht10.06.2021
Axel25.11.2020
plus...

Themeninformationen

cet Thema hat 1 participant:

Frank Abbing (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie