JMP



  • Direkt noch eine Frage: Wie kann es kommen, dass der Assembler den jmp Befehl so komisch übersetzt. Für ein einfaches "Hallo Welt" Programm habe ich am Anfang JMP 0Ch geschreiben. Das macht der Assembler zu E9 09 FF und das Programm stürzt ab. Wenn ich EB 0C disassembliere kommt jmp 010e raus. Das wieder assembliert wird zu E9 0B 00. Das ins Programm eingesetzt macht wieder was ganz anderes. Deshalb die Frage: Wie springt man zu einer Stelle und schreibt danach einen Text in den Speicher, also irgendwie:
    jmp xx
    db 'Hello World$'
    mov ax,102
    ...



  • Was du suchst nennt man Label 😃

    jmp miau
    miau:
    


  • Mann, nicht lachen, stand so in einem Tutorial 😃 .
    Gibt es denn einen Sprungbefehl, der eine bestimmte Anzahl Byte weiter springt, also Hexadezimal EB?



  • Falls mit "EB" der OpCode gemeint war:
    Steht fuer jmp rel8 (jump short). Dem OpCode 0EBh folgt ein Byte, das zur Adresse des naechsten Befehls (dh. Adresse des jmp rel8-Befehls + 2) addiert die Zieladresse ergibt.



  • Hallo Dussel,

    wie es aussieht, gibt es Probleme schon mit einfachen Sprung-Befehlen...
    Ich denke, umsteigen vom hexadezimalen Programmieren auf das normal menschliche mit einem Assembler wäre jetzt der richtige Zeitpunkt... 😉



  • Erstens habe ich das ja gemacht, mit Hexadezimal machts keine Probleme, nur mit Assembler und zweitens: Was heißt das jetzt im Klartext, was muss ich machen, wenn ich z.B. 10Byte weiter springen möchte, also Hexadezimal EB 0A in Assembler?



  • Ich habe gerade ein wenig mit dem Programm debug unter Win in der Eingabeaufforderung herumgespielt, und da kommt folgendes raus:

    -a 100
    0CA5:0100 jmp 10A
    0CA5:0102 ^C
    -u 100
    0CA5:0100 EB08          JMP     010A
    

    10 Byte weiter springen heißt hexadezimal EB08, warum auch immer...



  • jetzt sehe ich, warum EB08... weil der Befehl jmp 10A zwei Bytes benötigt, also muss man 10A - 102 = 8 rechnen...



  • Buhuuu niemand liesst meine Beitraege (oder sie sind zu unverstaendlich)... 😉
    Das hat ja gedauert. 😃



  • ja, du bist zu gut :p das schnallt eh niemand.


Anmelden zum Antworten