Master-Boot-Record auslesen
Moderatoren: crack, Krüsty, Marwin
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
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
- Marwin
- Moderator
- Beiträge: 307
- Registriert: Donnerstag 8. Mai 2003, 21:19
- Wohnort: Seelow, Deutschland
- Kontaktdaten:
Ich habe zwar Ferien, aber gut
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
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
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
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
- Marwin
- Moderator
- Beiträge: 307
- Registriert: Donnerstag 8. Mai 2003, 21:19
- Wohnort: Seelow, Deutschland
- Kontaktdaten:
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
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
- Moderator
- Beiträge: 307
- Registriert: Donnerstag 8. Mai 2003, 21:19
- Wohnort: Seelow, Deutschland
- Kontaktdaten:
Du nervst mich nicht, ganz im Gegenteil. Dieses Forum haben wir eingerichtet um uns gegenseitig zu helfen.
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ß.
Marwin
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.Der MBR liegt doch nur auf der aktiven Partition, kann man die Festplatte, wo der MBR drauf 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ß.
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
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
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
Starte in der Eingabeaufforderung] 8086 mbr1
Bitte schau mal was da berichtigt werden muß.
Danke!
cya
Igor
http://www.netaffects.de/8086.zip
- Marwin
- Moderator
- Beiträge: 307
- Registriert: Donnerstag 8. Mai 2003, 21:19
- Wohnort: Seelow, Deutschland
- Kontaktdaten:
Das Programm in TASM-Version habe ich mir erstmal heruntergeladen, werde es mir aber erst morgen anschauen, wenn ich wieder ausgeschlafen bin
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
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