Einfacher Assem code :life:



  • Ich habe ihr ein "einfachen" assembler code, steige aber 0% durch. Kann mir das wer erklären? So als würde man ein Kapitel in einem "Assember für dummies" buch schreiben.
    code 1:

    start:
    xor ecx,ecx
    mov ecx,10
    loop start
    

    code 2:

    jmp start
    jmp 0x2
    


  • Das erste macht nich gescheids und s zweite a net.



  • Eigendlich müste es wohl :

    "Assember von dummies" heissen



  • Ich versteh jetz nicht alszuviel von assembler, aber das 2. alleine hat definitiv keinen Sinn er springt zu einem label start das es nicht gibt!



  • Der erste Code macht nix Tolles, ich sag mal so: ecx ist das Register, das "heruntergezählt" wird bei Schleifen (loop), zuerst leert er das Register mit xor ecx, ecx (Exclusive Or mit sich selbst), dann schreibt er den Wert 10 hinein und springt wieder an den Anfang. Im Normalfall würde er die Loop-Schleife 10mal wiederholen, wenn man den Wert 10 VOR der Schleife initialisiert und dann nicht mehr leert, so passiert aber das:

    Das Register wird beim Sprung wieder neu geleert, wieder mit 10 gefüllt, und er springt wieder hoch und macht das gleiche noch einmal. Daraus resultiert eine Endlosschleife (hoffe das stimmt, ewig nicht mit Asm zu tun gehabt ^^).

    Der zweite Codeschnipsel führt einen Sprung zu dem Label start aus (könnte das Label aus Code1 sein, ansonsten existiert es wohl nicht), der zweite Befehl wird so nicht ausgeführt, da er schon längst weggesprungen ist, es sei denn irgendwo in restlichem Code steht ein jmp-Befehl zu der Adresse von jmp 0x2.


Anmelden zum Antworten