到目前为止,我有这个:
mov ah,02h
mov cl,11001100001111011101000b ;6,692,584 in dec
mov dl,0
int 13
我可以看到您的代码存在以下问题:
AH
应该是3而不是2(2用于读取)CL
只有8位,所以不太可能保持那个大的honkin值- 您需要按下表设置
AH
、AL
、CH
、CL
、DH
、DL
和ES: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