[Assembler] Hilfe - Was macht dieser Teil?? Wie könnte ich ihn extern aufrufen?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Valvepro, 1. Juni 2009 .

  1. 1. Juni 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Hilfe - Was macht dieser Teil?? Wie könnte ich ihn extern aufrufen?

    Hi - ich habe ein paar Fragen bezüglich Assembler...
    1. Welche Befehle sind wichtig, wie ist die Syntax...? [Gibt's da ne schöne Seite?]
    2. Was macht folgender Code: No File | xup.in
    Vielen Dank für eure Hilfe
     
  2. 1. Juni 2009
    AW: Hilfe - Was macht dieser Teil?? Wie könnte ich ihn extern aufrufen?

    hallo.

    bevor ich zu deiner frage komme solltest du wissen, dass asm nicht immer gleich asm ist. es kommt ganz drauf welchen Controller/ welches Schaltwerk du programmieren möchtest. zu jedem controller/schaltwerk gibt es einen eigenen befehlssatz.

    was meinst du mit wichtigen befehlen? oO irgendwie sind alle befehle wichig, sonst würden sie nicht existieren. asm ist schon runtergebrochen auf die primitivsten befehle wie "schiebe diesen wert in dieses register" oder "springe an diese speicheraddresse" usw. es gibt nur sehr wenige befehle in der regel.

    was dein code macht? naja, nichts besonderes... schiebt nen paar register hin und her (mov- befehl kommt von "to move"), was "test" macht weiß ich nicht genau, den befehl hab ich noch nie gesehen und am ende wird wieder weiter nach oben zu nem label gesprungen (der je- befehl von "jump"). wofür "je" genau steht weiß ich nicht... es gibt hunderte von jump befehlen (jc ist zum beispiel ein jump, wenn carry flag gesetzt ist, jz ist ein jump wenn akumulator gleich null ist usw.).

    Du musst dir schon die richtige asm-tabelle raussuchen, sonst kann man damit nicht viel anfangen...

    mfg
     
  3. 1. Juni 2009
    AW: Hilfe - Was macht dieser Teil?? Wie könnte ich ihn extern aufrufen?

    Jop, stimme Pac_-_man zu.
    Die Befehlssätze bekommst du bei der jeweiligen Herstellerseite des Microcontrollers.
     
  4. 1. Juni 2009
    AW: Hilfe - Was macht dieser Teil?? Wie könnte ich ihn extern aufrufen?

    test verknüpft soweit ich weiß die beiden Operanden mit "AND". Das Ergebnis ist dann in EAX oder so.
    je heißt jump if equal, soll heißen, bei gleichheit (dazu wird irgend ein flag überprüft) springt er.
     
  5. 1. Juni 2009
    AW: Hilfe - Was macht dieser Teil?? Wie könnte ich ihn extern aufrufen?

    Welche Befehle wichtig sind? Alle... Gibt nämlich nicht sonderlich viele..
    Joah dein code wurde ja schon erklärt, schreibt ein paar Werte in verschiedene Register und springt dann (zurück) zu einer anderen Stelle ins Programm.

    JE überprüft glaub ich das Z-Flag.

    // Edit:
    Zum lernen kenne ich eigentlich keine Seite die das groß aufbereitet zum lernen bereit stellt.
    Hier gibts aber das ein oder andere (ausführliche) Tutorial:
    Tutorials, Papers, Dissertations, Essays and Guides / Downloads - Tuts 4 You
     
  6. 12. Juni 2009
    AW: Hilfe - Was macht dieser Teil?? Wie könnte ich ihn extern aufrufen?

    Genau, wenn das zero-flag gesetzt is, springt er - deshalb kann man "JE" (=Jump if Equal) auch als JZ (=Jump if Zero) schreiben.

    so

    Edit:

    Code:
    MOV EAX,DWORD PTR DS:[A123C0] ; EAX = Wert der sich bei DS:[A123C0] befindet.
    MOV EDX,DWORD PTR FS:[2C] ; EDX = Wert, der sich bei FS:[2C] befindet
    MOV EAX,DWORD PTR DS:[EDX+EAX*4] ; EAX = Wert, der sich bei DS:[EDX+EAX*4] befindet
    MOV EDX,DWORD PTR DS:[EAX+4] ; EDX = Wert bei DS:[EAX+4]
    MOV EAX,DWORD PTR DS:[EDX+2C] ; EAX = Wert bei DS:[EDX+2C]
    
    Ich weiss nicht, ob dich das weiter bringt, aber nu weisste mal was da passiert (den test und den jump hab ich ma wechgelassen, das wurde schon erklärt). wenns dir dann immernoch schwer fällt, vielleicht mal den debugger anschmeissen und einfach gucken was mit den werten passiert .


    Code:
    http://www.i8086.de/asm/8086-88-asm.html
    
    Hier haste nen überblick über die x86 befehlssynthax/befehle - generell kann man das so sagen:

    Code:
    befehl operand, operand
    
    Wobei der erste operand meist der zieloperand ist, es gibt aber auch genügend befehle, welche nur einen operanden haben, nur kein operand ist selten (gibt es aber dennoch).

    Das für den mov befehl, der hier genutzt wird.

    @pyro
    Halb richtig, die and-verknüpfung stimmt, jedoch ändert TEST im gegensatz zu AND die werte nicht, sondern nur die flags - ansonsten wäre ja nach jeder TEST instruktion der vorherige wert wieder weg
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.