;--------------------------------------------------------
; 功能 - 读写软盘
; 参数 - (ah) = 功能号 0表示读 1表示写
; (dx) = 要读写的扇区的逻辑扇区号
; (es:bx) = 指向存储读出数据或写入数据的内存区
; 返回 - 操作成功 (ah) = 0 (al) = 1
; 操作失败 (ah) = 出错码
;--------------------------------------------------------
read_write_floppy:
push cx
push dx
push ax
mov ax, dx
xor dx, dx
mov cx, 18
div cx
mov cx, ax
and ax, 1
mov dh, al ; dh = 磁头号
pop ax
add ah, 2 ; ah = 功能号
mov al, 1 ; al = 读取的扇区数
shr cx, 1
mov ch, cl ; ch = 磁道号
mov cl, dl
inc cl ; cl = 扇区号
mov dl, 0 ; dl = 驱动器号
int 013h
pop dx
pop cx
ret |