Kann mir wer diesen kleinen Code erklären?



  • Hallo!
    Ich würde mich sehr freuen wenn mir wer diesen kleinen Code ein bisschen erklären könnte:

    so fängts an dass der Deskriptor erstellt wird fürs Codesegment (das kapier ich noch)

    ; Deskriptor 1, CODESEGMENT DESKRIPTOR
    des_code dw 0FFFFh
    dw ? ; wird zur Laufzeit eingetragen
    db ? ; wird zur Laufzeit eingetragen
    db 10011010b
    db 00000000b
    db 0

    dann später im code dies:
    mov ax,cs
    and eax,0FFFFh
    shl eax,4
    add ax,offset start

    mov w [des_code+2],ax
    shr eax,16
    mov b [des_code+4],al

    was wird hier genau gemacht - was steht wann immer im register eax genau drin? was soll zum beispiel das 0FFFFh - wäre echt super nett wenn mir das wer sagen könnte!

    Danke

    Kevin



  • eax wird erst mit dem and-operator verknüpft und dann erst um 4 bit nach links geschiftet (shl). Am Ende wird es mit shr noch 16 bit nach rechts geschiftet... Aber mehr kann ich dazu jetzt nicht sagen. Was drinsteht weiß ich nicht, weil der Code vorher fehlt. 😞 😉 Bin aber der absolute Asm-Noob 😃

    [ Dieser Beitrag wurde am 09.04.2003 um 17:16 Uhr von MaSTaH editiert. ]



  • soweit hät ichs auch noch gwusst 🙂



  • Original erstellt von Surkevin:
    soweit hät ichs auch noch gwusst 🙂

    Hab ich ja nicht angezweifelt. Deshalb räume ich ja ein dass ich in Sachen Assembler ein Noob bin 😃



  • mov ax,cs
    and eax,0FFFFh
    shl eax,4
    add ax,offset start
    

    wandelt die Startadresse wohl von der Seg-Off in eine 32bit-Addr. um. (ist denke ich verständlich).

    mov w [des_code+2],ax
    shr eax,16
    mov b [des_code+4],al
    

    speichert dann die 32bit-Addr. korrekt im Deskriptor.

    Der Code soll wohl den PMode vorbereiten, in dem er einen gültigen Code-Deskriptor anlegt.
    Für Infos über PMode & die Deskriptoren einfach mal mutig in die FAQ schauen.

    mfg
    -bg-


Anmelden zum Antworten