Hi,
Ich versuche so den 2. Sektor meiner (Boot-)Diskette auszulesen.
[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:
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...