Hi !
Ich hab jetzt versucht dem Problem auf die Spur kommen ...
Ich hab den Protected Mode Code von obigen Link genommen, ich glaube der ist einfacher zu debuggen (nach Roshl Methode), da nur eine Datei. Also der folgende Code ist ein Bootloader in dem bereits in den PM geschaltet wird :
[BITS 16]       ; We need 16-bit intructions for Real mode
[ORG 0x7C00]    ; The BIOS loads the boot sector into memory location 0x7C00
        cli                     ; Disable interrupts, we want to be alone
                mov si, msg
                call putstr     ; Meldung ausgeben
        
        xor ax, ax
                mov si, msg
                call putstr     ; Meldung ausgeben
        
        mov ds, ax              ; Set DS-register to 0 - used by lgdt
                mov si, msg
                call putstr     ; Meldung ausgeben
        lgdt [gdt_desc]         ; Load the GDT descriptor
                mov si, msg
                call putstr     ; Meldung ausgeben
        mov eax, cr0            ; Copy the contents of CR0 into EAX
                mov si, msg
                call putstr     ; Meldung ausgeben
        
        or eax, 1               ; Set bit 0
                mov si, msg
                call putstr     ; Meldung ausgeben
        
        mov cr0, eax            ; Copy the contents of EAX into CR0
                mov si, msg
                call putstr     ; Meldung ausgeben
        jmp 08h:clear_pipe      ; Jump to code segment, offset clear_pipe
        
        msg db "TEST",13,10,0
        msg2 db "TEST2",13,10,0
putstr:
        lodsb             ; Byte laden
        or al,al
        jz short putstrd  ; 0-Byte? -> Ende!
        mov ah,0x0E       ; Funktion 0x0E
        mov bx,0x0007     ; Attribut-Byte (wird nicht benötigt)
        int 0x10          ; schreiben
        jmp putstr        ; Nächstes Byte
putstrd:
        retn
[BITS 32]                       ; We now need 32-bit instructions
clear_pipe:
        mov ax, 10h             ; Save data segment identifyer
                mov si, msg2
                call putstr     ; Meldung ausgeben
        
        mov ds, ax              ; Move a valid data segment into the data segment register
                mov si, msg2
                call putstr     ; Meldung ausgeben
        
        mov ss, ax              ; Move a valid data segment into the stack segment register
                mov si, msg2
                call putstr     ; Meldung ausgeben
        
        mov esp, 090000h        ; Move the stack pointer to 090000h
                mov si, msg2
                call putstr     ; Meldung ausgeben
        
        mov byte [ds:0B8000h], 'P'      ; Move the ASCII-code of 'P' into first video memory
                mov si, msg2
                call putstr             ; Meldung ausgeben
        
        mov byte [ds:0B8001h], 1Bh      ; Assign a color code
                mov si, msg2
                call putstr             ; Meldung ausgeben
     
hang:
        jmp hang                ; Loop, self-jump
                
gdt:                            ; Address for the GDT
gdt_null:                       ; Null Segment
        dd 0
        dd 0
gdt_code:               ; Code segment, read/execute, nonconforming
        dw 0FFFFh
        dw 0
        db 0
        db 10011010b
        db 11001111b
        db 0
gdt_data:               ; Data segment, read/write, expand down
        dw 0FFFFh
        dw 0
        db 0
        db 10010010b
        db 11001111b
        db 0
gdt_end:                ; Used to calculate the size of the GDT
gdt_desc:                       ; The GDT descriptor
        dw gdt_end - gdt - 1    ; Limit (size)
        dd gdt                  ; Address of the GDT
times 510-($-$$) db 0           ; Fill up the file with zeros
        dw 0AA55h               ; Boot sector identifyer
Wie man sieht, lasse ich nach fast jedem Befehl eine Message ausgeben.
Wenn ich den Code von ner Diskette boote, bekomme ich 2 Meldungen ausgegeben. Nachdem das DS auf 0 gesetzt wird passiert nix mehr. Findet er nun 
den String nicht mehr oder hängt er sich hier auf ?