I am trying to read the next sector of a disk through bios functions. Here is my code
[org 0x7c00]
; Jump past bios paramater
jmp 0x0000:0x7c16
times 0x16 - ($ - $$) db 0x00
; Set ds register to 0
mov ax, 0x0000
mov ds, ax
mov [DISK], dl
; Read from disk
mov ah, 0x02 ; Function
mov al, 0x01 ; Sectors to read
mov ch, 0x00 ; Cylinder
mov cl, 0x02 ; Sectors
mov dh, 0x00 ; Head
mov dl, [DISK] ; Disk
mov ax, 0x0000
mov es, ax ; Offset
mov bx, 0x7e00
int 0x13
; Print char
mov al, [0x7e01]
mov ah, 0x0e
int 0x10
jmp $
DISK: db 0
times 0x1fe - ($ - $$) db 0x00
db 0x55, 0xaa
times 1024 db 'a'
But it just prints out one space. Here is how I assemble and run it.
nasm -f bin test.asm -o test.bin
qemu-system-x86_64 -drive format=raw,file=test.bin
If there is a better way to do this please tell me. Also please don't just say to write this on dos instead of bare metal.