Autor Thema: int13 - Wo sind meine Daten?  (Gelesen 2012 mal)

Cjreek

  • Beiträge: 104
    • Profil anzeigen
Gespeichert
« 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...
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Cjreek

  • Beiträge: 104
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 03. June 2009, 19:24 »
Habs raus. Ein bisschen RTFM hilft manchmal  :-D
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

 

Einloggen