Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: blitzmaster am 13. March 2007, 16:59
-
Hi!
Folgendes:
Irgendwie funktionieren die Variablen nicht ganz. Wenn ich schreibe:
Org 0x15FBE
...
mov al, [actPos]
cmp al, 0xFF
...
actPos db 0xFF
Dann meint er [actPos] sei nicht das gleiche wie 0xFF. Die Calls und Jumps funktionieren aber alle einwandfrei. Was ist das???
Der Code wird vom Kernel an die stelle 0x15FBE geladen, wir befinden uns im Protected Mode mit CS=DS = 0x0 - 0xFFFFFFFF. Die GDT ist ordnungsgemäß geladen, interrupts sind ausgeschaltet.
Danke schon im voraus!
-
Haste auch daran gedacht falls nu mit dem int 13h im RM den kernel schreibst das Seg*16+Offset = logisch ist? Jump und Calls überspringen nur Bytes, das also noch lange nicht heißt das dein org richtig ist.
bitmaster
-
so bin wieder da
@bitmaster
ja, daran hab ich gedacht ^^
wie kann ich am einfachsten herausfinden an welchem offset ich mich gerade befinde?
Würde da funktionieren, dass ich ein call mache, 4 Byte vom Stack hohle (sollte somit EIP habe) oder?
-
Du machst einfach ein jmp $ und schaust dir cs-ip / eip oder was weis ich in qemu / bochs an.
bitmaster
-
Würde da funktionieren, dass ich ein call mache, 4 Byte vom Stack hohle (sollte somit EIP habe) oder?
ja, würde funktionieren