Recently i was learning x86 assembly and for practice decided to roll up my own Boot loader. Before working with int13H in the bootloader itself i decided to give a try on reading a sector ( logical 19) on floppy disk. But unfortunately after writing down the code and running it on QEMU no data was loaded itself. I guess i might be wrong somewhere . Here is my code .
read_sector:
mov ah,02H ; Function code to Read Sector
mov al,01 ; Read one sector
lea bx,[SECTOR] ; Address of input buffer
mov ch,00 ; Track 0
mov cl,02 ; Sector 1
mov dh,01 ; Head number 1
mov dl,00 ; Drive Number ( 0 - Floppy)
int 13H ; call the routine
mov ah,0EH
add al,48
int 10H
ret
To make things clear i am actually reading:
Logical sector 19: Track- 0 Head -1 Sector- 2
In the code SECTOR represents a label using which i get access to write as well as read the input data from sector.
My print function ( Pretty basic) code:
print:
mov al,03H
int 10H
.repeat:
lodsb
mov ah,0EH
cmp al,0
je .done
int 10H
jmp .repeat
.done:
ret
Sorry for the minor things left in the code :(
Regarding calling this function and accessing(printing) the data here is the code.
call read_sector
mov si,[SECTOR]
But running it shows nothing on the screen . I also referred to the Ralf Brown files and checked out everything on ( int 13H fun:02H). i also checked the return code in ax and carry flag and the carry flag was set indicating a successful read. With no other sources in my mind the first place to refer was stack overflow. I would be extremely thankful if anyone helps me out.