Einzelnen Beitrag anzeigen

Go2EITS

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

Re: bootsektor schreiben

  Alt 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.
  Mit Zitat antworten Zitat