[asm] kom niet uit een assembly error in bootloader

Pagina: 1
Acties:

  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 07-05 16:01
Ik was bezig met het topic Write your own OS.
en toen ik bij dit stukje aankwam kreeg ik een error waar ik niet uit kom:

http://gathering.tweakers...message/13370629#13370629

maar hier blijf ik op een fout hangen namelijk:

regel 18: error: label or instruction expected at start of line

ik heb al gekeken en wat kleine foutjes gefixed in het eerste gedeelte maar deze fout krijg ik er met mijn bescheide assembler kennis niet uit en ik zouw het leuk vinden als ik het tot aan het c stuk aan de praat zouw krijgen want dan kan ik pas echt beginnen.

regel 18 is in het bestand :

SectorsPerFAT dw 0x09

zie niet wat daar fout aan is :S:S:S

ik wil zo nodig mijn source posten maar het zal waarschijnlijk maar iets heel kleins zijn

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 07:42

Reptile209

- gers -

Post je code maar, want dit is gissen :). Welke assembler gebruik je? MASM, NASM, een andere? Niet de regel er voor per ongeluk 0xFo (ja, dat is een O van Otto, maar moet een 0 (nul) zijn!) getypt?

Zo scherp als een voetbal!


  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 07-05 16:01
ik gebruik NASM.
ik heb gekeken of het niet perongeluk een O was ipv een 0 maar het is echt een 0 in mijn code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
;
;       Bootloader Code
;       Start kernel.sys vanaf flop
;
[bits 16]   ;16 bits code
org 0   ;We staan op offset 0

jmp End_Of_BootData

    OEMName     db  "Boot"
    BytesPerSector  dw  0x0200
    SectorsPerCluster   db  0x01
    ResrvedSectors  dw  0x01
    NumberOfFATs    db  0x02
    RootEntries dw  224
    TotalSectors    dw  2880
    Media           db  0xF0
`   SectorsPerFAT   dw  0x09
    SectorsPerTrack dw  0x0012
    HeadsPerCylinder dw 0x0002
    HiddenSectors   dd  0x00000000
    TotalSectorsBig dd  0x00000000

    DriveNumber db  0x00
    ExtBootSignature db     0x00
    SerialNumber    dd  0x12345678
    VolumeLabel db  "BootLoader "
    FileSystem  db  "FAT12 "

End_Of_BootData:

; We weten niet of we op 0000:7C00 of 07C0:0000 staan, daarom 
    ; kiezen we er zelf een.
    mov    ax, 0x07C0        ; Segment 07C0
    mov    ds, ax            ; Data staat op 07C0:0000
    jmp    0x07C0:Relocation

Relocation:                ; En de code nu ook
      
      ; Setup Stack
      cli                        ; Geen interrupts
      mov      ax, 9000h
      mov      ss,ax
      mov      sp, 0
      sti                        ; Nu mag het weer

      ; Onthoud de bootdrive
      mov      [bootdrive],dl

      ; Print a bootmessage
      mov      si, BootMsg 
      call      PrintMsg

      ; Reset disk system
      xor      ah,ah
      mov      dl, [bootdrive]
      int      0x13

      ; -------------------------------------------------------
      ; Lees all FAT sectoren in op 1000:0000
      xor      ax, ax
      mov      al, [NumberOfFATs]
      mov      cx, [SectorsPerFAT]
      mul      cx
      mov      cx, ax
      mov      bp, [ReservedSectors]
      call       ReadSectors

      ; -------------------------------------------------------
      ; Lees de root-entry in op 2000:0000
      mov      ax, 0x0000
      mov      [Cur_Off], ax
      mov      ax, 0x2000
      mov      [Cur_Seg], ax

      xor      dx, dx
      mov      ax, [RootEntries]
      shl      ax, 5                        ; Maal 32
      div      word [BytesPerSector]            ; ax = ax:dx / bytespersector
      mov      cx, ax                        ; Aantal sectoren
      call      ReadSectors                  ; BP already set correctly

      mov      [DataStartSector], bp

      ; -------------------------------------------------------
      ; Zoek naar een kernel.sys
      mov      bp, [RootEntries]
      mov      ax, 0x2000
      mov      es, ax
      xor      di, di
CheckNextEntry:
      pusha
      mov      si, kernel            ; check naar KERNEL  SYS

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 07:42

Reptile209

- gers -

Poets die apostrof op regel 18 eens weg, doet vast wonderen :)

Zo scherp als een voetbal!


  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 07-05 16:01
ja dat veroorzaakt alleen meer errors :S:S:S:S:S:S

..\bootfixed.asm:48: error: symbol `bootdrive' undefined
..\bootfixed.asm:51: error: symbol `BootMsg' undefined
..\bootfixed.asm:52: error: symbol `PrintMsg' undefined
..\bootfixed.asm:56: error: symbol `bootdrive' undefined
..\bootfixed.asm:66: error: symbol `ReservedSectors' undefined
..\bootfixed.asm:67: error: symbol `ReadSectors' undefined
..\bootfixed.asm:72: error: symbol `Cur_Off' undefined
..\bootfixed.asm:74: error: symbol `Cur_Seg' undefined
..\bootfixed.asm:81: error: symbol `ReadSectors' undefined
..\bootfixed.asm:83: error: symbol `DataStartSector' undefined
..\bootfixed.asm:93: error: symbol `kernel' undefined
..\bootfixed.asm:93: error: phase error detected at end of assembly.

