如何在程序集中使用AH=03h中断的int 13来用零填充扇区



到目前为止,我有这个:

mov ah,02h
mov cl,11001100001111011101000b ;6,692,584 in dec
mov dl,0
int 13

我可以看到您的代码存在以下问题:

  • AH应该是3而不是2(2用于读取)
  • CL只有8位,所以不太可能保持那个大的honkin值
  • 您需要按下表设置AHALCHCLDHDLES: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

而且,如果你需要关于中断的信息,你应该在谷歌上搜索"拉尔夫·布朗"。在我们与这些事情隔绝之前的日子里,这个家伙创建并维护了最终的中断列表。例如,请参阅索引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

相关内容

  • 没有找到相关文章

最新更新