Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - falcon007de

Seiten: [1]
1
Lowlevel-Coding / Wechsel in den PMode geht schief
« am: 21. August 2008, 00:34 »
hallo leute ich hab das code von lowlevel geschrieben ,und versucht nachher ein daten segment zu schreiben ganz am ende
"mov ax ,wert  mov fs ,ax"

und deswegen bosch stürzt sich ab
ich weiss nicht warum

das ist der global deskriptor
gdt_bufferseg               segment use32
gdtlabel1                   label byte

null_deskriptor             dd 0                    ;0null deskriptor     
                            dd 0

vga_deskriptor              dw 0FFFFh               ;1 VGA
                            dw 0
                            db 0Ah
                            db 11110010b                           
                            db 0
                            db 0

ascii_deskriptor            dw 4*512                ;2 ASCII tabele
                            dw 9000h
                            db 0
                            db 11110010b
                            db 01000000b
                            db 0

gdt_idt_deskriptor          dw 2*512                ;3nur in level 0 kann gdt erweitern
                            dw 8000h
                            db 0
                            db 10010010b
                            db 01000000b
                            db 0

code0_deskriptor            dw 0FFFFh                ;4 CODE0 start system in pmode
                            dw 0h
                            db 0
                            db 10011010b
                            db 01000000b
                            db 0

daten_deskriptor            dw 0FFFFh               ; 5 DATA für paging
                            dw 0
                            db 0
                            db 10010010b
                            db 01000000b
                            db 0

stack_deskriptor            dw 0FFFFh               ;6 STACK paging
                            dw 0
                            db 0
                            db 10010110b
                            db 01000000b
                            db 0

daten1deskriptor            dw 0FFFFh               ; 7DATA für paging
                            dw 0
                            db 0Ah
                            db 10010010b
                            db 01000000b
                            db 0



gdtlabel2           label byte
gdt_bufferseg       ends
*************************************************************
das code

CODE0_BUFFERseg             segment use32
                            assume cs:CODE0_BUFFERseg
                           
code0_label1                label dword

                            cli                         

                           
                            mov ax ,5*8
                            mov es ,ax
                            mov ds ,ax
                           

                            mov ax ,6*8
                            mov ss ,ax
                            mov esp ,0FFFFFFFFh
                           
                           

                           
                            mov di ,8000h
                            nop
loopNull:                   mov byte ptr es:[di] ,0
                            inc di
                            cmp di ,8000h+3000h
                            jne loopNull
                           

                            mov dword ptr es:[8000h] ,9000h+7   ;
                            ;mov dword ptr es:[8000h+4] ,A000h+7   

                            xor ebx ,ebx
                            xor edx ,edx
looppage:                   mov eax ,edx
                            or eax ,111b
                            mov dword ptr es:[9000h+ebx] ,eax
                            add ebx ,4
                            add edx ,4096
                            cmp edx ,4096*1024
                            jne looppage
                           
                            mov eax,8000h
                         mov cr3,eax

ActivatePaging:
                         mov eax,cr0
                              or eax,10000000000000000000000000000000b
                              mov cr0,eax
                                                       
                            mov ax ,7*8             hier ist der fehler aber warummmmm
                            mov fs ,ax
                                                       
                           
   
                            jmp $
code0_label2                label dword
CODE0_BUFFERseg             ends

danke voraus für dein vorschläge
Seiten: [1]

Einloggen