Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Cjreek am 03. June 2009, 17:29

Titel: int13 - Wo sind meine Daten?
Beitrag von: Cjreek am 03. June 2009, 17:29
Hi,

Ich versuche so den 2. Sektor meiner (Boot-)Diskette auszulesen.

Zitat
[ORG 0x7C00]

; ...

    mov ax,0x7E00
    mov es,ax   
    xor bx,bx           ; Daten nach 0x7E000 bzw 7E00:0000 lesen
   
    mov al, 1           ; 1 Sektor
    mov ch, 1          ; Spur 1
    mov cl, 1           ; 1 = 2. Sektor ?! (1. Sektor = 0?)
    mov dh, 1         ; Kopf
    mov dl, 0          ; Laufwerk 0 ==> Diskettenlaufwerk

    mov ah, 0x02
    int 13h

; ...

Das eax-Register hat nach dem Aufruf den Wert 00000001h. Also müsste eigentlich alles funktioniert haben und al = 1 Sektor gelesen worden sein.

Das Ende meines Codes sieht so aus:

Zitat
times 510-($-$$) db 0
db 0x55
db 0xAA
test db "Hallo Int13!",0

Wenn ich allerdings nach int13 ein jmp $ setze und dann mit QEMU schaue, was bei 0x7E000 steht, dann wird mir angezeigt, dass da eine 0 steht. Eigentlich müsste es ja 0x48 sein...
Titel: Re: int13 - Wo sind meine Daten?
Beitrag von: Cjreek am 03. June 2009, 19:24
Habs raus. Ein bisschen RTFM hilft manchmal  :-D