Master-Boot-Record auslesen

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Beitragvon CrazyIgor » Mittwoch 9. Juli 2003, 16:39

Hi Leute,

ich hoffe mir kann einer helfen. Ich hab von Assembler nicht so sehr viel Ahnung, hab die Vorlesungen immer gepennt
Also ich muß ein Programm in Assembler schreiben, der den Master-Boot-Record vom Rechner ausliest und diesen als Hex-Wert ausgibt.
Kann mir da jemand helfen, wäre dafür sehr dankbar!

cya
CrazyIgor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon Marwin » Mittwoch 9. Juli 2003, 23:21

Ich habe zwar Ferien, aber gut :D

Dieses Programm habe ich mit Assembler ASM 2.11 (Downloadseite) erstellt. Der Quellcode ist sauber strukturiert, und kommentiert. Ich hoffe du kannst etwas damit anfangen.

Viel Glück, Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon CrazyIgor » Donnerstag 10. Juli 2003, 21:32

Vielen Dank für deine Mühen.
Ich muß TASM benutzen, tut aber nix zur Sache das Programm funktioniert auch dort, Befehle sind ja gleich.
Ein bisschen stutzig macht mir nur die Ausgabe, ich habe 2 Festplatte und bei beiden zeigt er mir die gleiche Ausgabe an. Der MBR kann doch nur auf einer Partition drauf sein und nicht bei beiden, hmm komisch. Muß man nicht die Angaben zur Spur und Sektor extra machen? Also CH=0 und
CL=0?
Naja aufjedenfall funktioniert es erstmal so ud vielen Dank für die Beschreibungen dahinter, das hilft mir sehr!

cya
CrazyIgor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon Marwin » Donnerstag 10. Juli 2003, 23:00

Du musst unterscheiden zwischen Partition und Festplatte! Das Programm liest nur den ersten Sektor einer Festplatte aus, nicht den einer jeden Partition.

CH und CL habe ich per [span style=color:blue]mov cx, 0[/span] auf NULL gesetzt. Schließlich besteht das Register CX aus den 8-Bit Registern CL (niederwertige 8 Bits von CX) und CH (höherwertige 6 Bits von CX).

:) Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon CrazyIgor » Freitag 11. Juli 2003, 10:21

Ich hoffe ich nerv dich nicht. Der MBR liegt doch nur auf der aktiven Partition, kann man die Festplatte, wo der MBR drauf ist, nicht gleich durch eine BIOS-Funktion herausfinden, so dass bei DH dann die gewünschte Festplatte drinsteht.
Vielen Dank nochmal, falls du mir helfen solltest.

cya
Igor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon Marwin » Freitag 11. Juli 2003, 12:39

Du nervst mich nicht, ganz im Gegenteil. Dieses Forum haben wir eingerichtet um uns gegenseitig zu helfen.

Der MBR liegt doch nur auf der aktiven Partition, kann man die Festplatte, wo der MBR drauf ist,


JEDE Festplatte besitzt einen MBR. Beim Bootvorgang wird aber nur der MBR von der Master-HDD in den Speicher geladen und ausgeführt. Ich meine (100%ig sicher bin ich mir da nicht) zu wissen, dass die Master-Festplatte immer über die Nummer 80h anzusprechen ist.

Eines sollten wir aber noch klären, hast du in deinem Rechner zwei Festplatten eingebaut, oder befinden sich auf deiner Festplatte zwei Partitionen?

Ich werde dir hier solange weiterhelfen bis das Problem geklärt ist, oder ich selber nicht mehr weiter weiß.
:D Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon CrazyIgor » Freitag 11. Juli 2003, 14:00

Ich habe in meinem Rechner 2 Festplatten mit mehreren Partitionen.
Ich hab mal gelesen das nur auf der aktiven Partition der MBR liegt, kann mich ja auch getäuscht haben.
Ich werd das Programm jetzt noch a bissl strukturieren, unser Prof will jeden Scheiß in einem Unterprogramm haben.

cya
Igor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon Marwin » Freitag 11. Juli 2003, 15:33

JEDE Festplatte hat EINEN MBR, nicht jede Partition hat einen MBR. Aber es wird beim Booten nur der MBR von der Master-Festplatte in den Speicher geladen und ausgeführt.

Marty
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon CrazyIgor » Freitag 11. Juli 2003, 18:09

Aha ok alles klar.
Ich hab ein kleines Problem.
Ich hab das Programm in code-segment und data-segment eingeteilt.
Ich hab nun unter data-segment
PufferMBR db 512 dup (0)
PufferHex db 1537 dup (0)
hingeschrieben. Um auf das Datensegment zu zugreifen, muß ich überall wo PufferMBR bzw. PufferHex steht
mov ax, @data
mov ds, ax
mov ah, 9
davor schreiben, stimmts?
Weil wenn ich das nicht mache, bekomme ich andere Werte als vorher.

Danke
cya
Igor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon CrazyIgor » Freitag 11. Juli 2003, 18:31

Ich hab jetzt mal den Assembler ASM gesaugt und den Programm unverändert damit assembliert und gestartet, da gibt er mir nur 00 aus.
Hast du das Programm bei dir auch mal getestet?
Wie kann man eigentlich überprüfen, ob das überhaupt stimmt, was der dort ausgibt?

cya
Igor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon CrazyIgor » Freitag 11. Juli 2003, 22:05

Ich hab mal das Programm samt TASM hochgeladen, falls du es nicht besitzen solltest.
Starte in der Eingabeaufforderung] 8086 mbr1

Bitte schau mal was da berichtigt werden muß.
Danke!

cya
Igor

http://www.netaffects.de/8086.zip
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon Marwin » Samstag 12. Juli 2003, 00:29

Das Programm in TASM-Version habe ich mir erstmal heruntergeladen, werde es mir aber erst morgen anschauen, wenn ich wieder ausgeschlafen bin :D

Wenn ich das Programm (mit Assembler ASM) unter Windows XP ausführe gibt es ebenfalls nur 00 aus. Das leigt daran, das WinXP dem Programm nicht erlaubt direkt auf die Festplatte zuzugreifen. Hast du vielleicht auf deinem Rechner auch WinXP installiert?

Eine Gute Nacht, Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon CrazyIgor » Samstag 12. Juli 2003, 01:32

jo hab ich, ich werd mal unter dos versuchen.
cya
Igor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37

Beitragvon CrazyIgor » Samstag 12. Juli 2003, 10:58

Hab es mal unter DOS getestet, funktioniert.
OK, Danke, ich glaube jetzt brauch ich keine Hilfe mehr ;)

cya
Igor
CrazyIgor
Newbie
 
Beiträge: 9
Registriert: Mittwoch 9. Juli 2003, 16:37


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron