Если это MBR bootstrap (И, возможно, в противном случае? Я не уверен на 100%) DL
будет содержать номер диска, т.е. вы можете сделать что-то вроде этого (подставить свой собственный макет памяти и т. Д.вкл):
EntryPoint:
xor ax, ax
mov ss, ax
mov ds, ax
mov sp, 0x7c00
.DiskReset:
mov ah, 0
int 0x13
jc .DiskReset
mov ax, 0x50 ; load to 0x500 linear address. It has unused space up to 0x7bff
mov es, ax
xor bx, bx
mov ax, 0x023B ; count = 0x3b = 59, the maximum..
mov cx, 0x0002
xor dh, dh ; leave (dl = drive number) intact
int 0x13
jnc .ReadDone
mov si, ReadError
call PrintString16
jmp .DiskReset
.ReadDone:
; ......