assembler

  • hi ich suche ein tutorial für dummköpfe :traurig:von assembler
    hab schon einiges aus probier aber einiges verstehe ich nicht
    z.b das ganze mit den 8bit:confused:

  • ja genau ich verstehe nciht so richtig was es mit den 8 und 16 bit auf sich hat
    und was genau das ah,bh,ch,dh und al,bl,cl,dl ist:confused:

  • ja genau ich verstehe nciht so richtig was es mit den 8 und 16 bit auf sich hat :confused:

    meinst du die registeraufteilung in x86 prozessoren? dann ist es ganz einfach:

    Code
    AX bezeichnet alle bits eines registers:
    15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
    AL nur die 8 unteren:
                             7  6  5  4  3  2  1  0
    AH nur die 8 oberen:
    15 14 13 12 11 10  9  8

    das selbe gilt natürlich für BX, CX, DX, ...

  • ja genau ich verstehe nciht so richtig was es mit den 8 und 16 bit auf sich hat

    Welche 8 bzw. 16 Bits?!

    und was genau das ah,bh,ch,dh und al,bl,cl,dl ist:confused:

    Das ist die obere bzw. untere Hälfte der Bits der Register ax, bx, cx, dx.

  • und warum gibt es einmal 0-8 und 9-16
    warum nicht gleich 0-16

    Damit du in einem Register nicht nur einen 16-Bit-Wert speichern kannst, sondern zwei 8-Bit-Werte.

    Btw. sind die Register der IA32-Architektur (80386 und höher) nicht 32 Bit lang?


  • Btw. sind die Register der IA32-Architektur (80386 und höher) nicht 32 Bit lang?

    ja, aber in den meisten tutorials kommen die längeren register erst später vor, insofern nehme ich an, dass kiba einfach noch nicht so weit ist.

  • http://de.wikibooks.org/wiki/Assembler…:_Der_Prozessor
    das verstehe ich nciht so ganz
    frage:
    1. wo für waren Steuerwerk und Rechenwerk

    steuerwerk = sagt dem rechenwerk, was es machen muss, und holt/speichert die daten

    rechenwerk = führt die berechnungen und co. durch.

    Zitat

    2. was genau waren die Datenregister,Adressregister,Stackregister,Spezialregister,Flag-Register

    datenregister sind einfach register, in denen beliebige daten gespeichert werden können - bei x86 (E)AX, (E)BX, (E)CX, (E)DX

    in adressregistern werden adressen von daten und instruktionen gespeichert - bei x86 (E)IP, CS, DS, ES(, FS, GS)

    in stackregistern wird die adresse vom stack gespeichert - bei x86 (E)BP, (E)SP und SS.

    in spezialregistern finden sich div. steuerungsmöglichkeiten oder debugmöglichkeiten; für dich als "normalen" programmierer eher unwichtig

    im flagregister kannst du schließlich mit dem prozessor und er mit dir kommunizieren - er teilt dir zB mit, wenn es zu einem überlauf gekommen ist, du kannst ihm zB mitteilen, interrupts zu ignorieren.

  • wo für die datenregister sind weiß ich jetzt
    ich verstehe jetzt aber nciht was genau der arbeitsspeicher macht
    was z.b.IP, CS, DS, ES sind
    warum es 64bit hat
    was Paragraphen- Byte sind


  • ich verstehe jetzt aber nciht was genau der arbeitsspeicher macht

    daten und instruktionen speichern.

    Zitat

    was z.b.IP, CS, DS, ES sind

    da steht, wo welche daten im arbeitsspeicher zu finden sind.

    Zitat

    warum es 64bit hat

    was hat 64bit?

    Zitat

    was Paragraphen- Byte sind

    der speicher ist in gleich große segmente aufgeteilt, die sich zT überschneiden. ein paragraphen-byte ist das erste byte eines segments.

  • die IP,CS,DS und ES müssen doch auch eine bedeutung haben was für adressen sie speichern und wofür die adressen genutzt werden

  • die IP,CS,DS und ES müssen doch auch eine bedeutung haben was für adressen sie speichern und wofür die adressen genutzt werden

    ja, CS+IP zeigen immer auf die aktuelle instruktion
    DS bezeichnet das datensegment (für variablen und co.)
    ES das extrasegment - im prinzip nur ein 2. datensegment

  • Datenregister:
    AX=AL=>0-7bits,AH=>8-15bits
    BX=BL=>0-7bits,BH=>8-15bits
    CX=CL=>0-7bits,CH=>8-15bits
    DX=DL=>0-7bits,DH=>8-15bits

    AX=Rechenoperator(+,-)
    BX=Indirekte Register(zugriff auf Arbeitsspeicher)
    CX=Befehls Zähler z.b. wie oft eine schleife durchläuft
    DX=Rechnet mulit und divi,unterstürst AX wenn der wert größer als 16bits ist

    Statusregister:
    0bit=CF=setzt den wert auf 1, wenn ein register wert größer als 8bit ist
    2bit=PF=--""--,wenn bei der Übergabe nur einsen sind
    4bit=AF=--""--,wenn die Übertragung z.b. von bit 1 zu 2 erfolgreich war
    6bit=ZF=--""--,wenn das ergebnis 0 ergibt
    7bit=SF=--""--,dint zum vorzeichen(dezimal:+25,-46) 0=+ 1=- (zweierkom.)
    ((zum aus rechnen von negativen zahlen)Zweierkomplement=alle Ziffern der positiven Dualzahl umgekehrt: 1 wird 0 und 0 wird 1 dann haben wir den Einerkomplement. Daraus wird das Zweierkomplement, indem wir 1 addieren.(z.b 101=(in einerk.)010 +1=011)
    8bit=OF=wenn wert 1 ist er im einzelmodus und man kann den prozzes anschauen und analysiren
    9bit=IF=--""-- kann man das programm abbrechen(mit strg+c)
    10bit=DF=Reihenfolge der Adressen aufliesten 1=aufsteigender Adressen 0=absteigender adressen
    11bit=TF=--""--,wenn die letzt ziffer eine 1 ergibt

    (Areits)Speicher:
    CS+IP=speichert aktuelle Adressen(Segment-Adressen:Offset-Adressen)
    DS=Datensegment(speichert variablen und co.)
    ES=2. Datensegment
    ES+SI=für das adressieren von variablen und co. im offset
    ES+DI=
    SS= Startadresse des Segments
    SS+SB=niedrigst Adresse des Segments
    SS+BP=adresse des Segments auf die man zu greifen will

    wollte mal fragen is das so richtig


  • Datenregister:
    AX=AL=>0-7bits,AH=>8-15bits
    BX=BL=>0-7bits,BH=>8-15bits
    CX=CL=>0-7bits,CH=>8-15bits
    DX=DL=>0-7bits,DH=>8-15bits

    ja

    Zitat


    AX=Rechenoperator(+,-)

    nein, AX speichert höchstens einen operanden (bei 1+2 ist + der operator und 1 und 2 die operanden)

    Zitat


    BX=Indirekte Register(zugriff auf Arbeitsspeicher)

    ja

    Zitat

    CX=Befehls Zähler z.b. wie oft eine schleife durchläuft

    ja

    Zitat

    DX=Rechnet mulit und divi,unterstürst AX wenn der wert größer als 16bits ist

    ja

    wobei: die register sind mehrzweckregister = du kannst sie im prinzip für alles verwenden.

    Zitat

    0bit=CF=setzt den wert auf 1, wenn ein register wert größer als 8bit ist

    nein, 1 wenn der wert die größe des registers (die 8, 16 oder 32 bit sein kann) überschreitet.

    Zitat

    2bit=PF=--""--,wenn bei der Übergabe nur einsen sind

    nein, wenn es eine gerade anzahl von einsen ist, 0, bei einer ungeraden anzahl 1

    Zitat

    4bit=AF=--""--,wenn die Übertragung z.b. von bit 1 zu 2 erfolgreich war

    nein, das ist fürs BCD-rechnen, du kannst es aber getrost ignorieren

    Zitat

    6bit=ZF=--""--,wenn das ergebnis 0 ergibt

    ja

    Zitat

    7bit=SF=--""--,dint zum vorzeichen(dezimal:+25,-46) 0=+ 1=- (zweierkom.)
    ((zum aus rechnen von negativen zahlen)Zweierkomplement=alle Ziffern der positiven Dualzahl umgekehrt: 1 wird 0 und 0 wird 1 dann haben wir den Einerkomplement. Daraus wird das Zweierkomplement, indem wir 1 addieren.(z.b 101=(in einerk.)010 +1=011)

    ja

    Zitat

    8bit=OF=wenn wert 1 ist er im einzelmodus und man kann den prozzes anschauen und analysiren

    nein, OF ist wie CF, nur für vorzeichenbehaftete rechnungen

    Zitat

    9bit=IF=--""-- kann man das programm abbrechen(mit strg+c)

    interrupts sind einiges mehr als nur abbrechen

    Zitat

    10bit=DF=Reihenfolge der Adressen aufliesten 1=aufsteigender Adressen 0=absteigender adressen

    ja, aber es hat nicht mit auflisten, sondern mit zugreifen zu tun (brauchst du aber, außer bei den stringoperationen, nicht)

    Zitat

    11bit=TF=--""--,wenn die letzt ziffer eine 1 ergibt

    nein, TF ist für debugging (kannst du getrost ignorieren)

    ja, wobei SS für den stack reserviert ist, und du BP und SP (den du fälschlicherweise als SB anschreibst) vertauscht hast.

    meist verwendet man übrigens DS+SI und ES+DI.

  • ich find das ganze da sehr interessant, hab aber nüsse ahnung von assembler, deshalb wollt ich mal fragen obs eine LVA gibt, wo ma sowas lernt, bzw. falls zu trivial, wo man sowas braucht?!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!