AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

bootsektor schreiben

Ein Thema von sancho1980 · begonnen am 3. Okt 2006 · letzter Beitrag vom 5. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#1

bootsektor schreiben

  Alt 3. Okt 2006, 12:21
hallo
ich versuche grad (einfach aus interesse) einen eigenen bootsektor zu schreiben und meinen rechner direkt damit zu booten..jetzt hab ich folgendes beispiel gefunden:

Zitat:
; start hellocyberspace.asm
; 2.ASM
; Print "Hello Cyberspace!" on the screen and hang

; Tell the compiler that this is offset 0.
; It isn't offset 0, but it will be after the jump.
[ORG 0]

jmp 07C0h:start ; Goto segment 07C0

; Declare the string that will be printed
msg db 'Hello Cyberspace!'


start:
; Update the segment registers
mov ax, cs
mov ds, ax
mov es, ax


mov si, msg ; Print msg
print:
lodsb ; AL=memory contents at DS:SI

cmp al, 0 ; If AL=0 then hang
je hang

mov ah, 0Eh ; Print AL
mov bx, 7
int 10h

jmp print ; Print next character


hang: ; Hang!
jmp hang


times 510-($-$$) db 0
dw 0AA55h
; end hellocyberspace.asm
das ganze kompiliert mit "nasm hellocyberspace.asm -o hellocyberspace.bin"

so, wenn ich jetzt mit meinem disk-editor den inhalt dieser bin-datei auf den bootsektor meines usb-sticks schreibe und meinen rechner starte, bekomme ich beim booten folgendes:

"Searching for Boot Record from USB RMD-HDD..OK"

...und sonst nix weiter...die Meldung "Hello Cyberspace!" wird nicht angezeigt. Woran kann das liegen; klappt es bei euch?

Danke,

Martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: bootsektor schreiben

  Alt 3. Okt 2006, 12:28
Wer sagt dir denn, dass der USB Stick Bootsektor auch noch 512 Bytes gross ist? Meines erachtens funktioniert das nur im Emulationsmodus.
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#3

Re: bootsektor schreiben

  Alt 3. Okt 2006, 12:33
Wie groß isser denn?
Wenn du dir folgenden Link anschaust, da steht dass man sogar einen Floppy-Bootsektor auf einen USB-Stick schreiben und dann booten kann:

http://www.weethet.nl/english/hardwa...omusbstick.php

Aber klär mich mal auf..was müsst ich d.E. machen?

danke,
martin

edit: wenn ich meinen usb-stick unter windows formatiere und mir danach den bootsektor anschaue, sind da auch genau 512 bytes belegt (von denen die letzten vier byte "AA55" sind)

also scheinen es doch auch 512 byte zu sein!
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: bootsektor schreiben

  Alt 3. Okt 2006, 12:41
Ok, nach dem Link geht es noch mit 512 Bytes. Der Post vorhin war eine Frage ob du dir dessen sicher bist. Ich hatte da noch was anderes im Hinterkopf, aber anscheinend wohl verwechselt.

Grundlegend definiert dein Code kein einzigen der Tabellen im Bootsektor. Du hast somit völlig unsinnige Werte darin stehen. Die Tabellen werden vom BIOS ausgewertet damit es weiss wie es auf den Datenträger für den weiteren Bootvorgang zugreifen muss. Das BIOS übernimmt die Tabellen und will sie nutzen - bei dir steht da nur Müll drin (Der String und der Code). Definiere mal die Tabellen entsprechend mit gültigen Werten und dann probier es nochmal.

Die Tabellen
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#5

Re: bootsektor schreiben

  Alt 3. Okt 2006, 12:45
Zitat von Muetze1:
Ok, nach dem Link geht es noch mit 512 Bytes. Der Post vorhin war eine Frage ob du dir dessen sicher bist. Ich hatte da noch was anderes im Hinterkopf, aber anscheinend wohl verwechselt.

Grundlegend definiert dein Code kein einzigen der Tabellen im Bootsektor. Du hast somit völlig unsinnige Werte darin stehen. Die Tabellen werden vom BIOS ausgewertet damit es weiss wie es auf den Datenträger für den weiteren Bootvorgang zugreifen muss. Das BIOS übernimmt die Tabellen und will sie nutzen - bei dir steht da nur Müll drin (Der String und der Code). Definiere mal die Tabellen entsprechend mit gültigen Werten und dann probier es nochmal.

