Registriert seit: 25. Jun 2006
519 Beiträge
Delphi 7 Personal
|
Re: bootsektor schreiben
3. Okt 2006, 15:31
Delphi-Quellcode:
// 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
//Das ist die Message, die von Print durchlaufen wird, bis die 0 kommt. Wenn al=0 ist
//wird hang angesprungen.
; Declare the string that will be printed
msg db ' Hello Cyberspace!',0
// Zuvor wurde das Segment und der Offset aus dem Bios geholt.
// Dann muss das Segmentregister wohl Updatet werden.
start:
// Update the segment registers
mov ax, cs
mov ds, ax
mov es, ax
//Hier wird die Adresse von msg geladen.
mov si, msg ; Print msg
print:
lodsb ; AL=memory contents at DS:SI //Der Zeiger steht auf dem H von Hello.
// Vergleiche al = 0, wenn ja, springe zu hang
cmp al, 0 ; If AL=0 then hang
je hang
// Dieser Abschnitt ist für das Printen eines Buchstaben der mgs auf dem Bildschirm bis eine Null kommt,
// mehr nicht.
mov ah, 0Eh ; Print AL // Laden der Funktion: Print
mov bx, 7 // Wohl noch eine Unterfunktionsnummer für Print.
int 10h // Funktion ausführen.
// Das ist der Schlüssel
jmp print ; Print next character
//Schreibe nächsten Buschstaben
//Solange cmp al, 0 nicht 0 ist wird zum label Print gesprungen.
//Wenn aber die 0 gelesen wird, wird nach hang gesprungen, der Leerlaufroutine.Es ist kein üblicher Exit aus Deinem Programm.
times 510-($-$$) db 0
dw 0AA55h
Dein
mov ah, 0Eh ; Print AL
mov bx, 7
int 10h
ist daher Fehl am Platze.
Und? Verstanden warum Du LLLLLLL bekommst? Übrigens dürfte dies von der Diskette gleich sein.
|
|
Zitat
|