Español
Bücher & Tutoriales

Ensamblador Kurs - Kleines Ensamblador ABC

 
Kurs: Kleines Ensamblador ABC.
Das hier se no komplette Anleitung ser, en Ensamblador a erlernen.
Aber lo debería una Profano-User gestatten, erste Assemblerprogämmchen a redactar.

Zunächst una vez: Für Ensamblador benötigt uno no grosse Anzahl de Befehlen, con 10 Befehlen (total hay encima 90) es uno ya bien bedient, alles otro es unnütz, porque el MASM32 Ensamblador High-Level-Syntax (.mientras que / .endw / .if / .endif usw.) unterstützt. Und su es una Profano-User ya el meiste bekannt.

In Ensamblador hay Register, el son Speicherbereiche, el 4 Byte (Largo-Int) groß son. Einige Register dürfen wahlweise auch sólo 1 oder 2 Bytes groß ser.
Diese Register heißen eax, ebx, ecx, edx, edi y esi. Dann hay todavía ebp, el ellos aber primero salvo acht dejar debería.
Und lo son todavía esp, el es auch primero tabu para ellos. Zudem benutzt Ensamblador esp como Stackpointer.

Diese Register puede auch como Integer oder Byte vorkommen.
Als Integer heißen ellos entonces ax, bx, cx, dx, di y si.

Als Byte, como hay una vez el HiByte y el LoByte, en diesem Formato heißen ellos entonces ah y al, bh y bl, ch y cl y todavía dh y dl. Edi y esi puede sólo como Largo-Int oder Integer benutzt voluntad.

Lo dürfen siempre sólo zwei Register con el selben Byte-Größe zusammen benutzt voluntad !!!

El Tarea uno Registers:
Ein Register kann una Zahl zwischenspeichern y Ensamblador rechnet en algunos Befehlen con el Werten einiger Register aktualisiert esta selbstständig. El Register son also para speichern y para rechnen como.
Variables hay natürlich auch.



Hier unos pocos Beipspiele:
KompilierenMarcaSeparación
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>

Kommen wir para ersten y wichtigsten Befehl: mov.
Mov es para Move y heißt verschiebe. Se puede así Pagar en una Register mover oder una Registerwert en una más Register kopieren. Der linke Valor es el Ziel, el rechte Valor Es el Quelle.
KompilierenMarcaSeparación
Add addiert zwei Werte miteinander y schreibt el neuen Valor en el linke Register:
KompilierenMarcaSeparación
Sub subtrahiert zwei Werte y schreibt el neuen Valor en el linke Register:
KompilierenMarcaSeparación
Mul multipliziert zwei Werte y schreibt el neuen Valor después de eax. En uno Multiplikation dürfen sólo eax y edx verwendet voluntad.
Will uno vorzeichenbehaftete Pagar multiplizieren, entonces muß anstatt el mul el imul verwendet voluntad. mul es en el Ausführung pero más rápido..
KompilierenMarcaSeparación
Div dividiert zwei Pagar. An el Division son drei Register daran beteiligt, eax, edx y una Register ihrer Wahl. edx muß Null ser !
KompilierenMarcaSeparación
So ahora puede wir schonmal rechnen.

Manchmal wünschen nosotros aber todavía mehr Register. El gibts pero no. Aber wir puede el Stack como Registerablage mißbrauchen.

Mit push legen wir una variable oder una Register en el Stack de.
KompilierenMarcaSeparación
Mit pop puede wir valor otra vez de Stack runternehmen. Das muß aber en umgekehrter Reihenfolge passieren.
KompilierenMarcaSeparación
Stellt euch el Stack como una Stapel con Briefen antes. Wenn Yo drei Briefe daraufpacke, entonces muß Yo el beiden obersten otra vez wegräumen, en a el ersten el drei Briefe a gelangen.

Jmp gleicht Profans Goto y se para Schleifen y Sprünge benutzt.
KompilierenMarcaSeparación
Lea es ähnlich como mov. Nur übergibt lea no valor uno Variables oder uno Registers, pero el Zeiger en el Variable/Register.
KompilierenMarcaSeparación
Ups, el eckigen Klammern bedeuten, el no Registerinhalt transferencia se, pero el Inhalt, en el el Register zeigt.

Invoke es eigentlich kein richtiger Befehl, pero auch ya High-Level-Syntax. invoke startet una API oder una Dll-Función. Übergeben voluntad todos nötigen Parámetro.
KompilierenMarcaSeparación
Wenn el API una Rückgabewert übergibt, es él después de el Aufruf en el Register eax.
addr speicherbereich übergibt el Zeiger en una Variablenspeicher, es aber sólo en invoke gestattet.
Ebensogut hätte uno escribir puede:
KompilierenMarcaSeparación
So, el wären el versprochenen 10 Befehle
Aber como puede wir ahora Register y Variables vergleichen y Bedingungen y Verzweigungen programa ?
Ganz simplemente, el Rest puede wir con High-Level-Syntax hacer. Ähnlich como en Profano...

.mientras que y .endw es el Assemblergegenstück a Profans Mientras que y EndWhile.
KompilierenMarcaSeparación
.romper y .continue hay auch, genauso como en Profano.

Für Bedingungen y Verzweigungen hay .if, .elsif, .más y .endif.
Und el funktioniert como en Profano
KompilierenMarcaSeparación
.if eax==0

    mov ebx,1

.elseif ecx==0

    mov edx,1

.más

    mov ebx,2
    mov edx,2

.endif


Das == es de paso el Gleichzeichen.Weitere Vergleichsoperatoren son:
KompilierenMarcaSeparación
Sollen mehrere Bedingungen abgefragt voluntad, entonces son cada Bedingungen en Klammen a conjunto, z.B. .if (eax==0) && (ebx>=0).

Ein Synonym para Profans whileloop hay ebenfalls.Es mittels uno .repeat / .until Bucle:
KompilierenMarcaSeparación
Un .repeat / .until Bucle kann ebenfalls mittels .romper verlassen, y mittels .continue neu comenzó voluntad.

So, hier endet unser Ensamblador Crashkurs.
Yo wirklich alles Unnötige weggelassen. y somit el User el Möglichkeit gegeben, de Grund en anzufangen.
Lo son todavía viele viele Befehle mehr, aber el meisten son wirklich por konfortablen High-Level Befehle ersetzt worden.
Ein gute Auflistung aller Befehle hay hier: [...]  (auch en el Anhang para Runterladen)

Yo habe hier auch darauf verzichtet, irgendwelche Optimierungen vorzunehmen (xor eax,eax anstatt mov eax,0), sólo porque lo unos pocos Taktzyklen más rápido es. Ensamblador es wirklich así sauschnell y el neuen Prozessoren trabajo tan bueno, el solche Optimierungen kaum todavía qué hermachen.

Lo lohnt se , el komplette MASM32 Paket (Freeware) runterzuladen.

Moderation:

El einfachste Möglichkeit Inline-Ensamblador en seinen Programmen utilizarse, es en nativen Características: [...] 

Ejemplo:
KompilierenMarcaSeparación

147 kB
Hochgeladen:22.08.2005
Ladeanzahl590
Descargar
 
24.06.2004  
 



Zum Buch


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

7.532 Views

Untitledvor 0 min.
Member 640534330.01.2022
Sven Bader16.09.2021
p.specht10.06.2021
Axel25.11.2020
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

Frank Abbing (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie