ASM: Problem mit OS loader / kernel

JohnnyEnglish

Grünschnabel
Dieser OS loader / kernel funktioniert auf einem 8086 Emulator, jedoch NICHT auf einer echten Pentium-CPU: Wo liegt das Problem?

1440k Raw-Floppy

Sektor 1 (Bootsektor bei 7C00):
Code:
ORG 7C00h

MOV BX, 9FF0h ; STACK IN 9FF00:0000 initialisieren
MOV SS, BX
MOV SP, 0

MOV AH, 00h
INT 13h

MOV AX, 0201h
MOV CX, 0002h
MOV DX, 0000h
MOV BX, 0050h
MOV ES, BX
MOV BX, 0000h

INT 13h
JMP 0050h:0000h
Sektor 2:
Code:
ORG 0000h

MOV AH, 00h
INT 13h

MOV AX, 0201h
MOV CX, 0003h
MOV DX, 0000h
MOV BX, 0052h
MOV ES, BX
MOV BX, 0

INT 13h
JMP 0052h:0000h
Sektor 3:
Code:
ORG 0000h
JMP start

msg_boot_complete DB 'xxxx 1.0.0001u', 13, 10, 'Copyright 2004 xxxxxx xxxxxxx', 13, 10, 'All rights reserved'

start

MOV BX, 0052h
MOV DS, BX

MOV AX, 0003h
INT 10h

MOV AX, 0600h
MOV BH, 00h
MOV CX, 0000h
MOV DH, 24
MOV DL, 79
INT 10h

MOV BX, DS
MOV ES, BX
MOV BP, msg_boot_complete
MOV AX, 1301h
MOV BX, 0000000000001111b
MOV CX, 66
MOV DX, 0000h
INT 10h

MOV AH, 00h
INT 16h

JMP start
 
Hi JohnnyEnglish

Es wäre noch gut, wenn du schreiben würdest was für einen Emulator du nutzt und was für einen Pentium...

Ach so, hab noch eine Frage, was möchtest du machen (Ein eigenes OS)?

mfg.
FastProg
 
Hi,

1:
Code:
MOV SP, 0
Der Stack wächst nach unten. Folglich solltest du den stackpointer höher als null haben da er sonst ins minus geht.

2: Der erste Sektor muss mit dem word 0xAA55 aufhören

Code:
times 510-($-$$) db 0
dw 0xAA55


mfg domae
 

Neue Beiträge

Zurück