41
Lowlevel-Coding / BOCHS bootet mein os der PC aber nicht :-(
« am: 26. April 2006, 11:32 »
hi!
hab nun folgenden code geschrieben:
leider kommt auch hier wieder die meldung
ich hab euren rat befolgt immer nur einen sektor einzulesen aber BITTE BITTE bessert meinen code aus... DANKE waenn das funkt bin ich so froh sach ich euch...
hab nun folgenden code geschrieben:
Code: [Auswählen]
org 0x7c00
KERNEL_SIZE equ 76
KERNEL_SEGMENT equ 0x1000
KERNEL_START equ 1
%define LOOPS_1 bp-2
%define CYLINDER bp-4
%define HEADS bp-6
%define SECTORZ bp-8
%define LOGICAL bp-10
%define BUFFER bp-12
SUB sp, 12
MOV cx, KERNEL_SIZE
MOV [LOOPS_1], cx
MOV al, 1
CLI
MOV ax, 0x9000
MOV ss, ax
MOV sp, sp
STI
MOV ax, KERNEL_SEGMENT
MOV es, ax
XOR bx, bx
main_loop:
MOV [LOOPS_1], cx ;take the loopvar to the logical sector number
MOV [LOGICAL], al
CALL logical_to_chs ;convert the LSN to CHS
fail:
;read the sector
ADD bx, 512
MOV ah, 2
MOV al, 1
MOV cl, [SECTORZ]
MOV ch, [CYLINDER]
MOV dh, [HEADS]
MOV dl, 0
INT 0x13
JC fail
MOV cx, [LOOPS_1]
MOV al, 1
ADD [LOGICAL], al
LOOP main_loop;
JMP KERNEL_SEGMENT:0x0000
logical_to_chs:
MOV ax, [LOGICAL] ;Cylinder
MOV bx, 36
MOV dx, 0
DIV bx
MOV [CYLINDER], ax
MOV ax, dx ;Head
PUSH ax
MOV bx, 18
MOV dx, 0
DIV bx
MOV [HEADS], ax
POP ax ;Sektor
MOV dx, 0
DIV bx
MOV ax, dx
ADD ax, 1
MOV [SECTORZ], ax
RET
leider kommt auch hier wieder die meldung
Code: [Auswählen]
Device: [CPU0]
Message: prefetch: RIP > CS.limit
ich hab euren rat befolgt immer nur einen sektor einzulesen aber BITTE BITTE bessert meinen code aus... DANKE waenn das funkt bin ich so froh sach ich euch...