Assembly INT 13h – read disk problem

assemblydiskdos

I need to be able to write a program in assembly to read the first sector of a disk (The MBR) and write it to a floppy disk or at least show the data.
I understand that INT 13h and 25h do not work in the windows protected mode and i even tried my code in Dos but the dos system hangs when I run the program. This is the code:

  MOV byte ptr es:[bx], offset result
  MOV     AL,1 ;number ofsectors to read
  MOV     Cl,1 
  MOV     ch,0  
  mov     dl,80h  ;the HDD
  mov     dh,1
  mov ah,02h
  INT     13h

result is the buffer variable.

Thanks in advance.

Best Answer

I think this line is wrong

MOV byte ptr es:[bx], offset result ' attempts to write memory [bx]

It should be

MOV es, segment_offset ' probably not needed
MOV bx, buffer_offset
...

And maybe you also have to restore the ES, example

push es
mov  es, ...
...
pop  es
' done
Related Topic