Die Tabellen
Also auch auf die Gefahr jetzt dumme Fragen zu stellen: ich hab das Code-Beispiel hierher:

http://www.nondot.org/sabre/os/files...g/nasmBoot.txt

Da steht man brauch sich den Inhalt der bin-datei nur in den Bootsektor schreiben und schon geht das..
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#6

Re: bootsektor schreiben

  Alt 3. Okt 2006, 12:47
1. Fehlerquelle:
Schreibe den Sector auf eine Disk.
erst wenn das klappt, kannst Du mit einem Stick experimentieren.

2. Ich glaube, da könnte der Fehler liegen:
Zitat:
jmp 07C0h:start ; Goto segment 07C0
In einem normalen Assembler reicht ein
Zitat:
Goto Start;
Dein jmp 07c0 dürfte ins nirwana führen, weil der urspüngliche Text
übersprungen wird bzw. übersprungen werden muss, Du ihn aber bestimmt geändert hast:
msg db 'Hello Cyberspace!'
So weit ich weiss, reicht ein 16bit-Assembler auch. Mit A386 müsse es einfacher gehen, als mit Nasm. Noch besser ist wohl Fasm (open source). Siehe Google.

So, und dann lass mal sehen, wie Du das Problem gelöst hast, ok?

Go2EITS
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: bootsektor schreiben

  Alt 3. Okt 2006, 12:51
Die Daten für die Floppy Laufwerke haben die BIOSe schon mit hinterlegt. Bei einem Floppy Laufwerk brauchen sie diese nicht zwingend - aber einem USB Datenträger schon.

Studieren geht über probieren - füge doch die Tabellen ein. Die paar db und dw's gehen schnell. Wenn es dann klappt, lag es daran...

Und der Sprung am Anfang so wie er ist, ist in Ordnung. Das einzige was fehlt, wäre die das Nullbyte zur Ende-Markierung des Strings, aber bis dahin würde er zumindest haufenweise Zeichen ausgeben, wenn es denn klappen würde.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#8

Re: bootsektor schreiben

  Alt 3. Okt 2006, 13:22
Gut gesehen Muetze1.
Sorry, aber ich ergänze, damit Sanco1980 es versteht, bzw. richtig macht:
Ich glaube, so muss es heißen:
Zitat:
msg db 'Hello Cyberspace!',0
Der String muss aber in jedem Fall mit einer Null abgeschlossen werden.
CU!
Go2EITS
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#9

Re: bootsektor schreiben

  Alt 3. Okt 2006, 13:22
also ganz ehrlich: ich versteh nur bahnhof; was soll das ganze mit den tabellen?
das einzige was ich raffe, ist, dass ganz am anfang eine jump-instruction zum code-begin sein muss..die hab ich ja
Zitat von Go2EITS:
2. Ich glaube, da könnte der Fehler liegen:
Zitat:
jmp 07C0h:start ; Goto segment 07C0
In einem normalen Assembler reicht ein
Zitat:
Goto Start;
Dein jmp 07c0 dürfte ins nirwana führen, weil der urspüngliche Text
übersprungen wird bzw. übersprungen werden muss, Du ihn aber bestimmt geändert hast:
msg db 'Hello Cyberspace!'
Wenn der Bootsektor in Adresse 07C0 geladen wird, dann muss das doch so sein. Ich hab's Spaßes halber mal entfernt (also jmp start), aber das hat auch nichts gebracht

Und was hat es mit

"The BIOS parameter block and extended BIOS parameter block contains the information"

auf sich. Klärt mich bitte mal auf wie ich das mit den Tabellen machen soll...

Danke,

Martin
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#10

Re: bootsektor schreiben

  Alt 3. Okt 2006, 13:29
Zitat von Go2EITS:
Gut gesehen Muetze1.
Sorry, aber ich ergänze, damit Sanco1980 es versteht, bzw. richtig macht:
Ich glaube, so muss es heißen:
Zitat:
msg db 'Hello Cyberspace!',0
Der String muss aber in jedem Fall mit einer Null abgeschlossen werden.
CU!
Go2EITS
Jo, das wars...sind also ansi strings...danke...nur komischerweise verschwindet das bild gleich wieder...bleibt nicht wirklich hängen...aber ich schaus mir mal an...danke nochmal
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz