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 0dann später im code dies:
mov ax,cs
and eax,0FFFFh
shl eax,4
add ax,offset startmov w [des_code+2],ax
shr eax,16
mov b [des_code+4],alwas 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 gwusstHab 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-