:S:S:S:S lijkt wel of er nog ergens een apostrof of een quote staat die er niet hoor te zijn :S:S:S

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 07:42

Reptile209

- gers -

offtopic:
Is het je al opgevallen dat :S niks doet op GoT? Probeer het eens met : ? voor een soortgelijke smiley... ;)

Ik zie nu waar het misgaat: je bent bezig met het laatste voorbeeld dat JayTaph in die post geeft. Die is echter niet volledig, waardoor je wat belangrijke code mist. Zoals je in de andere voorbeelden kunt zien, zijn alle variabelen tussen [blokhaken] aan het eind van de code gedefinieerd. Alleen dan kan NASM er wat mee. Bij jou mist dat deel (en waarschijnlijk nog wel wat meer code), waardoor dit voorbeeld niet gaat werken.
Probeer [google=nasm FAT12 boot sector] eens, dan vind je ongetwijfeld werkende voorbeelden te over.

[ Voor 3% gewijzigd door Reptile209 op 04-05-2005 22:43 ]

Zo scherp als een voetbal!


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:10

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sidenote: een assembler is de compiler die je assembly code compileert ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Daos
  • Registratie: Oktober 2004
  • Niet online
lordgandalf schreef op woensdag 04 mei 2005 @ 22:16:
ja dat veroorzaakt alleen meer errors :S:S:S:S:S:S

..\bootfixed.asm:48: error: symbol `bootdrive' undefined
..\bootfixed.asm:51: error: symbol `BootMsg' undefined
..\bootfixed.asm:52: error: symbol `PrintMsg' undefined
..\bootfixed.asm:56: error: symbol `bootdrive' undefined
..\bootfixed.asm:66: error: symbol `ReservedSectors' undefined
..\bootfixed.asm:67: error: symbol `ReadSectors' undefined
..\bootfixed.asm:72: error: symbol `Cur_Off' undefined
..\bootfixed.asm:74: error: symbol `Cur_Seg' undefined
..\bootfixed.asm:81: error: symbol `ReadSectors' undefined
..\bootfixed.asm:83: error: symbol `DataStartSector' undefined
..\bootfixed.asm:93: error: symbol `kernel' undefined
..\bootfixed.asm:93: error: phase error detected at end of assembly.

:S:S:S:S lijkt wel of er nog ergens een apostrof of een quote staat die er niet hoor te zijn :S:S:S
Die dingen staan gewoon in tutorial in het data-segment onderaan. Dat heb je dus vergeten te kopieren. Als je assembly wilt leren moet je niet met een bootflop beginnen...

Goede uitgebreide tutorial/boek over assembly kan je hier vinden.

[ Voor 12% gewijzigd door Daos op 05-05-2005 00:28 ]


  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 07-05 16:01
ik heb een andere tutorial gevonden die ook werkt

http://www.groovyweb.ukli...20write%20your%20own%20os

deze tutorial lijkt redelijk op die van JayTaph dus denk ik dat het me hierme wel wil lukken

PS: Daos ik heb zelf een boek over assembly maar ik zelf nooit iets gehad wat ik kon programmeren in assembly en die tutorial leek me wel leuk tot dat ik tegen deze error aanliep en ik niet meer verder kon.

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 07:42

Reptile209

- gers -

Daos schreef op donderdag 05 mei 2005 @ 00:18:
[...]

Die dingen staan gewoon in tutorial in het data-segment onderaan. Dat heb je dus vergeten te kopieren. Als je assembly wilt leren moet je niet met een bootflop beginnen...
Niet helemaal waar: Er staan in die post een paar werkende voorbeelden, maar de TS is bezig met het laatste voorbeeld (dat niet in code-tags staat) en daar mist het einde van (max post-size ofzo?)

Zo scherp als een voetbal!

Pagina: 1