程序集INT 13h - 读取磁盘问题

时间:2010-01-01 20:46:48

标签: assembly dos disk

我需要能够在汇编中编写程序来读取磁盘的第一个扇区(MBR)并将其写入软盘或至少显示数据。 我知道INT 13h和25h在Windows保护模式下不起作用,我甚至在Dos中尝试了我的代码,但是当我运行程序时dos系统挂起。这是代码:

  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

结果是缓冲区变量。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为这一行是错误的

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

应该是

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

也许您还必须恢复ES,示例

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

答案 1 :(得分:1)

YEB。它终于奏效了。这是代码(仅在DOS中运行,因为INT 13h无法在Windows操作系统中运行。

            mov dx,80h
        mov cx,1
        mov bx,ds
        mov es,bx
        mov bx,offset result
        mov ax,0201h
        int 13h