2

我需要能够编写一个汇编程序来读取磁盘的第一个扇区(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

结果是缓冲区变量。

提前致谢。

4

2 回答 2

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
于 2010-01-01T21:14:08.067 回答
1

是的。它终于奏效了。这是代码(仅在 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     
于 2010-01-02T14:03:40.073 回答