如何在汇编中使用 int 13 with AH=03h 中断来填充一个零的扇区?

问题描述 投票:2回答:1

到目前为止,我有这个。

mov ah,02h
mov cl,11001100001111011101000b ;6,692,584 in dec
mov dl,0
int 13
assembly x86 interrupt bios
1个回答
3
投票

我看到你的代码有以下问题。

  • AH 应该是3而不是2(2是用来读的).
  • CL 只有8位,所以不太可能持有那么大的荣誉值。
  • 你需要设置 AH, AL, CH, CL, DH, DLES:BX 如下表所示。

AH     03h
AL     Number of sectors to write
CH     Track number
CL     Sector number
DH     Head number
DL     Drive number
ES:BX  Buffer to write

如果你需要关于中断的信息 你可以在谷歌上搜索 "Ralf Brown" 这个家伙在我们还没有与这些东西绝缘的日子里,创建并维护了权威的中断列表。例如,请看: 索引的HTML版本.

您的具体需求可以从以下方面得到满足 Int 13/AH=03h.

虽然未经测试,而且是在真实模式下写的,但一个例子将是类似以下的内容。

      mov  ax, 0301h           ; cmd 3 (write sector), 1 sector
      mov  cx, 0001h           ; track 0, sector 1
      mov  dx, 0000h           ; head 0, drive 0
      mov  es, segment buff    ; segment and offset of buffer
      mov  bx, offset buff
      int  13h                 ; make the call
      jc   errp                ; detect error
      ret

errp:                          ; process error here
      ret

buff: db   0(256)              ; buffer to write
© www.soinside.com 2019 - 2024. All rights reserved.